|
1 | 1 | package org.quiltmc.enigma.gui.element.menu_bar.view; |
2 | 2 |
|
3 | | -import org.quiltmc.config.api.values.TrackedValue; |
4 | 3 | import org.quiltmc.enigma.gui.Gui; |
5 | 4 | import org.quiltmc.enigma.gui.config.Config; |
6 | 5 | import org.quiltmc.enigma.gui.element.menu_bar.AbstractEnigmaMenu; |
7 | 6 | import org.quiltmc.enigma.gui.util.GuiUtil; |
8 | 7 | import org.quiltmc.enigma.util.I18n; |
9 | 8 |
|
10 | | -import javax.swing.ButtonGroup; |
11 | 9 | import javax.swing.JCheckBoxMenuItem; |
12 | 10 | import javax.swing.JMenu; |
13 | | -import javax.swing.JRadioButtonMenuItem; |
14 | 11 | import javax.swing.JToolBar; |
15 | | -import java.util.Map; |
16 | | -import java.util.function.Function; |
17 | | -import java.util.stream.Collectors; |
18 | | -import java.util.stream.IntStream; |
19 | 12 |
|
20 | 13 | import static org.quiltmc.enigma.gui.config.EntryMarkersSection.MAX_MAX_MARKERS_PER_LINE; |
21 | 14 | import static org.quiltmc.enigma.gui.config.EntryMarkersSection.MIN_MAX_MARKERS_PER_LINE; |
22 | 15 |
|
23 | 16 | public class EntryMarkersMenu extends AbstractEnigmaMenu { |
24 | | - @SuppressWarnings("SameParameterValue") |
25 | | - private static JMenu createIntConfigRadioMenu( |
26 | | - TrackedValue<Integer> config, int min, int max, Runnable onUpdate |
27 | | - ) { |
28 | | - final Map<Integer, JRadioButtonMenuItem> radiosByChoice = IntStream.range(min, max + 1) |
29 | | - .boxed() |
30 | | - .collect(Collectors.toMap( |
31 | | - Function.identity(), |
32 | | - choice -> { |
33 | | - final JRadioButtonMenuItem choiceItem = new JRadioButtonMenuItem(); |
34 | | - choiceItem.setText(Integer.toString(choice)); |
35 | | - if (choice.equals(config.value())) { |
36 | | - choiceItem.setSelected(true); |
37 | | - } |
38 | | - |
39 | | - final int finalChoice = choice; |
40 | | - choiceItem.addActionListener(e -> { |
41 | | - config.setValue(finalChoice); |
42 | | - onUpdate.run(); |
43 | | - }); |
44 | | - |
45 | | - return choiceItem; |
46 | | - } |
47 | | - )); |
48 | | - |
49 | | - final ButtonGroup choicesGroup = new ButtonGroup(); |
50 | | - final JMenu menu = new JMenu(); |
51 | | - for (final JRadioButtonMenuItem radio : radiosByChoice.values()) { |
52 | | - choicesGroup.add(radio); |
53 | | - menu.add(radio); |
54 | | - } |
55 | | - |
56 | | - config.registerCallback(updated -> { |
57 | | - final JRadioButtonMenuItem choiceItem = radiosByChoice.get(updated.value()); |
58 | | - |
59 | | - if (!choiceItem.isSelected()) { |
60 | | - choiceItem.setSelected(true); |
61 | | - onUpdate.run(); |
62 | | - } |
63 | | - }); |
64 | | - |
65 | | - return menu; |
66 | | - } |
67 | | - |
68 | 17 | private final JCheckBoxMenuItem tooltip = GuiUtil |
69 | 18 | .createSyncedMenuCheckBox(Config.editor().entryMarkers.tooltip); |
70 | 19 |
|
71 | | - private final JMenu maxMarkersPerLineMenu = createIntConfigRadioMenu( |
| 20 | + private final JMenu maxMarkersPerLineMenu = GuiUtil.createIntConfigRadioMenu( |
72 | 21 | Config.editor().entryMarkers.maxMarkersPerLine, |
73 | 22 | MIN_MAX_MARKERS_PER_LINE, MAX_MAX_MARKERS_PER_LINE, |
74 | 23 | this::translateMarkersPerLineMenu |
|
0 commit comments