mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WEB-33404 Add an API to suppress JSON widget for particular files
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.jetbrains.jsonSchema.extension;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface JsonWidgetSuppressor {
|
||||
ExtensionPointName<JsonWidgetSuppressor> EXTENSION_POINT_NAME = ExtensionPointName.create("Json.Widget.Suppressor");
|
||||
|
||||
/**
|
||||
* Allows to suppress JSON widget for particular files
|
||||
* This method can access indexes and PSI
|
||||
*/
|
||||
boolean suppressSwitcherWidget(@NotNull VirtualFile file, @NotNull Project project);
|
||||
}
|
||||
@@ -18,10 +18,7 @@ import com.intellij.openapi.vfs.impl.http.HttpVirtualFile;
|
||||
import com.intellij.openapi.vfs.impl.http.RemoteFileInfo;
|
||||
import com.intellij.openapi.wm.StatusBarWidget;
|
||||
import com.intellij.openapi.wm.impl.status.EditorBasedStatusBarPopup;
|
||||
import com.jetbrains.jsonSchema.extension.JsonSchemaEnabler;
|
||||
import com.jetbrains.jsonSchema.extension.JsonSchemaFileProvider;
|
||||
import com.jetbrains.jsonSchema.extension.JsonSchemaInfo;
|
||||
import com.jetbrains.jsonSchema.extension.SchemaType;
|
||||
import com.jetbrains.jsonSchema.extension.*;
|
||||
import com.jetbrains.jsonSchema.ide.JsonSchemaService;
|
||||
import com.jetbrains.jsonSchema.impl.JsonSchemaConflictNotificationProvider;
|
||||
import com.jetbrains.jsonSchema.impl.JsonSchemaServiceImpl;
|
||||
@@ -82,8 +79,17 @@ class JsonSchemaStatusWidget extends EditorBasedStatusBarPopup {
|
||||
return WidgetState.HIDDEN;
|
||||
}
|
||||
|
||||
FileType fileType = file.getFileType();
|
||||
Language language = fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null;
|
||||
boolean isJsonFile = language instanceof JsonLanguage;
|
||||
|
||||
if (!hasAccessToSymbols()) {
|
||||
return WidgetState.getDumbModeState("JSON schema service", "JSON: ");
|
||||
return WidgetState.getDumbModeState("JSON schema service", isJsonFile ? JSON_SCHEMA_BAR : JSON_SCHEMA_BAR_OTHER_FILES);
|
||||
}
|
||||
|
||||
JsonWidgetSuppressor[] suppressors = JsonWidgetSuppressor.EXTENSION_POINT_NAME.getExtensions();
|
||||
if (Arrays.stream(suppressors).anyMatch(s -> s.suppressSwitcherWidget(file, myProject))) {
|
||||
return WidgetState.HIDDEN;
|
||||
}
|
||||
|
||||
Collection<VirtualFile> schemaFiles = myService.getSchemaFilesForFile(file);
|
||||
@@ -149,10 +155,6 @@ class JsonSchemaStatusWidget extends EditorBasedStatusBarPopup {
|
||||
return state;
|
||||
}
|
||||
|
||||
FileType fileType = file.getFileType();
|
||||
Language language = fileType instanceof LanguageFileType ? ((LanguageFileType)fileType).getLanguage() : null;
|
||||
boolean isJsonFile = language instanceof JsonLanguage;
|
||||
|
||||
String tooltip = isJsonFile ? JSON_SCHEMA_TOOLTIP : JSON_SCHEMA_TOOLTIP_OTHER_FILES;
|
||||
String bar = isJsonFile ? JSON_SCHEMA_BAR : JSON_SCHEMA_BAR_OTHER_FILES;
|
||||
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
<extensionPoint qualifiedName="JavaScript.JsonSchema.ProviderFactory" interface="com.jetbrains.jsonSchema.extension.JsonSchemaProviderFactory"/>
|
||||
<extensionPoint qualifiedName="Json.Like.Psi.Walker.Factory" interface="com.jetbrains.jsonSchema.extension.JsonLikePsiWalkerFactory"/>
|
||||
<extensionPoint qualifiedName="Json.Schema.Enabler" interface="com.jetbrains.jsonSchema.extension.JsonSchemaEnabler"/>
|
||||
<extensionPoint qualifiedName="Json.Widget.Suppressor" interface="com.jetbrains.jsonSchema.extension.JsonWidgetSuppressor"/>
|
||||
<extensionPoint qualifiedName="com.intellij.json.jsonLiteralChecker" interface="com.intellij.json.codeinsight.JsonLiteralChecker"/>
|
||||
<extensionPoint qualifiedName="com.intellij.json.catalog.exclusion" interface="com.jetbrains.jsonSchema.remote.JsonSchemaCatalogExclusion"/>
|
||||
</extensionPoints>
|
||||
|
||||
Reference in New Issue
Block a user