2727import javax .swing .*;
2828import javax .swing .event .DocumentEvent ;
2929import javax .swing .event .DocumentListener ;
30+ import java .awt .*;
3031import java .awt .event .*;
3132import java .lang .reflect .Field ;
32- import java .util .HashMap ;
33- import java .util .function .Function ;
3433
3534/**
3635 * @author Enaium
3736 * @since 0.7.0
3837 */
3938public class ConfigDialog extends Dialog {
40- public ConfigDialog (final Config config ) {
39+ public ConfigDialog (Config config ) {
4140 super (LangUtil .i18n ("menu.config" ));
4241
4342 setContentPane (new JScrollPane (new JPanel (new MigLayout ("fillx" , "[fill][fill]" )) {{
@@ -51,79 +50,89 @@ public ConfigDialog(final Config config) {
5150
5251 Object o = declaredField .get (config );
5352
54- if (o instanceof Value <?> value ) {
53+ if (o instanceof Value ) {
54+ Value <?> value = (Value <?>) o ;
55+
5556 add (new JLabel (value .getName ()) {{
5657 setToolTipText (value .getDescription ());
5758 }});
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- }
59+ }
6760
68- @ Override
69- public void removeUpdate (DocumentEvent e ) {
70- stringValue .setValue (jTextField .getText ());
71- }
61+ if (o instanceof StringValue ) {
62+ StringValue stringValue = (StringValue ) o ;
63+ add (new JTextField (25 ) {{
64+ JTextField jTextField = this ;
65+ jTextField .setText (stringValue .getValue ());
66+ getDocument ().addDocumentListener (new DocumentListener () {
67+ @ Override
68+ public void insertUpdate (DocumentEvent e ) {
69+ stringValue .setValue (jTextField .getText ());
70+ }
7271
73- @ Override
74- public void changedUpdate (DocumentEvent e ) {
75- stringValue .setValue (jTextField .getText ());
76- }
77- });
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- });
72+ @ Override
73+ public void removeUpdate (DocumentEvent e ) {
74+ stringValue .setValue (jTextField .getText ());
10075 }
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- }
111- }
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- });
76+
77+ @ Override
78+ public void changedUpdate (DocumentEvent e ) {
79+ stringValue .setValue (jTextField .getText ());
12280 }
123- }, "wrap" );
124- default -> {
81+ });
82+ }}, "wrap" );
83+ } else if (o instanceof IntegerValue ) {
84+ IntegerValue integerValue = (IntegerValue ) o ;
85+ add (new JSpinner () {{
86+ setValue (integerValue .getValue ());
87+ addChangeListener (e -> integerValue .setValue (Integer .parseInt (getValue ().toString ())));
88+ }}, "wrap" );
89+ } else if (o instanceof EnableValue ) {
90+ EnableValue enableValue = (EnableValue ) o ;
91+ add (new JCheckBox () {{
92+ JCheckBox jCheckBox = this ;
93+ setHorizontalAlignment (JCheckBox .RIGHT );
94+ setSelected (enableValue .getValue ());
95+ addActionListener (e -> {
96+ enableValue .setValue (jCheckBox .isSelected ());
97+ });
98+ }}, "wrap" );
99+ } else if (o instanceof ModeValue ) {
100+ add (new JComboBox <String >(new DefaultComboBoxModel <>()) {{
101+ JComboBox <String > jComboBox = this ;
102+ ModeValue modeValue = (ModeValue ) o ;
103+ for (String s : modeValue .getMode ()) {
104+ DefaultComboBoxModel <String > model = (DefaultComboBoxModel <String >) getModel ();
105+ model .addElement (s );
106+ model .setSelectedItem (modeValue .getValue ());
107+ jComboBox .addActionListener (e -> {
108+ modeValue .setValue (model .getSelectedItem ().toString ());
109+ });
125110 }
126- }
111+ }}, "wrap" );
112+ } else if (o instanceof KeyValue ) {
113+ KeyValue keyValue = (KeyValue ) o ;
114+ add (new JButton (keyValue .getValue ().toString ()) {{
115+ addKeyListener (new KeyAdapter () {
116+ @ Override
117+ public void keyPressed (KeyEvent e ) {
118+ if (e .getKeyChar () != 65535 ) {
119+ KeyStroke newKey = KeyStroke .getKeyStroke (e .getKeyCode (), e .getModifiers ());
120+ keyValue .setValue (newKey );
121+ setText (newKey .toString ());
122+ }
123+ }
124+ });
125+ }}, "wrap" );
126+ } else if (o instanceof ConfigValue <?>){
127+ ConfigValue <?> configValue = (ConfigValue <?>) o ;
128+ add (new JButton (configValue .getName ()) {{
129+ addMouseListener (new MouseAdapter () {
130+ @ Override
131+ public void mouseClicked (MouseEvent e ) {
132+ new ConfigDialog (configValue .getValue ()).setVisible (true );
133+ }
134+ });
135+ }}, "wrap" );
127136 }
128137 }
129138 } catch (IllegalAccessException e ) {
0 commit comments