add settings option to opt-out code assistance service
This commit is contained in:
parent
9cf49e9048
commit
17370fe359
@ -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();
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user