cleanup LookupItem

This commit is contained in:
peter
2011-10-06 19:49:12 +02:00
parent 7559324bb4
commit 1ea9f54ecc
9 changed files with 17 additions and 28 deletions
@@ -60,7 +60,7 @@ public class DefaultInsertHandler extends TemplateInsertHandler implements Clone
InsertHandlerState state = new InsertHandlerState(context.getSelectionEndOffset(), context.getSelectionEndOffset());
if (CompletionUtil.isOverwrite(item, completionChar)) {
if (completionChar == Lookup.REPLACE_SELECT_CHAR) {
removeEndOfIdentifier(context);
}
else if(context.getOffsetMap().getOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET) != context.getSelectionEndOffset()) {
@@ -142,12 +142,12 @@ public class JavaInheritorsGetter extends CompletionProvider<CompletionParameter
}
}
}
final LookupItem item = PsiTypeLookupItem.createLookupItem(psiType, parameters.getPosition());
final PsiTypeLookupItem item = PsiTypeLookupItem.createLookupItem(psiType, parameters.getPosition());
JavaCompletionUtil.setShowFQN(item);
if (psiClass.isInterface() || psiClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
item.setAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE);
item.setAttribute(LookupItem.INDICATE_ANONYMOUS, "");
item.setIndicateAnonymous(true);
}
return LookupElementDecorator.withInsertHandler(item, myConstructorInsertHandler);
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.TailType;
import com.intellij.codeInsight.lookup.DefaultLookupItemRenderer;
import com.intellij.codeInsight.lookup.LookupElementPresentation;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
import com.intellij.codeInsight.lookup.impl.JavaElementLookupRenderer;
import com.intellij.openapi.util.ClassConditionKey;
import com.intellij.openapi.util.Comparing;
@@ -110,7 +111,7 @@ public class JavaPsiClassReferenceElement extends LookupItem<Object> {
String tailText = StringUtil.notNullize((String) item.getAttribute(LookupItem.TAIL_TEXT_ATTR));
PsiSubstitutor substitutor = (PsiSubstitutor)item.getAttribute(LookupItem.SUBSTITUTOR);
if (item.getAttribute(LookupItem.INDICATE_ANONYMOUS) != null &&
if (item instanceof PsiTypeLookupItem && ((PsiTypeLookupItem)item).isIndicateAnonymous() &&
(psiClass.isInterface() || psiClass.hasModifierProperty(PsiModifier.ABSTRACT))) {
tailText = "{...}" + tailText;
}
@@ -37,12 +37,22 @@ import org.jetbrains.annotations.Nullable;
public class PsiTypeLookupItem extends LookupItem {
public static final ClassConditionKey<PsiTypeLookupItem> CLASS_CONDITION_KEY = ClassConditionKey.create(PsiTypeLookupItem.class);
private final boolean myDiamond;
private boolean myIndicateAnonymous;
private PsiTypeLookupItem(Object o, @NotNull @NonNls String lookupString, boolean diamond) {
super(o, lookupString);
myDiamond = diamond;
}
public void setIndicateAnonymous(boolean indicateAnonymous) {
myIndicateAnonymous = indicateAnonymous;
}
public boolean isIndicateAnonymous() {
return myIndicateAnonymous;
}
@Override
public boolean equals(final Object o) {
return super.equals(o) && o instanceof PsiTypeLookupItem && getBracketsCount() == ((PsiTypeLookupItem) o).getBracketsCount();
@@ -39,9 +39,6 @@ public abstract class MutableLookupElement<T> extends LookupElement{
@NotNull
public abstract MutableLookupElement<T> setPriority(double priority);
@NotNull
public abstract MutableLookupElement<T> setGrouping(int grouping);
@NotNull
public abstract MutableLookupElement<T> setPresentableText(@NotNull String displayText);
@@ -619,7 +619,7 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler {
public void run() {
final int idEndOffset = Math.max(caretOffset, indicator.getIdentifierEndOffset());
indicator.getOffsetMap().addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, idEndOffset);
if (idEndOffset != indicator.getSelectionEndOffset() && CompletionUtil.isOverwrite(item, completionChar)) {
if (idEndOffset != indicator.getSelectionEndOffset() && completionChar == Lookup.REPLACE_SELECT_CHAR) {
editor.getDocument().deleteString(indicator.getSelectionEndOffset(), idEndOffset);
}
@@ -132,13 +132,6 @@ public class CompletionUtil {
}
static boolean isOverwrite(final LookupElement item, final char completionChar) {
return completionChar != Lookup.AUTO_INSERT_SELECT_CHAR
? completionChar == Lookup.REPLACE_SELECT_CHAR
: item.getUserData(LookupItem.OVERWRITE_ON_AUTOCOMPLETE_ATTR) != null;
}
public static boolean shouldShowFeature(final CompletionParameters parameters, @NonNls final String id) {
if (FeatureUsageTracker.getInstance().isToBeAdvertisedInLookup(id, parameters.getPosition().getProject())) {
FeatureUsageTracker.getInstance().triggerFeatureShown(id);
@@ -52,12 +52,9 @@ public class LookupItem<T> extends MutableLookupElement<T> implements Comparable
public static final Key<Object> FORCE_SHOW_SIGNATURE_ATTR = Key.create("forceShowSignature");
public static final Key<Object> BRACKETS_COUNT_ATTR = Key.create("BRACKETS_COUNT_ATTR");
public static final Key<Object> OVERWRITE_ON_AUTOCOMPLETE_ATTR = Key.create("OVERWRITE_ON_AUTOCOMPLETE_ATTR");
public static final Object FORCE_QUALIFY = Key.create("FORCE_QUALIFY");
public static final Object SUBSTITUTOR = Key.create("SUBSTITUTOR");
public static final Object FORCE_LOOKUP_STRING = Key.create("FORCE_LOOKUP_STRING");
public static final Object TYPE = Key.create("TYPE");
public static final Object INDICATE_ANONYMOUS = Key.create("INDICATE ANONYMOUS");
public static final Key<Object> DEPRECATED_ATTR = Key.create("DEPRECATED");
public static final Object CASE_INSENSITIVE = Key.create("CASE_INSENSITIVE");
@@ -68,7 +65,6 @@ public class LookupItem<T> extends MutableLookupElement<T> implements Comparable
private String myLookupString;
private InsertHandler myInsertHandler;
private double myPriority;
private int myGrouping;
private Map<Object,Object> myAttributes = null;
public static final LookupItem[] EMPTY_ARRAY = new LookupItem[0];
private final Set<String> myAllLookupStrings = new THashSet<String>();
@@ -305,12 +301,6 @@ public class LookupItem<T> extends MutableLookupElement<T> implements Comparable
return this;
}
@NotNull
public LookupItem<T> setGrouping(final int grouping) {
myGrouping = grouping;
return this;
}
public final double getPriority() {
return myPriority;
}
@@ -82,9 +82,7 @@ class XPathInsertHandler implements InsertHandler {
adjustIdentifierEnd(context, item);
final int idEndOffset = context.getOffsetMap().getOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET);
final boolean isOverwrite = c != 0
? c == com.intellij.codeInsight.lookup.Lookup.REPLACE_SELECT_CHAR
: item.getUserData(LookupItem.OVERWRITE_ON_AUTOCOMPLETE_ATTR) != null;
final boolean isOverwrite = c == com.intellij.codeInsight.lookup.Lookup.REPLACE_SELECT_CHAR;
if (idEndOffset != context.getSelectionEndOffset() && isOverwrite) {
context.getEditor().getDocument().deleteString(context.getSelectionEndOffset(), idEndOffset);
}