Maven: unregistering tool window listener correctly

Maven: opaque dependencies graph
This commit is contained in:
Anton.Makeev
2009-11-16 15:46:29 +03:00
parent c1420efcbe
commit 8bd0a63db2
@@ -15,11 +15,13 @@
*/
package org.jetbrains.idea.maven.navigator;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowAnchor;
@@ -173,12 +175,13 @@ public class MavenProjectsNavigator extends SimpleProjectComponent implements Pe
initTree();
JPanel panel = new MavenProjectsNavigatorPanel(myProject, myTree);
ToolWindowManagerEx manager = ToolWindowManagerEx.getInstanceEx(myProject);
final ToolWindowManagerEx manager = ToolWindowManagerEx.getInstanceEx(myProject);
myToolWindow = manager.registerToolWindow(TOOL_WINDOW_ID, panel, ToolWindowAnchor.RIGHT, myProject, true);
myToolWindow.setIcon(MavenIcons.MAVEN_ICON);
manager.addToolWindowManagerListener(new ToolWindowManagerAdapter() {
final ToolWindowManagerAdapter listener = new ToolWindowManagerAdapter() {
boolean wasVisible = false;
@Override
public void stateChanged() {
if (myToolWindow.isDisposed()) return;
@@ -187,6 +190,12 @@ public class MavenProjectsNavigator extends SimpleProjectComponent implements Pe
scheduleStructureUpdate();
wasVisible = visible;
}
};
manager.addToolWindowManagerListener(listener);
Disposer.register(myProject, new Disposable() {
public void dispose() {
manager.removeToolWindowManagerListener(listener);
}
});
}