From ec7cce2fe0932c87db24de8607ed4f459bbdc5ad Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 28 Dec 2011 15:04:25 +0400 Subject: [PATCH] Cleaning resource bundle editor on disposing --- .../properties/editor/ResourceBundleEditor.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java index 647d3a8f9bd6..ee838e7f507f 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/ResourceBundleEditor.java @@ -102,6 +102,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit private final Set myBackSlashPressed = new THashSet(); @NonNls private static final String VALUES = "values"; @NonNls private static final String NO_PROPERTY_SELECTED = "noPropertySelected"; + private VirtualFileListener myVfsListener; private PsiTreeChangeAdapter myPsiTreeChangeAdapter; @NonNls protected static final String PROPORTION_PROPERTY = "RESOURCE_BUNDLE_SPLITTER_PROPORTION"; @@ -231,7 +232,12 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit } private void installPropertiesChangeListeners() { - VirtualFileManager.getInstance().addVirtualFileListener(new VirtualFileAdapter() { + final VirtualFileManager virtualFileManager = VirtualFileManager.getInstance(); + if (myVfsListener != null) { + assert false; + virtualFileManager.removeVirtualFileListener(myVfsListener); + } + myVfsListener = new VirtualFileAdapter() { @Override public void fileCreated(VirtualFileEvent event) { if (PropertiesUtil.isPropertiesFile(event.getFile(), myProject)) { @@ -260,7 +266,9 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit } } } - }, this); + }; + + virtualFileManager.addVirtualFileListener(myVfsListener, this); myPsiTreeChangeAdapter = new PsiTreeChangeAdapter() { public void childAdded(PsiTreeChangeEvent event) { childrenChanged(event); @@ -607,6 +615,7 @@ public class ResourceBundleEditor extends UserDataHolderBase implements FileEdit public void dispose() { float proportion = getSplitter().getProportion(); PropertiesComponent.getInstance(myProject).setValue(PROPORTION_PROPERTY, Double.toString(proportion)); + VirtualFileManager.getInstance().removeVirtualFileListener(myVfsListener); myDisposed = true; Disposer.dispose(myStructureViewComponent);