From 8bd0a63db2ef64afbe277e09a0acd324a4155133 Mon Sep 17 00:00:00 2001 From: "Anton.Makeev" Date: Mon, 16 Nov 2009 15:46:29 +0300 Subject: [PATCH] Maven: unregistering tool window listener correctly Maven: opaque dependencies graph --- .../maven/navigator/MavenProjectsNavigator.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigator.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigator.java index 7b3bff1ec0c5..fd2051a36f97 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigator.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/MavenProjectsNavigator.java @@ -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); + } }); }