add settings option to opt-out code assistance service

This commit is contained in:
Marcel Haßlinger 2021-07-19 20:03:46 +02:00
parent 9cf49e9048
commit 17370fe359
5 changed files with 34 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogBuilder; import com.intellij.openapi.ui.DialogBuilder;
import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.ui.components.JBLabel; import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBTextField; import com.intellij.ui.components.JBTextField;
@ -26,6 +27,7 @@ public class SettingsDialog {
private TextFieldWithBrowseButton pathText; private TextFieldWithBrowseButton pathText;
private JBTextField filePatternText; private JBTextField filePatternText;
private JBTextField previewText; private JBTextField previewText;
private JBCheckBox codeAssistanceCheckbox;
public SettingsDialog(Project project) { public SettingsDialog(Project project) {
this.project = project; this.project = project;
@ -35,18 +37,20 @@ public class SettingsDialog {
String localesPath = SettingsService.getInstance(project).getState().getLocalesPath(); String localesPath = SettingsService.getInstance(project).getState().getLocalesPath();
String filePattern = SettingsService.getInstance(project).getState().getFilePattern(); String filePattern = SettingsService.getInstance(project).getState().getFilePattern();
String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale(); String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale();
boolean codeAssistance = SettingsService.getInstance(project).getState().isCodeAssistance();
if(prepare(localesPath, filePattern, previewLocale).show() == DialogWrapper.OK_EXIT_CODE) { // Save changes if(prepare(localesPath, filePattern, previewLocale, codeAssistance).show() == DialogWrapper.OK_EXIT_CODE) { // Save changes
SettingsService.getInstance(project).getState().setLocalesPath(pathText.getText()); SettingsService.getInstance(project).getState().setLocalesPath(pathText.getText());
SettingsService.getInstance(project).getState().setFilePattern(filePatternText.getText()); SettingsService.getInstance(project).getState().setFilePattern(filePatternText.getText());
SettingsService.getInstance(project).getState().setPreviewLocale(previewText.getText()); SettingsService.getInstance(project).getState().setPreviewLocale(previewText.getText());
SettingsService.getInstance(project).getState().setCodeAssistance(codeAssistanceCheckbox.isSelected());
// Reload instance // Reload instance
DataStore.getInstance(project).reloadFromDisk(); DataStore.getInstance(project).reloadFromDisk();
} }
} }
private DialogBuilder prepare(String localesPath, String filePattern, String previewLocale) { private DialogBuilder prepare(String localesPath, String filePattern, String previewLocale, boolean codeAssistance) {
JPanel rootPanel = new JPanel(new GridLayout(0, 1, 2, 2)); JPanel rootPanel = new JPanel(new GridLayout(0, 1, 2, 2));
JBLabel pathLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.text")); JBLabel pathLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.text"));
@ -73,6 +77,11 @@ public class SettingsDialog {
rootPanel.add(previewLabel); rootPanel.add(previewLabel);
rootPanel.add(previewText); rootPanel.add(previewText);
codeAssistanceCheckbox = new JBCheckBox(ResourceBundle.getBundle("messages").getString("settings.editor.assistance"));
codeAssistanceCheckbox.setSelected(codeAssistance);
rootPanel.add(codeAssistanceCheckbox);
DialogBuilder builder = new DialogBuilder(); DialogBuilder builder = new DialogBuilder();
builder.setTitle(ResourceBundle.getBundle("messages").getString("action.settings")); builder.setTitle(ResourceBundle.getBundle("messages").getString("action.settings"));
builder.removeAllActions(); builder.removeAllActions();

View File

@ -23,6 +23,11 @@ public class KeyAnnotator {
* @param holder Annotation holder * @param holder Annotation holder
*/ */
protected void annotate(@NotNull String key, @NotNull Project project, @NotNull AnnotationHolder holder) { protected void annotate(@NotNull String key, @NotNull Project project, @NotNull AnnotationHolder holder) {
// Do not annotate keys if service is disabled
if(!SettingsService.getInstance(project).getState().isCodeAssistance()) {
return;
}
String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale(); String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale();
LocalizedNode node = DataStore.getInstance(project).getTranslations().getNode(key); LocalizedNode node = DataStore.getInstance(project).getTranslations().getNode(key);

View File

@ -27,6 +27,12 @@ public class KeyCompletionProvider extends CompletionProvider<CompletionParamete
@NotNull ProcessingContext context, @NotNull CompletionResultSet result) { @NotNull ProcessingContext context, @NotNull CompletionResultSet result) {
Project project = parameters.getOriginalFile().getProject(); Project project = parameters.getOriginalFile().getProject();
// Do not annotate keys if service is disabled
if(!SettingsService.getInstance(project).getState().isCodeAssistance()) {
return;
}
String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale(); String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale();
String query = result.getPrefixMatcher().getPrefix(); String query = result.getPrefixMatcher().getPrefix();

View File

@ -11,10 +11,12 @@ public class SettingsState {
public static final String DEFAULT_PREVIEW_LOCALE = "en"; public static final String DEFAULT_PREVIEW_LOCALE = "en";
public static final String DEFAULT_FILE_PATTERN = ".*"; public static final String DEFAULT_FILE_PATTERN = ".*";
public static final boolean DEFAULT_CODE_ASSISTANCE = true;
private String localesPath; private String localesPath;
private String filePattern; private String filePattern;
private String previewLocale; private String previewLocale;
private Boolean codeAssistance;
public SettingsState() {} public SettingsState() {}
@ -41,4 +43,12 @@ public class SettingsState {
public void setPreviewLocale(String previewLocale) { public void setPreviewLocale(String previewLocale) {
this.previewLocale = previewLocale; this.previewLocale = previewLocale;
} }
public boolean isCodeAssistance() {
return codeAssistance == null ? DEFAULT_CODE_ASSISTANCE : codeAssistance;
}
public void setCodeAssistance(boolean codeAssistance) {
this.codeAssistance = codeAssistance;
}
} }

View File

@ -15,3 +15,4 @@ settings.path.title=Locales Directory
settings.path.text=Locales directory settings.path.text=Locales directory
settings.path.file-pattern=Translation file pattern settings.path.file-pattern=Translation file pattern
settings.preview=Preview locale settings.preview=Preview locale
settings.editor.assistance=I18n key completion and annotation inside editor