Commit e912c499 authored by Sergey.Anchipolevsky's avatar Sergey.Anchipolevsky
Browse files

[yaml, kubernetes] IDEA-184998 completion item quick doc fixes

parent 53821c02
Showing with 33 additions and 7 deletions
+33 -7
......@@ -57,7 +57,10 @@ public abstract class YamlDocumentationProviderBase extends AbstractDocumentatio
if (object instanceof ForcedCompletionPath) { // deep completion
return createFromCompletionPath((ForcedCompletionPath)object, contextElement);
}
else if (object instanceof String) { // basic completion
else if (object instanceof YamlMetaTypeProvider.MetaTypeProxy) { // basic completion with Field object
return createFromField((YamlMetaTypeProvider.MetaTypeProxy)object, contextElement);
}
else if (object instanceof String) { // basic completion with plain string
return createFromString((String)object, contextElement);
}
else {
......@@ -180,6 +183,12 @@ public abstract class YamlDocumentationProviderBase extends AbstractDocumentatio
return new DocumentationElement(contextElement.getManager(), proxy.getMetaType(), field);
}
@NotNull
private DocumentationElement createFromField(YamlMetaTypeProvider.MetaTypeProxy field, @NotNull PsiElement contextElement) {
return new DocumentationElement(contextElement.getManager(), field.getMetaType(), field.getField());
}
private class DocumentationElement extends LightElement {
@NotNull private final Project myProject;
......
......@@ -172,8 +172,8 @@ public abstract class YamlMetaTypeCompletionProviderBase extends CompletionProvi
}
else {
fieldList.stream()
.filter(childField -> !existingByKey.containsKey(childField.getName()))
.forEach(childField -> registerBasicKeyCompletion(childField, result, insertedScalar, needsSequenceItemMark));
.filter(childField -> !existingByKey.containsKey(childField.getName()))
.forEach(childField -> registerBasicKeyCompletion(metaClass, childField, result, insertedScalar, needsSequenceItemMark));
}
}
......@@ -182,11 +182,12 @@ public abstract class YamlMetaTypeCompletionProviderBase extends CompletionProvi
!parentField.hasRelationSpecificType(Field.Relation.OBJECT_CONTENTS);
}
private static void registerBasicKeyCompletion(@NotNull Field toBeInserted,
private static void registerBasicKeyCompletion(@NotNull YamlMetaClass metaClass,
@NotNull Field toBeInserted,
@NotNull CompletionResultSet result,
@NotNull PsiElement insertedScalar,
boolean needsSequenceItemMark) {
List<LookupElementBuilder> lookups = toBeInserted.getKeyLookups(insertedScalar);
List<LookupElementBuilder> lookups = toBeInserted.getKeyLookups(metaClass, insertedScalar);
if (!lookups.isEmpty()) {
InsertHandler<LookupElement> keyInsertHandler = new YamlKeyInsertHandlerImpl(needsSequenceItemMark, toBeInserted);
lookups.stream()
......
......@@ -11,6 +11,7 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.yaml.meta.impl.YamlMetaTypeProvider;
import org.jetbrains.yaml.psi.YAMLKeyValue;
import javax.swing.*;
......@@ -216,12 +217,27 @@ public class Field {
}
@NotNull
public List<LookupElementBuilder> getKeyLookups(@NotNull PsiElement insertedScalar) {
public List<LookupElementBuilder> getKeyLookups(@NotNull YamlMetaClass ownerClass,
@NotNull PsiElement insertedScalar) {
if (isAnyNameAllowed()) {
return Collections.emptyList();
}
LookupElementBuilder lookup = LookupElementBuilder.create(getName())
final YamlMetaTypeProvider.MetaTypeProxy lookupObject = new YamlMetaTypeProvider.MetaTypeProxy() {
@NotNull
@Override
public YamlMetaType getMetaType() {
return ownerClass;
}
@NotNull
@Override
public Field getField() {
return Field.this;
}
};
LookupElementBuilder lookup = LookupElementBuilder.create(lookupObject, getName())
.withTypeText(myMainType.getDisplayName(), true)
.withIcon(getLookupIcon())
.withStrikeoutness(isDeprecated());
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment