mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-14 19:32:41 +07:00
smart completion in groovy to suggest members of expected class (IDEA-66975)
This commit is contained in:
@@ -60,6 +60,7 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.PairConsumer;
|
||||
import com.intellij.util.PairFunction;
|
||||
import com.intellij.util.containers.CollectionFactory;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -668,29 +669,34 @@ public class JavaCompletionUtil {
|
||||
|
||||
public static LookupItem qualify(final LookupItem ret) {
|
||||
if (!(ret instanceof JavaMethodCallElement)) {
|
||||
final PsiMember completionElement = (PsiMember)ret.getObject();
|
||||
String prefix = "";
|
||||
PsiClass containingClass = completionElement.getContainingClass();
|
||||
while (containingClass != null) {
|
||||
final String className = containingClass.getName();
|
||||
if (className == null) {
|
||||
break;
|
||||
}
|
||||
|
||||
prefix = className + "." + prefix;
|
||||
final PsiElement parent = containingClass.getParent();
|
||||
if (!(parent instanceof PsiClass)) {
|
||||
break;
|
||||
}
|
||||
containingClass = (PsiClass)parent;
|
||||
}
|
||||
if (StringUtil.isNotEmpty(prefix)) {
|
||||
ret.setLookupString(prefix + ret.getLookupString());
|
||||
for (String s : getAllLookupStrings((PsiMember)ret.getObject())) {
|
||||
ret.setLookupString(s);
|
||||
}
|
||||
}
|
||||
return ret.forceQualify();
|
||||
}
|
||||
|
||||
public static Set<String> getAllLookupStrings(@NotNull PsiMember member) {
|
||||
Set<String> allLookupStrings = CollectionFactory.linkedHashSet();
|
||||
String name = member.getName();
|
||||
allLookupStrings.add(name);
|
||||
PsiClass containingClass = member.getContainingClass();
|
||||
while (containingClass != null) {
|
||||
final String className = containingClass.getName();
|
||||
if (className == null) {
|
||||
break;
|
||||
}
|
||||
name = className + "." + name;
|
||||
allLookupStrings.add(name);
|
||||
final PsiElement parent = containingClass.getParent();
|
||||
if (!(parent instanceof PsiClass)) {
|
||||
break;
|
||||
}
|
||||
containingClass = (PsiClass)parent;
|
||||
}
|
||||
return allLookupStrings;
|
||||
}
|
||||
|
||||
public static LookupItem setShowFQN(final LookupItem ret) {
|
||||
final PsiClass psiClass = (PsiClass)ret.getObject();
|
||||
@NonNls String packageName = PsiFormatUtil.getPackageDisplayName(psiClass);
|
||||
|
||||
+6
@@ -10,6 +10,7 @@ import com.intellij.psi.PsiSubstitutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static com.intellij.util.ObjectUtils.assertNotNull;
|
||||
|
||||
@@ -56,6 +57,11 @@ public class JavaGlobalMemberLookupElement extends LookupElement implements Stat
|
||||
return assertNotNull(getObject().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getAllLookupStrings() {
|
||||
return JavaCompletionUtil.getAllLookupStrings(getObject());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderElement(LookupElementPresentation presentation) {
|
||||
presentation.setIcon(DefaultLookupItemRenderer.getRawIcon(this, presentation.isReal()));
|
||||
|
||||
Reference in New Issue
Block a user