package com.jetbrains.jsonSchema.impl; import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.lang.annotation.Annotator; import com.intellij.lang.documentation.DocumentationProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.PairConsumer; import com.intellij.util.Processor; import com.jetbrains.jsonSchema.CodeInsightProviders; import com.jetbrains.jsonSchema.extension.SchemaType; import org.jetbrains.annotations.NotNull; class JsonSchemaObjectCodeInsightWrapper implements CodeInsightProviders { @NotNull private final String myName; @NotNull private final SchemaType mySchemaType; @NotNull private final VirtualFile mySchemaFile; @NotNull private final JsonSchemaObject mySchemaObject; @NotNull private final CompletionContributor myContributor; @NotNull private final Annotator myAnnotator; @NotNull private final DocumentationProvider myDocumentationProvider; public JsonSchemaObjectCodeInsightWrapper(@NotNull Project project, @NotNull String name, @NotNull SchemaType type, @NotNull VirtualFile schemaFile, @NotNull JsonSchemaObject schemaObject) { myName = name; mySchemaType = type; mySchemaFile = schemaFile; mySchemaObject = schemaObject; myContributor = new JsonBySchemaObjectCompletionContributor(type, schemaFile, schemaObject); myAnnotator = new JsonBySchemaObjectAnnotator(schemaFile, schemaObject); myDocumentationProvider = new JsonBySchemaDocumentationProvider(schemaFile, schemaObject); } @Override @NotNull public CompletionContributor getContributor() { return myContributor; } @Override @NotNull public Annotator getAnnotator() { return myAnnotator; } @Override @NotNull public String getName() { return myName; } @Override @NotNull public DocumentationProvider getDocumentationProvider() { return myDocumentationProvider; } @Override public boolean iterateSchemaObjects(@NotNull final Processor<JsonSchemaObject> consumer) { return consumer.process(mySchemaObject); } @Override public void iterateSchemaFiles(@NotNull final PairConsumer<VirtualFile, String> consumer) { consumer.consume(mySchemaFile, mySchemaObject.getId()); } @Override public boolean isUserSchema() { return SchemaType.userSchema.equals(mySchemaType); } }