protected void addLookupItem( Set<LookupElement> set, TailType tailType, @NotNull Object completion, final PsiFile file, final CompletionVariant variant) { LookupElement ret = objectToLookupItem(completion); if (ret == null) return; if (!(ret instanceof LookupItem)) { set.add(ret); return; } LookupItem item = (LookupItem) ret; final InsertHandler insertHandler = variant.getInsertHandler(); if (insertHandler != null && item.getInsertHandler() == null) { item.setInsertHandler(insertHandler); item.setTailType(TailType.UNKNOWN); } else if (tailType != TailType.NONE) { item.setTailType(tailType); } final Map<Object, Object> itemProperties = variant.getItemProperties(); for (final Object key : itemProperties.keySet()) { item.setAttribute(key, itemProperties.get(key)); } set.add(ret); }
public static LookupElement objectToLookupItem(Object object) { if (object instanceof LookupElement) return (LookupElement) object; String s = null; TailType tailType = TailType.NONE; if (object instanceof PsiElement) { s = PsiUtilBase.getName((PsiElement) object); } else if (object instanceof PsiMetaData) { s = ((PsiMetaData) object).getName(); } else if (object instanceof String) { s = (String) object; } else if (object instanceof Template) { s = ((Template) object).getKey(); } else if (object instanceof PresentableLookupValue) { s = ((PresentableLookupValue) object).getPresentation(); } else { LOG.assertTrue( false, "Null string for object: " + object + " of class " + (object != null ? object.getClass() : null)); } LookupItem item = new LookupItem(object, s); if (object instanceof LookupValueWithUIHint && ((LookupValueWithUIHint) object).isBold()) { item.setBold(); } if (object instanceof LookupValueWithTail) { item.setAttribute( LookupItem.TAIL_TEXT_ATTR, " " + ((LookupValueWithTail) object).getTailText()); } item.setAttribute(CompletionUtil.TAIL_TYPE_ATTR, tailType); return item; }
public static LookupItem setShowFQN(final LookupItem ret) { ret.setAttribute( JavaPsiClassReferenceElement.PACKAGE_NAME, PsiFormatUtil.getPackageDisplayName((PsiClass) ret.getObject())); return ret; }