extend plugin settings to include key sorting and nesting
This commit is contained in:
parent
b3cb14c4c8
commit
de88d0d96c
@ -9,6 +9,7 @@ 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;
|
||||||
|
|
||||||
|
import de.marhali.easyi18n.model.SettingsState;
|
||||||
import de.marhali.easyi18n.service.SettingsService;
|
import de.marhali.easyi18n.service.SettingsService;
|
||||||
import de.marhali.easyi18n.service.DataStore;
|
import de.marhali.easyi18n.service.DataStore;
|
||||||
|
|
||||||
@ -28,6 +29,8 @@ public class SettingsDialog {
|
|||||||
private JBTextField filePatternText;
|
private JBTextField filePatternText;
|
||||||
private JBTextField previewLocaleText;
|
private JBTextField previewLocaleText;
|
||||||
private JBTextField pathPrefixText;
|
private JBTextField pathPrefixText;
|
||||||
|
private JBCheckBox sortKeysCheckbox;
|
||||||
|
private JBCheckBox nestedKeysCheckbox;
|
||||||
private JBCheckBox codeAssistanceCheckbox;
|
private JBCheckBox codeAssistanceCheckbox;
|
||||||
|
|
||||||
public SettingsDialog(Project project) {
|
public SettingsDialog(Project project) {
|
||||||
@ -35,30 +38,28 @@ public class SettingsDialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void showAndHandle() {
|
public void showAndHandle() {
|
||||||
String localesPath = SettingsService.getInstance(project).getState().getLocalesPath();
|
SettingsState state = SettingsService.getInstance(project).getState();
|
||||||
String filePattern = SettingsService.getInstance(project).getState().getFilePattern();
|
|
||||||
String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale();
|
|
||||||
String pathPrefix = SettingsService.getInstance(project).getState().getPathPrefix();
|
|
||||||
boolean codeAssistance = SettingsService.getInstance(project).getState().isCodeAssistance();
|
|
||||||
|
|
||||||
if(prepare(localesPath, filePattern, previewLocale, pathPrefix, codeAssistance).show() == DialogWrapper.OK_EXIT_CODE) { // Save changes
|
if(prepare(state).show() == DialogWrapper.OK_EXIT_CODE) { // Save changes
|
||||||
SettingsService.getInstance(project).getState().setLocalesPath(pathText.getText());
|
state.setLocalesPath(pathText.getText());
|
||||||
SettingsService.getInstance(project).getState().setFilePattern(filePatternText.getText());
|
state.setFilePattern(filePatternText.getText());
|
||||||
SettingsService.getInstance(project).getState().setPreviewLocale(previewLocaleText.getText());
|
state.setPreviewLocale(previewLocaleText.getText());
|
||||||
SettingsService.getInstance(project).getState().setCodeAssistance(codeAssistanceCheckbox.isSelected());
|
state.setPathPrefix(pathPrefixText.getText());
|
||||||
SettingsService.getInstance(project).getState().setPathPrefix(pathPrefixText.getText());
|
state.setSortKeys(sortKeysCheckbox.isSelected());
|
||||||
|
state.setNestedKeys(nestedKeysCheckbox.isSelected());
|
||||||
|
state.setCodeAssistance(codeAssistanceCheckbox.isSelected());
|
||||||
|
|
||||||
// Reload instance
|
// Reload instance
|
||||||
DataStore.getInstance(project).reloadFromDisk();
|
DataStore.getInstance(project).reloadFromDisk();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private DialogBuilder prepare(String localesPath, String filePattern, String previewLocale, String pathPrefix, boolean codeAssistance) {
|
private DialogBuilder prepare(SettingsState state) {
|
||||||
JPanel rootPanel = new JPanel(new GridLayout(0, 1, 2, 2));
|
JPanel rootPanel = new JPanel(new GridLayout(0, 1, 2, 2));
|
||||||
|
|
||||||
/* path */
|
/* path */
|
||||||
JBLabel pathLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.text"));
|
JBLabel pathLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.text"));
|
||||||
pathText = new TextFieldWithBrowseButton(new JTextField(localesPath));
|
pathText = new TextFieldWithBrowseButton(new JTextField(state.getLocalesPath()));
|
||||||
|
|
||||||
pathLabel.setLabelFor(pathText);
|
pathLabel.setLabelFor(pathText);
|
||||||
pathText.addBrowseFolderListener(ResourceBundle.getBundle("messages").getString("settings.path.title"), null, project, new FileChooserDescriptor(
|
pathText.addBrowseFolderListener(ResourceBundle.getBundle("messages").getString("settings.path.title"), null, project, new FileChooserDescriptor(
|
||||||
@ -69,14 +70,14 @@ public class SettingsDialog {
|
|||||||
|
|
||||||
/* file pattern */
|
/* file pattern */
|
||||||
JBLabel filePatternLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.file-pattern"));
|
JBLabel filePatternLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.file-pattern"));
|
||||||
filePatternText = new JBTextField(filePattern);
|
filePatternText = new JBTextField(state.getFilePattern());
|
||||||
|
|
||||||
rootPanel.add(filePatternLabel);
|
rootPanel.add(filePatternLabel);
|
||||||
rootPanel.add(filePatternText);
|
rootPanel.add(filePatternText);
|
||||||
|
|
||||||
/* preview locale */
|
/* preview locale */
|
||||||
JBLabel previewLocaleLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.preview"));
|
JBLabel previewLocaleLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.preview"));
|
||||||
previewLocaleText = new JBTextField(previewLocale);
|
previewLocaleText = new JBTextField(state.getPreviewLocale());
|
||||||
previewLocaleLabel.setLabelFor(previewLocaleText);
|
previewLocaleLabel.setLabelFor(previewLocaleText);
|
||||||
|
|
||||||
rootPanel.add(previewLocaleLabel);
|
rootPanel.add(previewLocaleLabel);
|
||||||
@ -84,14 +85,26 @@ public class SettingsDialog {
|
|||||||
|
|
||||||
/* path prefix */
|
/* path prefix */
|
||||||
JBLabel pathPrefixLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.prefix"));
|
JBLabel pathPrefixLabel = new JBLabel(ResourceBundle.getBundle("messages").getString("settings.path.prefix"));
|
||||||
pathPrefixText = new JBTextField(pathPrefix);
|
pathPrefixText = new JBTextField(state.getPathPrefix());
|
||||||
|
|
||||||
rootPanel.add(pathPrefixLabel);
|
rootPanel.add(pathPrefixLabel);
|
||||||
rootPanel.add(pathPrefixText);
|
rootPanel.add(pathPrefixText);
|
||||||
|
|
||||||
|
/* sort keys */
|
||||||
|
sortKeysCheckbox = new JBCheckBox(ResourceBundle.getBundle("messages").getString("settings.keys.sort"));
|
||||||
|
sortKeysCheckbox.setSelected(state.isSortKeys());
|
||||||
|
|
||||||
|
rootPanel.add(sortKeysCheckbox);
|
||||||
|
|
||||||
|
/* nested keys */
|
||||||
|
nestedKeysCheckbox = new JBCheckBox(ResourceBundle.getBundle("messages").getString("settings.keys.nested"));
|
||||||
|
nestedKeysCheckbox.setSelected(state.isNestedKeys());
|
||||||
|
|
||||||
|
rootPanel.add(nestedKeysCheckbox);
|
||||||
|
|
||||||
/* code assistance */
|
/* code assistance */
|
||||||
codeAssistanceCheckbox = new JBCheckBox(ResourceBundle.getBundle("messages").getString("settings.editor.assistance"));
|
codeAssistanceCheckbox = new JBCheckBox(ResourceBundle.getBundle("messages").getString("settings.editor.assistance"));
|
||||||
codeAssistanceCheckbox.setSelected(codeAssistance);
|
codeAssistanceCheckbox.setSelected(state.isCodeAssistance());
|
||||||
|
|
||||||
rootPanel.add(codeAssistanceCheckbox);
|
rootPanel.add(codeAssistanceCheckbox);
|
||||||
|
|
||||||
|
@ -12,12 +12,16 @@ 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 String DEFAULT_PATH_PREFIX = "";
|
public static final String DEFAULT_PATH_PREFIX = "";
|
||||||
|
public static final boolean DEFAULT_SORT_KEYS = true;
|
||||||
|
public static final boolean DEFAULT_NESTED_KEYS = true;
|
||||||
public static final boolean DEFAULT_CODE_ASSISTANCE = true;
|
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 String pathPrefix;
|
private String pathPrefix;
|
||||||
|
private Boolean sortKeys;
|
||||||
|
private Boolean nestedKeys;
|
||||||
private Boolean codeAssistance;
|
private Boolean codeAssistance;
|
||||||
|
|
||||||
public SettingsState() {}
|
public SettingsState() {}
|
||||||
@ -54,6 +58,22 @@ public class SettingsState {
|
|||||||
this.pathPrefix = pathPrefix;
|
this.pathPrefix = pathPrefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isSortKeys() {
|
||||||
|
return sortKeys == null ? DEFAULT_SORT_KEYS : sortKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSortKeys(boolean sortKeys) {
|
||||||
|
this.sortKeys = sortKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNestedKeys() {
|
||||||
|
return nestedKeys == null ? DEFAULT_NESTED_KEYS : nestedKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNestedKeys(boolean nestedKeys) {
|
||||||
|
this.nestedKeys = nestedKeys;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCodeAssistance() {
|
public boolean isCodeAssistance() {
|
||||||
return codeAssistance == null ? DEFAULT_CODE_ASSISTANCE : codeAssistance;
|
return codeAssistance == null ? DEFAULT_CODE_ASSISTANCE : codeAssistance;
|
||||||
}
|
}
|
||||||
|
@ -16,4 +16,6 @@ settings.path.text=Locales directory
|
|||||||
settings.path.file-pattern=Translation file pattern
|
settings.path.file-pattern=Translation file pattern
|
||||||
settings.path.prefix=Path prefix
|
settings.path.prefix=Path prefix
|
||||||
settings.preview=Preview locale
|
settings.preview=Preview locale
|
||||||
|
settings.keys.sort=Sort translation keys alphabetically
|
||||||
|
settings.keys.nested=Nest translation keys if possible
|
||||||
settings.editor.assistance=I18n key completion, annotation and reference inside editor
|
settings.editor.assistance=I18n key completion, annotation and reference inside editor
|
Loading…
x
Reference in New Issue
Block a user