22
33import  com .intellij .application .options .editor .EditorOptionsProvider ;
44import  com .intellij .openapi .fileEditor .FileEditorManager ;
5+ import  com .intellij .openapi .options .Configurable ;
56import  com .intellij .openapi .options .ConfigurationException ;
67import  com .intellij .openapi .project .ProjectManager ;
78import  com .intellij .openapi .ui .ComboBox ;
8- import  com .intellij .openapi .util .text .StringUtil ;
99import  com .intellij .ui .CheckBoxWithColorChooser ;
10+ import  com .intellij .ui .JBColor ;
1011import  com .intellij .util .FileContentUtilCore ;
1112import  net .seesharpsoft .intellij .plugins .csv .CsvEscapeCharacter ;
1213import  net .seesharpsoft .intellij .plugins .csv .CsvValueSeparator ;
1617
1718import  javax .swing .*;
1819import  javax .swing .text .NumberFormatter ;
19- import  java .awt .*;
2020import  java .text .NumberFormat ;
2121import  java .util .Arrays ;
2222import  java .util .Objects ;
@@ -34,17 +34,17 @@ public class CsvEditorSettingsProvider implements EditorOptionsProvider {
3434    private  JCheckBox  cbUseSoftWraps ;
3535    private  CheckBoxWithColorChooser  cbTabHighlightColor ;
3636    private  JCheckBox  cbShowInfoBalloonCheckBox ;
37-     private  JComboBox  cbEditorUsage ;
37+     private  JComboBox < CsvEditorSettings . EditorPrio >  cbEditorUsage ;
3838    private  JCheckBox  cbQuotingEnforced ;
3939    private  JCheckBox  cbZeroBasedColumnNumbering ;
4040    private  JCheckBox  cbFileEndLineBreak ;
4141    private  JFormattedTextField  tfMaxColumnWidth ;
4242    private  JFormattedTextField  tfDefaultColumnWidth ;
43-     private  JComboBox  comboEscapeCharacter ;
44-     private  JComboBox  comboValueSeparator ;
43+     private  JComboBox < CsvEscapeCharacter >  comboEscapeCharacter ;
44+     private  JComboBox < CsvValueSeparator >  comboValueSeparator ;
4545    private  JCheckBox  cbKeepTrailingWhitespaces ;
4646    private  JTextField  tfCommentIndicator ;
47-     private  JComboBox  comboValueColoring ;
47+     private  JComboBox < CsvEditorSettings . ValueColoring >  comboValueColoring ;
4848    private  JCheckBox  cbAutoDetectSeparator ;
4949    private  JFormattedTextField  tfDefaultRowHeight ;
5050
@@ -70,37 +70,27 @@ public JComponent createComponent() {
7070        return  myMainPanel ;
7171    }
7272
73-     // ensure downward compatibility 
74-     public  boolean  isModified (@ NotNull  JToggleButton  toggleButton , boolean  value ) {
75-         return  toggleButton .isSelected () != value ;
76-     }
77- 
78-     public  boolean  isModified (@ NotNull  JTextField  textField , @ NotNull  String  value ) {
79-         return  !StringUtil .equals (textField .getText ().trim (), value );
80-     }
81- 
8273    @ Override 
8374    public  boolean  isModified () {
8475        CsvEditorSettings  csvEditorSettings  = CsvEditorSettings .getInstance ();
85-         return  isModified (cbCaretRowShown , csvEditorSettings .isCaretRowShown ()) ||
86-                 isModified (cbUseSoftWraps , csvEditorSettings .isUseSoftWraps ()) ||
87-                 isModified (cbShowInfoBalloonCheckBox , csvEditorSettings .isShowInfoBalloon ()) ||
76+         return  Configurable . isCheckboxModified (cbCaretRowShown , csvEditorSettings .isCaretRowShown ()) ||
77+                 Configurable . isCheckboxModified (cbUseSoftWraps , csvEditorSettings .isUseSoftWraps ()) ||
78+                 Configurable . isCheckboxModified (cbShowInfoBalloonCheckBox , csvEditorSettings .isShowInfoBalloon ()) ||
8879                cbTabHighlightColor .isSelected () != csvEditorSettings .isHighlightTabSeparator () ||
8980                !Objects .equals (cbTabHighlightColor .getColor (), csvEditorSettings .getTabHighlightColor ()) ||
9081                !tfDefaultRowHeight .getValue ().equals (csvEditorSettings .getTableEditorRowHeight ()) ||
91-                 !Objects .equals (cbEditorUsage .getSelectedIndex (), csvEditorSettings .getEditorPrio ().ordinal ()) ||
92-                 isModified (cbQuotingEnforced , csvEditorSettings .isQuotingEnforced ()) ||
93-                 !Objects .equals (cbEditorUsage .getSelectedIndex (), csvEditorSettings .getEditorPrio ().ordinal ()) ||
94-                 isModified (cbZeroBasedColumnNumbering , csvEditorSettings .isZeroBasedColumnNumbering ()) ||
95-                 isModified (cbFileEndLineBreak , csvEditorSettings .isFileEndLineBreak ()) ||
82+                 Configurable .isCheckboxModified (cbQuotingEnforced , csvEditorSettings .isQuotingEnforced ()) ||
83+                 !Objects .equals (cbEditorUsage .getSelectedItem (), csvEditorSettings .getEditorPrio ()) ||
84+                 Configurable .isCheckboxModified (cbZeroBasedColumnNumbering , csvEditorSettings .isZeroBasedColumnNumbering ()) ||
85+                 Configurable .isCheckboxModified (cbFileEndLineBreak , csvEditorSettings .isFileEndLineBreak ()) ||
9686                !tfMaxColumnWidth .getValue ().equals (csvEditorSettings .getTableAutoMaxColumnWidth ()) ||
9787                !tfDefaultColumnWidth .getValue ().equals (csvEditorSettings .getTableDefaultColumnWidth ()) ||
9888                !Objects .equals (comboEscapeCharacter .getSelectedItem (), csvEditorSettings .getDefaultEscapeCharacter ()) ||
9989                !Objects .equals (comboValueSeparator .getSelectedItem (), csvEditorSettings .getDefaultValueSeparator ()) ||
100-                 isModified (cbKeepTrailingWhitespaces , csvEditorSettings .getKeepTrailingSpaces ()) ||
101-                 isModified (tfCommentIndicator , csvEditorSettings .getCommentIndicator ()) ||
90+                 Configurable . isCheckboxModified (cbKeepTrailingWhitespaces , csvEditorSettings .getKeepTrailingSpaces ()) ||
91+                 Configurable . isFieldModified (tfCommentIndicator , csvEditorSettings .getCommentIndicator ()) ||
10292                !Objects .equals (comboValueColoring .getSelectedItem (), csvEditorSettings .getValueColoring ()) ||
103-                 isModified (cbAutoDetectSeparator , csvEditorSettings .isAutoDetectValueSeparator ());
93+                 Configurable . isCheckboxModified (cbAutoDetectSeparator , csvEditorSettings .isAutoDetectValueSeparator ());
10494    }
10595
10696    @ Override 
@@ -112,7 +102,7 @@ public void reset() {
112102        cbTabHighlightColor .setSelected (csvEditorSettings .isHighlightTabSeparator ());
113103        cbTabHighlightColor .setColor (csvEditorSettings .getTabHighlightColor ());
114104        tfDefaultRowHeight .setValue (csvEditorSettings .getTableEditorRowHeight ());
115-         cbEditorUsage .setSelectedIndex (csvEditorSettings .getEditorPrio (). ordinal ());
105+         cbEditorUsage .setSelectedItem (csvEditorSettings .getEditorPrio ());
116106        cbQuotingEnforced .setSelected (csvEditorSettings .isQuotingEnforced ());
117107        cbZeroBasedColumnNumbering .setSelected (csvEditorSettings .isZeroBasedColumnNumbering ());
118108        cbFileEndLineBreak .setSelected (csvEditorSettings .isFileEndLineBreak ());
@@ -135,7 +125,7 @@ public void apply() throws ConfigurationException {
135125        csvEditorSettings .setHighlightTabSeparator (cbTabHighlightColor .isSelected ());
136126        csvEditorSettings .setTabHighlightColor (cbTabHighlightColor .getColor ());
137127        csvEditorSettings .setTableEditorRowHeight ((int ) tfDefaultRowHeight .getValue ());
138-         csvEditorSettings .setEditorPrio (CsvEditorSettings .EditorPrio . values ()[ cbEditorUsage .getSelectedIndex ()] );
128+         csvEditorSettings .setEditorPrio (( CsvEditorSettings .EditorPrio )  cbEditorUsage .getSelectedItem () );
139129        csvEditorSettings .setQuotingEnforced (cbQuotingEnforced .isSelected ());
140130        csvEditorSettings .setZeroBasedColumnNumbering (cbZeroBasedColumnNumbering .isSelected ());
141131        csvEditorSettings .setFileEndLineBreak (cbFileEndLineBreak .isSelected ());
@@ -165,17 +155,20 @@ protected void refreshOpenEditors() {
165155    }
166156
167157    protected  void  createUIComponents () {
168-         comboEscapeCharacter  = new  ComboBox (CsvEscapeCharacter .values ());
169-         comboEscapeCharacter .setRenderer (new  CustomDisplayListCellRenderer <CsvEscapeCharacter >(ec  -> ec .getDisplay ()));
158+         cbEditorUsage  = new  ComboBox <>(CsvEditorSettings .EditorPrio .values ());
159+         cbEditorUsage .setRenderer (new  CustomDisplayListCellRenderer <>(CsvEditorSettings .EditorPrio ::getDisplay ));
160+         
161+         comboEscapeCharacter  = new  ComboBox <>(CsvEscapeCharacter .values ());
162+         comboEscapeCharacter .setRenderer (new  CustomDisplayListCellRenderer <>(CsvEscapeCharacter ::getDisplay ));
170163
171-         comboValueSeparator  = new  ComboBox (CsvValueSeparator .values ());
172-         comboValueSeparator .setRenderer (new  CustomDisplayListCellRenderer <CsvValueSeparator >( ec  ->  ec . getDisplay () ));
164+         comboValueSeparator  = new  ComboBox <> (CsvValueSeparator .values ());
165+         comboValueSeparator .setRenderer (new  CustomDisplayListCellRenderer <>( CsvValueSeparator :: getDisplay ));
173166
174-         comboValueColoring  = new  ComboBox (CsvEditorSettings .ValueColoring .values ());
175-         comboValueColoring .setRenderer (new  CustomDisplayListCellRenderer <CsvEditorSettings . ValueColoring >( ec  ->  ec . getDisplay () ));
167+         comboValueColoring  = new  ComboBox <> (CsvEditorSettings .ValueColoring .values ());
168+         comboValueColoring .setRenderer (new  CustomDisplayListCellRenderer <>( CsvEditorSettings . ValueColoring :: getDisplay ));
176169
177170        cbTabHighlightColor  = new  CheckBoxWithColorChooser ("Highlight tab separator   " );
178-         cbTabHighlightColor .setColor (Color .CYAN );
171+         cbTabHighlightColor .setColor (JBColor .CYAN );
179172
180173        NumberFormat  numberFormat  = NumberFormat .getIntegerInstance ();
181174        NumberFormatter  numberFormatter  = new  NumberFormatter (numberFormat );
0 commit comments