Skip to content

Commit 25cec13

Browse files
committed
undo switch
1 parent bb9b6ed commit 25cec13

File tree

1 file changed

+77
-68
lines changed

1 file changed

+77
-68
lines changed

src/main/java/cn/enaium/joe/dialog/ConfigDialog.java

Lines changed: 77 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,16 @@
2727
import javax.swing.*;
2828
import javax.swing.event.DocumentEvent;
2929
import javax.swing.event.DocumentListener;
30+
import java.awt.*;
3031
import java.awt.event.*;
3132
import 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
*/
3938
public 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

Comments
 (0)