|
2 | 2 |
|
3 | 3 | import com.intellij.openapi.options.ConfigurationException; |
4 | 4 | import com.intellij.openapi.options.SearchableConfigurable; |
| 5 | +import com.intellij.ui.CheckBoxWithColorChooser; |
5 | 6 | import org.jetbrains.annotations.NotNull; |
6 | 7 | import org.jetbrains.annotations.Nullable; |
7 | 8 |
|
8 | 9 | import javax.swing.*; |
| 10 | +import java.awt.*; |
| 11 | +import java.util.Objects; |
9 | 12 |
|
10 | 13 | public class CsvEditorSettingsProvider implements SearchableConfigurable { |
| 14 | + private JCheckBox cbCaretRowShown; |
| 15 | + private JPanel myMainPanel; |
| 16 | + private JCheckBox cbUseSoftWraps; |
| 17 | + private JCheckBox cbColumnHighlighting; |
| 18 | + private JPanel panelHighlighting; |
| 19 | + private CheckBoxWithColorChooser cbTabHighlightColor; |
11 | 20 |
|
12 | | - private CsvEditorSettingsPanel myCsvEditorSettingsPanel; |
| 21 | + @NotNull |
| 22 | + @Override |
| 23 | + public String getId() { |
| 24 | + return "Csv.Editor.Settings"; |
| 25 | + } |
13 | 26 |
|
| 27 | + @Override |
14 | 28 | public String getDisplayName() { |
15 | 29 | return "CSV/TSV Editor"; |
16 | 30 | } |
17 | 31 |
|
| 32 | + @Override |
18 | 33 | public String getHelpTopic() { |
19 | 34 | return "Editor Options for CSV/TSV files"; |
20 | 35 | } |
21 | 36 |
|
22 | | - @NotNull |
23 | | - public String getId() { |
24 | | - return "CSV_EDITOR_OPTIONS"; |
25 | | - } |
26 | | - |
27 | 37 | @Nullable |
28 | 38 | @Override |
29 | 39 | public JComponent createComponent() { |
30 | | - this.myCsvEditorSettingsPanel = new CsvEditorSettingsPanel(); |
31 | | - return this.myCsvEditorSettingsPanel.createComponent(); |
| 40 | + return myMainPanel; |
32 | 41 | } |
33 | 42 |
|
34 | | - @Override |
35 | | - public boolean isModified() { |
36 | | - return this.myCsvEditorSettingsPanel != null && this.myCsvEditorSettingsPanel.isModified(); |
| 43 | + // ensure downward compatibility |
| 44 | + public boolean isModified(@NotNull JToggleButton toggleButton, boolean value) { |
| 45 | + return toggleButton.isSelected() != value; |
37 | 46 | } |
38 | 47 |
|
39 | 48 | @Override |
40 | | - public void apply() throws ConfigurationException { |
41 | | - if (this.myCsvEditorSettingsPanel != null) { |
42 | | - this.myCsvEditorSettingsPanel.apply(); |
43 | | - } |
| 49 | + public boolean isModified() { |
| 50 | + CsvEditorSettingsExternalizable csvEditorSettingsExternalizable = CsvEditorSettingsExternalizable.getInstance(); |
| 51 | + return isModified(cbCaretRowShown, csvEditorSettingsExternalizable.isCaretRowShown()) || |
| 52 | + isModified(cbUseSoftWraps, csvEditorSettingsExternalizable.isUseSoftWraps()) || |
| 53 | + isModified(cbColumnHighlighting, csvEditorSettingsExternalizable.isColumnHighlightingEnabled()) || |
| 54 | + cbTabHighlightColor.isSelected() != csvEditorSettingsExternalizable.isHighlightTabSeparator() || |
| 55 | + !Objects.equals(cbTabHighlightColor.getColor(), csvEditorSettingsExternalizable.getTabHighlightColor()); |
44 | 56 | } |
45 | 57 |
|
46 | 58 | @Override |
47 | 59 | public void reset() { |
48 | | - if (this.myCsvEditorSettingsPanel != null) { |
49 | | - this.myCsvEditorSettingsPanel.reset(); |
50 | | - } |
| 60 | + CsvEditorSettingsExternalizable csvEditorSettingsExternalizable = CsvEditorSettingsExternalizable.getInstance(); |
| 61 | + cbCaretRowShown.setSelected(csvEditorSettingsExternalizable.isCaretRowShown()); |
| 62 | + cbUseSoftWraps.setSelected(csvEditorSettingsExternalizable.isUseSoftWraps()); |
| 63 | + cbColumnHighlighting.setSelected(csvEditorSettingsExternalizable.isColumnHighlightingEnabled()); |
| 64 | + cbTabHighlightColor.setSelected(csvEditorSettingsExternalizable.isHighlightTabSeparator()); |
| 65 | + cbTabHighlightColor.setColor(csvEditorSettingsExternalizable.getTabHighlightColor()); |
51 | 66 | } |
52 | 67 |
|
53 | 68 | @Override |
54 | | - public void disposeUIResources() { |
55 | | - this.myCsvEditorSettingsPanel.disposeUIResources(); |
56 | | - this.myCsvEditorSettingsPanel = null; |
| 69 | + public void apply() throws ConfigurationException { |
| 70 | + CsvEditorSettingsExternalizable csvEditorSettingsExternalizable = CsvEditorSettingsExternalizable.getInstance(); |
| 71 | + csvEditorSettingsExternalizable.setCaretRowShown(cbCaretRowShown.isSelected()); |
| 72 | + csvEditorSettingsExternalizable.setUseSoftWraps(cbUseSoftWraps.isSelected()); |
| 73 | + csvEditorSettingsExternalizable.setColumnHighlightingEnabled(cbColumnHighlighting.isSelected()); |
| 74 | + csvEditorSettingsExternalizable.setHighlightTabSeparator(cbTabHighlightColor.isSelected()); |
| 75 | + csvEditorSettingsExternalizable.setTabHighlightColor(cbTabHighlightColor.getColor()); |
| 76 | + } |
| 77 | + |
| 78 | + |
| 79 | + private void createUIComponents() { |
| 80 | + cbTabHighlightColor = new CheckBoxWithColorChooser("Highlight tab separator "); |
| 81 | + cbTabHighlightColor.setColor(Color.CYAN); |
57 | 82 | } |
58 | 83 | } |
0 commit comments