From 7a2d1d216ef2eb3e36a90ecb7545980fd1612627 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 26 Apr 2012 17:29:20 +0200 Subject: [PATCH] minor --- .../completion/CompletionLookupArranger.java | 5 ++- .../impl/LiftShorterItemsClassifier.java | 37 +++++++++---------- .../codeInsight/lookup/Classifier.java | 7 ++-- .../codeInsight/lookup/ClassifierFactory.java | 6 ++- .../lookup/ComparingClassifier.java | 11 +++--- 5 files changed, 34 insertions(+), 32 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java index 968c6661ad76..24349ac574f6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java @@ -34,6 +34,7 @@ import com.intellij.psi.WeighingService; import com.intellij.psi.statistics.StatisticsInfo; import com.intellij.psi.statistics.StatisticsManager; import com.intellij.util.Alarm; +import com.intellij.util.ProcessingContext; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; import gnu.trove.THashMap; @@ -107,7 +108,7 @@ public class CompletionLookupArranger extends LookupArranger { } Classifier classifier = myClassifiers.get(sorter); if (classifier != null) { - classifier.describeItems(subMap); + classifier.describeItems(subMap, new ProcessingContext()); } } @@ -153,7 +154,7 @@ public class CompletionLookupArranger extends LookupArranger { final List byRelevance = new ArrayList(); for (CompletionSorterImpl sorter : myClassifiers.keySet()) { - ContainerUtil.addAll(byRelevance, myClassifiers.get(sorter).classify((List)inputBySorter.get(sorter))); + ContainerUtil.addAll(byRelevance, myClassifiers.get(sorter).classify(inputBySorter.get(sorter), new ProcessingContext())); } LinkedHashSet model = new LinkedHashSet(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/LiftShorterItemsClassifier.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/LiftShorterItemsClassifier.java index 41beadd8273f..c427e2aac308 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/LiftShorterItemsClassifier.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/LiftShorterItemsClassifier.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.completion.impl; import com.intellij.codeInsight.lookup.Classifier; import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.util.ProcessingContext; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.MultiMap; @@ -73,19 +74,25 @@ class LiftShorterItemsClassifier extends Classifier { } @Override - public Iterable classify(List source) { - return liftShorterElements(source, new THashSet(TObjectHashingStrategy.IDENTITY)); + public Iterable classify(Iterable source, ProcessingContext context) { + return liftShorterElements(source, new THashSet(TObjectHashingStrategy.IDENTITY), context); } - private List liftShorterElements(List source, THashSet lifted) { - final Set srcSet = new THashSet(source, TObjectHashingStrategy.IDENTITY); + private List liftShorterElements(Iterable source, THashSet lifted, ProcessingContext context) { + final Set srcSet = new THashSet(TObjectHashingStrategy.IDENTITY); + ContainerUtil.addAll(srcSet, source); final Set processed = new THashSet(TObjectHashingStrategy.IDENTITY); final List result = new ArrayList(); - for (LookupElement element : myNext.classify(source)) { + for (LookupElement element : myNext.classify(source, context)) { assert srcSet.contains(element) : myNext; if (processed.add(element)) { - for (String prefix : getSortedPrefixes(element)) { + final List prefixes = new SmartList(); + for (String string : getAllLookupStrings(element)) { + prefixes.addAll(myPrefixes.get(string)); + } + Collections.sort(prefixes); + for (String prefix : prefixes) { List shorter = new SmartList(); for (LookupElement shorterElement : myElements.get(prefix)) { if (srcSet.contains(shorterElement) && processed.add(shorterElement)) { @@ -95,7 +102,7 @@ class LiftShorterItemsClassifier extends Classifier { lifted.addAll(shorter); - ContainerUtil.addAll(result, myNext.classify(shorter)); + ContainerUtil.addAll(result, myNext.classify(shorter, context)); } result.add(element); } @@ -103,24 +110,14 @@ class LiftShorterItemsClassifier extends Classifier { return result; } - private String[] getSortedPrefixes(LookupElement element) { - final List prefixes = new SmartList(); - for (String string : getAllLookupStrings(element)) { - prefixes.addAll(myPrefixes.get(string)); - } - String[] result = prefixes.toArray(new String[prefixes.size()]); - Arrays.sort(result); - return result; - } - private static Set getAllLookupStrings(LookupElement element) { return element.getAllLookupStrings(); } @Override - public void describeItems(LinkedHashMap map) { + public void describeItems(LinkedHashMap map, ProcessingContext context) { final HashSet lifted = new HashSet(); - liftShorterElements(new ArrayList(map.keySet()), new THashSet(TObjectHashingStrategy.IDENTITY)); + liftShorterElements(new ArrayList(map.keySet()), new THashSet(TObjectHashingStrategy.IDENTITY), new ProcessingContext()); if (!lifted.isEmpty()) { for (LookupElement element : map.keySet()) { final StringBuilder builder = map.get(element); @@ -131,6 +128,6 @@ class LiftShorterItemsClassifier extends Classifier { builder.append("liftShorter=").append(lifted.contains(element)); } } - myNext.describeItems(map); + myNext.describeItems(map, context); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/Classifier.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/Classifier.java index 7e177fd2ec57..bf5d9169eb41 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/Classifier.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/Classifier.java @@ -15,8 +15,9 @@ */ package com.intellij.codeInsight.lookup; +import com.intellij.util.ProcessingContext; + import java.util.LinkedHashMap; -import java.util.List; /** * @author peter @@ -24,8 +25,8 @@ import java.util.List; public abstract class Classifier { public abstract void addElement(T t); - public abstract Iterable classify(List source); + public abstract Iterable classify(Iterable source, ProcessingContext context); - public abstract void describeItems(LinkedHashMap map); + public abstract void describeItems(LinkedHashMap map, ProcessingContext context); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ClassifierFactory.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ClassifierFactory.java index 25a0a898c32d..ff78f6474270 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ClassifierFactory.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ClassifierFactory.java @@ -15,6 +15,8 @@ */ package com.intellij.codeInsight.lookup; +import com.intellij.util.ProcessingContext; + import java.util.*; /** @@ -40,12 +42,12 @@ public abstract class ClassifierFactory { } @Override - public Iterable classify(List source) { + public Iterable classify(Iterable source, ProcessingContext context) { return source; } @Override - public void describeItems(LinkedHashMap map) { + public void describeItems(LinkedHashMap map, ProcessingContext context) { } }; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java index 2a2bf9f3ba88..96ccd6c3119b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/ComparingClassifier.java @@ -16,6 +16,7 @@ package com.intellij.codeInsight.lookup; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.util.ProcessingContext; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -41,7 +42,7 @@ public abstract class ComparingClassifier extends Classifier { myNext.addElement(t); } - private TreeMap> groupByWeights(List source) { + private TreeMap> groupByWeights(Iterable source) { TreeMap> map = new TreeMap>(); for (T t : source) { final Comparable weight = getWeight(t); @@ -55,16 +56,16 @@ public abstract class ComparingClassifier extends Classifier { } @Override - public Iterable classify(List source) { + public Iterable classify(Iterable source, ProcessingContext context) { List result = new ArrayList(); for (List list : groupByWeights(source).values()) { - ContainerUtil.addAll(result, myNext.classify(list)); + ContainerUtil.addAll(result, myNext.classify(list, context)); } return result; } @Override - public void describeItems(LinkedHashMap map) { + public void describeItems(LinkedHashMap map, ProcessingContext context) { final TreeMap> treeMap = groupByWeights(new ArrayList(map.keySet())); if (treeMap.size() > 1 || ApplicationManager.getApplication().isUnitTestMode()) { for (Map.Entry> entry: treeMap.entrySet()){ @@ -78,6 +79,6 @@ public abstract class ComparingClassifier extends Classifier { } } } - myNext.describeItems(map); + myNext.describeItems(map, context); } }