2727import javax .swing .*;
2828import javax .swing .event .DocumentEvent ;
2929import javax .swing .event .DocumentListener ;
30- import java .awt .*;
31- import java .awt .event .KeyAdapter ;
32- import java .awt .event .KeyEvent ;
33- import java .awt .event .WindowAdapter ;
34- import java .awt .event .WindowEvent ;
30+ import java .awt .event .*;
3531import java .lang .reflect .Field ;
32+ import java .util .HashMap ;
33+ import java .util .function .Function ;
3634
3735/**
3836 * @author Enaium
3937 * @since 0.7.0
4038 */
4139public class ConfigDialog extends Dialog {
42- public ConfigDialog (Config config ) {
40+ public ConfigDialog (final Config config ) {
4341 super (LangUtil .i18n ("menu.config" ));
4442
4543 setContentPane (new JScrollPane (new JPanel (new MigLayout ("fillx" , "[fill][fill]" )) {{
@@ -53,79 +51,79 @@ public ConfigDialog(Config config) {
5351
5452 Object o = declaredField .get (config );
5553
56- if (o instanceof Value ) {
57- Value <?> value = (Value <?>) o ;
58-
54+ if (o instanceof Value <?> value ) {
5955 add (new JLabel (value .getName ()) {{
6056 setToolTipText (value .getDescription ());
6157 }});
62- }
63-
64- if (o instanceof StringValue ) {
65- StringValue stringValue = (StringValue ) o ;
66- add (new JTextField (25 ) {{
67- JTextField jTextField = this ;
68- jTextField .setText (stringValue .getValue ());
69- getDocument ().addDocumentListener (new DocumentListener () {
70- @ Override
71- public void insertUpdate (DocumentEvent e ) {
72- stringValue .setValue (jTextField .getText ());
73- }
58+ switch (value ) {
59+ case StringValue stringValue -> add (new JTextField (25 ) {{
60+ JTextField jTextField = this ;
61+ jTextField .setText (stringValue .getValue ());
62+ getDocument ().addDocumentListener (new DocumentListener () {
63+ @ Override
64+ public void insertUpdate (DocumentEvent e ) {
65+ stringValue .setValue (jTextField .getText ());
66+ }
7467
75- @ Override
76- public void removeUpdate (DocumentEvent e ) {
77- stringValue .setValue (jTextField .getText ());
78- }
68+ @ Override
69+ public void removeUpdate (DocumentEvent e ) {
70+ stringValue .setValue (jTextField .getText ());
71+ }
7972
80- @ Override
81- public void changedUpdate (DocumentEvent e ) {
82- stringValue .setValue (jTextField .getText ());
83- }
84- });
85- }}, "wrap" );
86- } else if (o instanceof IntegerValue ) {
87- IntegerValue integerValue = (IntegerValue ) o ;
88- add (new JSpinner () {{
89- setValue (integerValue .getValue ());
90- addChangeListener (e -> integerValue .setValue (Integer .parseInt (getValue ().toString ())));
91- }}, "wrap" );
92- } else if (o instanceof EnableValue ) {
93- EnableValue enableValue = (EnableValue ) o ;
94- add (new JCheckBox () {{
95- JCheckBox jCheckBox = this ;
96- setHorizontalAlignment (JCheckBox .RIGHT );
97- setSelected (enableValue .getValue ());
98- addActionListener (e -> {
99- enableValue .setValue (jCheckBox .isSelected ());
100- });
101- }}, "wrap" );
102- } else if (o instanceof ModeValue ) {
103- add (new JComboBox <String >(new DefaultComboBoxModel <>()) {{
104- JComboBox <String > jComboBox = this ;
105- ModeValue modeValue = (ModeValue ) o ;
106- for (String s : modeValue .getMode ()) {
107- DefaultComboBoxModel <String > model = (DefaultComboBoxModel <String >) getModel ();
108- model .addElement (s );
109- model .setSelectedItem (modeValue .getValue ());
110- jComboBox .addActionListener (e -> {
111- modeValue .setValue (model .getSelectedItem ().toString ());
73+ @ Override
74+ public void changedUpdate (DocumentEvent e ) {
75+ stringValue .setValue (jTextField .getText ());
76+ }
11277 });
113- }
114- }}, "wrap" );
115- } else if (o instanceof KeyValue ) {
116- KeyValue keyValue = (KeyValue ) o ;
117- add (new JButton (keyValue .getValue ().toString ()) {{
118- addKeyListener (new KeyAdapter () {
119- @ Override
120- public void keyPressed (KeyEvent e ) {
121- if (e .getKeyChar () != 65535 ) {
122- KeyStroke newKey = KeyStroke .getKeyStroke (e .getKeyCode (), e .getModifiers ());
123- keyValue .setValue (newKey );
124- setText (newKey .toString ());
78+ }}, "wrap" );
79+ case IntegerValue integerValue -> add (new JSpinner () {{
80+ setValue (integerValue .getValue ());
81+ addChangeListener (e -> integerValue .setValue (Integer .parseInt (getValue ().toString ())));
82+ }}, "wrap" );
83+ case EnableValue enableValue -> add (new JCheckBox () {{
84+ JCheckBox jCheckBox = this ;
85+ setHorizontalAlignment (JCheckBox .RIGHT );
86+ setSelected (enableValue .getValue ());
87+ addActionListener (e -> {
88+ enableValue .setValue (jCheckBox .isSelected ());
89+ });
90+ }}, "wrap" );
91+ case ModeValue modeValue -> add (new JComboBox <String >(new DefaultComboBoxModel <>()) {{
92+ JComboBox <String > jComboBox = this ;
93+ for (String s : modeValue .getMode ()) {
94+ DefaultComboBoxModel <String > model = (DefaultComboBoxModel <String >) getModel ();
95+ model .addElement (s );
96+ model .setSelectedItem (modeValue .getValue ());
97+ jComboBox .addActionListener (e -> {
98+ modeValue .setValue (model .getSelectedItem ().toString ());
99+ });
100+ }
101+ }}, "wrap" );
102+ case KeyValue keyValue -> add (new JButton (keyValue .getValue ().toString ()) {{
103+ addKeyListener (new KeyAdapter () {
104+ @ Override
105+ public void keyPressed (KeyEvent e ) {
106+ if (e .getKeyChar () != 65535 ) {
107+ KeyStroke newKey = KeyStroke .getKeyStroke (e .getKeyCode (), e .getModifiersEx ());
108+ keyValue .setValue (newKey );
109+ setText (newKey .toString ());
110+ }
125111 }
112+ });
113+ }}, "wrap" );
114+ case ConfigValue <?> configValue -> add (new JButton (configValue .getName ()) {
115+ {
116+ addMouseListener (new MouseAdapter () {
117+ @ Override
118+ public void mouseClicked (MouseEvent e ) {
119+ new ConfigDialog (configValue .getValue ()).setVisible (true );
120+ }
121+ });
126122 }
127- });
128- }}, "wrap" );
123+ }, "wrap" );
124+ default -> {
125+ }
126+ }
129127 }
130128 }
131129 } catch (IllegalAccessException e ) {
0 commit comments