import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.project.ProjectManager;
+import com.intellij.openapi.project.ProjectManagerAdapter;
import com.intellij.openapi.project.ex.ProjectEx;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.util.*;
myInitialization = new VcsInitialization(myProject);
myMappings = new NewMappings(myProject, myEventDispatcher, this);
myMappingsToRoots = new MappingsToRoots(myMappings, myProject);
+
+ ProjectManager.getInstance().addProjectManagerListener(new ProjectManagerAdapter() {
+ @Override
+ public void projectClosing(Project project) {
+ onProjectClosing();
+ }
+ });
}
public void initComponent() {
});
}
+ private void onProjectClosing() {
+ if (myEditorAdapter != null) {
+ final Editor editor = myEditorAdapter.getEditor();
+ if (! editor.isDisposed()) {
+ EditorFactory.getInstance().releaseEditor(editor);
+ }
+ }
+ }
+
private void dispose() {
// todo dispose lock is bad here..
synchronized (myDisposeLock) {
if (myIsDisposed) return;
- if (myEditorAdapter != null) {
- final Editor editor = myEditorAdapter.getEditor();
- if (! editor.isDisposed()) {
- EditorFactory.getInstance().releaseEditor(editor);
- }
- }
myMappings.disposeMe();
try {
myContentManager = null;