diff --git a/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java b/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java index a04c09f1ac69..e3c85524f331 100644 --- a/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java +++ b/platform/indexing-impl/src/com/intellij/psi/impl/search/PsiSearchHelperImpl.java @@ -38,7 +38,6 @@ import com.intellij.psi.search.*; import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.CommonProcessors; import com.intellij.util.Processor; -import com.intellij.util.SmartList; import com.intellij.util.codeInsight.CommentUtilCore; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; @@ -659,12 +658,8 @@ public class PsiSearchHelperImpl implements PsiSearchHelper { } private static MultiMap createMultiMap() { - return new MultiMap(){ - @Override - protected Collection createCollection() { - return new SmartList(); // usually there is just one request - } - }; + // usually there is just one request + return MultiMap.createSmartList(); } private static GlobalSearchScope uniteScopes(Collection requests) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HectorComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HectorComponent.java index 52f410268636..ab1e7a697cd6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HectorComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/HectorComponent.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.codeInsight.daemon.impl.analysis.FileHighlighingSetting; import com.intellij.codeInsight.daemon.impl.analysis.HighlightLevelUtil; import com.intellij.lang.Language; +import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.EditorBundle; import com.intellij.openapi.editor.HectorComponentPanel; @@ -33,6 +34,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.popup.JBPopup; import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.profile.codeInspection.ui.ErrorsConfigurable; @@ -40,7 +42,6 @@ import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiUtilBase; -import com.intellij.ui.Gray; import com.intellij.ui.HyperlinkLabel; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.awt.RelativePoint; @@ -113,7 +114,7 @@ public class HectorComponent extends JPanel { int value = slider.getValue(); for (Enumeration enumeration = sliderLabels.keys(); enumeration.hasMoreElements();) { Integer key = enumeration.nextElement(); - sliderLabels.get(key).setForeground(key.intValue() <= value ? Color.black : Gray._100); + sliderLabels.get(key).setForeground(key.intValue() <= value ? UIUtil.getLabelForeground() : UIUtil.getLabelDisabledForeground()); } } }); @@ -230,6 +231,16 @@ public class HectorComponent extends JPanel { } }) .createPopup(); + Disposer.register(myFile.getProject(), new Disposable() { + @Override + public void dispose() { + final JBPopup oldHector = getOldHector(); + if (oldHector != null && !oldHector.isDisposed()) { + Disposer.dispose(oldHector); + } + Disposer.dispose(hector); + } + }); final JBPopup oldHector = getOldHector(); if (oldHector != null){ oldHector.cancel(); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/Switcher.java b/platform/platform-impl/src/com/intellij/ide/actions/Switcher.java index 164cb4c284b2..a1b94259c477 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/Switcher.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/Switcher.java @@ -668,14 +668,14 @@ public class Switcher extends AnAction implements DumbAware { }, 300); if (jList.getModel().getSize() == 1) { goLeft(); - ((DefaultListModel)jList.getModel()).removeElementAt(selectedIndex); + removeElementAt(jList, selectedIndex); this.remove(jList); this.remove(separator); final Dimension size = toolWindows.getSize(); myPopup.setSize(new Dimension(size.width, myPopup.getSize().height)); } else { goForward(); - ((DefaultListModel)jList.getModel()).removeElementAt(selectedIndex); + removeElementAt(jList, selectedIndex); jList.setSize(jList.getPreferredSize()); } pack(); @@ -690,6 +690,17 @@ public class Switcher extends AnAction implements DumbAware { } } + private static void removeElementAt(JList jList, int index) { + final ListModel model = jList.getModel(); + if (model instanceof DefaultListModel) { + ((DefaultListModel)model).removeElementAt(index); + } else if (model instanceof NameFilteringListModel) { + ((NameFilteringListModel)model).remove(index); + } else { + throw new IllegalArgumentException("Wrong list model " + model.getClass()); + } + } + private void pack() { this.setSize(this.getPreferredSize()); final JRootPane rootPane = SwingUtilities.getRootPane(this); diff --git a/platform/util/src/com/intellij/util/containers/MultiMap.java b/platform/util/src/com/intellij/util/containers/MultiMap.java index 4b1db80477cb..cc73bb671586 100644 --- a/platform/util/src/com/intellij/util/containers/MultiMap.java +++ b/platform/util/src/com/intellij/util/containers/MultiMap.java @@ -16,6 +16,7 @@ package com.intellij.util.containers; +import com.intellij.util.SmartList; import org.jetbrains.annotations.NotNull; import java.io.Serializable; @@ -230,6 +231,16 @@ public class MultiMap implements Serializable { return new MultiMap(); } + @NotNull + public static MultiMap createSmartList() { + return new MultiMap() { + @Override + protected Collection createCollection() { + return new SmartList(); + } + }; + } + @NotNull public static MultiMap create(int i, float v) { return new MultiMap(i, v); @@ -251,4 +262,4 @@ public class MultiMap implements Serializable { public String toString() { return myMap.toString(); } -} +} \ No newline at end of file