Skip to content

Commit acfba36

Browse files
committed
Persist pane decompiler choices
1 parent 5924070 commit acfba36

File tree

4 files changed

+34
-26
lines changed

4 files changed

+34
-26
lines changed

src/main/java/club/bytecode/the/jda/decompilers/Decompilers.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ public class Decompilers {
1919
public static Collection<JDADecompiler> getAllDecompilers() {
2020
return Collections.unmodifiableCollection(BY_NAME.values());
2121
}
22-
22+
23+
public static JDADecompiler getByName(String name) {
24+
return BY_NAME.get(name);
25+
}
26+
2327
static
2428
{
2529
Decompilers.BY_NAME.put(PROCYON.getName(), PROCYON);

src/main/java/club/bytecode/the/jda/decompilers/JDADecompiler.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,4 @@ protected String parseException(Throwable e) {
4343
protected void handleException(Exception e) {
4444
new ExceptionUI(e);
4545
}
46-
47-
public static void ensureInitted() {
48-
// Just to make sure the classes is loaded so all decompilers are loaded
49-
}
5046
}

src/main/java/club/bytecode/the/jda/gui/MainViewerGUI.java

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier, IPersis
3636
public static final long serialVersionUID = 1851409230530948543L;
3737
private static final Color COLOR_DESKTOP_BACKGROUND = new Color(58, 110, 165);
3838

39-
public final ButtonGroup panelGroup1 = new ButtonGroup();
40-
public final ButtonGroup panelGroup2 = new ButtonGroup();
41-
public final ButtonGroup panelGroup3 = new ButtonGroup();
39+
public static final int NUM_PANEL_GROUPS = 3;
40+
public final ButtonGroup[] panelGroups = new ButtonGroup[NUM_PANEL_GROUPS];
4241

4342
public JMenuBar menuBar;
4443
public JMenu viewMenu;
@@ -58,7 +57,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier, IPersis
5857

5958
public AboutWindow aboutWindow = new AboutWindow();
6059
public IntroWindow introWindow = new IntroWindow();
61-
public List<ButtonGroup> allPanes = Collections.unmodifiableList(Arrays.asList(panelGroup1, panelGroup2, panelGroup3));
60+
public List<ButtonGroup> allPanes = Collections.unmodifiableList(Arrays.asList(panelGroups));
6261
public Map<ButtonGroup, Map<JRadioButtonMenuItem, JDADecompiler>> allDecompilers = new HashMap<>();
6362
public Map<ButtonGroup, Map<JDADecompiler, JRadioButtonMenuItem>> allDecompilersRev = new HashMap<>();
6463
public Map<ButtonGroup, Map<JDADecompiler, JCheckBoxMenuItem>> editButtons = new HashMap<>();
@@ -71,16 +70,13 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier, IPersis
7170
public MainViewerGUI() {
7271
initializeWindows();
7372

74-
JDADecompiler.ensureInitted();
75-
allDecompilers.put(panelGroup1, new HashMap<>());
76-
allDecompilers.put(panelGroup2, new HashMap<>());
77-
allDecompilers.put(panelGroup3, new HashMap<>());
78-
allDecompilersRev.put(panelGroup1, new HashMap<>());
79-
allDecompilersRev.put(panelGroup2, new HashMap<>());
80-
allDecompilersRev.put(panelGroup3, new HashMap<>());
81-
editButtons.put(panelGroup1, new HashMap<>());
82-
editButtons.put(panelGroup2, new HashMap<>());
83-
editButtons.put(panelGroup3, new HashMap<>());
73+
for (int i = 0; i < panelGroups.length; i++) {
74+
ButtonGroup panelGroup = new ButtonGroup();
75+
allDecompilers.put(panelGroup, new HashMap<>());
76+
allDecompilersRev.put(panelGroup, new HashMap<>());
77+
editButtons.put(panelGroup, new HashMap<>());
78+
panelGroups[i] = panelGroup;
79+
}
8480
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new JDAKeybindManager());
8581
this.addWindowStateListener(new WindowAdapter() {
8682
@Override
@@ -282,9 +278,8 @@ private void initializeMenubar() {
282278
// View menu
283279
// ===========================================================================================
284280
menuBar.add(viewMenu);
285-
viewMenu.add(generatePane(0));
286-
viewMenu.add(generatePane(1));
287-
viewMenu.add(generatePane(2));
281+
for (int i = 0; i < NUM_PANEL_GROUPS; i++)
282+
viewMenu.add(generatePane(i));
288283

289284
// ===========================================================================================
290285
// Windows menu
@@ -329,9 +324,10 @@ private void initializeMenubar() {
329324
}
330325

331326
private void initializePanelGroup() {
332-
panelGroup1.setSelected(allDecompilersRev.get(panelGroup1).get(Decompilers.FERNFLOWER).getModel(), true);
333-
panelGroup2.setSelected(allDecompilersRev.get(panelGroup2).get(Decompilers.BYTECODE).getModel(), true);
334-
panelGroup3.setSelected(allDecompilersRev.get(panelGroup3).get(null).getModel(), true);
327+
for (int i = 0; i < panelGroups.length; i++) {
328+
String decompilerName = Settings.PANE_DECOMPILERS[i].getString();
329+
panelGroups[i].setSelected(allDecompilersRev.get(panelGroups[i]).get(Decompilers.getByName(decompilerName)).getModel(), true);
330+
}
335331
}
336332

337333
public static <T> T getComponent(final Class<T> clazz) {
@@ -404,6 +400,7 @@ private JMenu generatePane(int id) {
404400

405401
for (JDADecompiler decompiler : Decompilers.getAllDecompilers()) {
406402
JRadioButtonMenuItem button = new JRadioButtonMenuItem(decompiler.getName());
403+
button.addActionListener((e) -> Settings.PANE_DECOMPILERS[id].set(decompiler.getName()));
407404
allDecompilers.get(group).put(button, decompiler);
408405
allDecompilersRev.get(group).put(decompiler, button);
409406
group.add(button);

src/main/java/club/bytecode/the/jda/settings/Settings.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.io.FileOutputStream;
1313
import java.io.FileReader;
1414
import java.util.ArrayList;
15+
import java.util.Arrays;
1516
import java.util.List;
1617

1718
/**
@@ -32,9 +33,17 @@ public class Settings {
3233
public static final Setting FONT_SIZE = new Setting("font", "fontsize", 12, Setting.SettingType.INT);
3334
public static final Setting FONT_FAMILY = new Setting("font", "fontfamily", Font.MONOSPACED);
3435
public static final Setting FONT_OPTIONS = new Setting("font", "fontoptions", Font.PLAIN, Setting.SettingType.INT);
36+
37+
public static final Setting[] PANE_DECOMPILERS;
3538

3639
static
3740
{
41+
PANE_DECOMPILERS = new Setting[MainViewerGUI.NUM_PANEL_GROUPS]; // bleh
42+
PANE_DECOMPILERS[0] = new Setting("panedecompiler0", Decompilers.FERNFLOWER.getName());
43+
PANE_DECOMPILERS[1] = new Setting("panedecompiler1", Decompilers.BYTECODE.getName());
44+
for (int i = 2; i < PANE_DECOMPILERS.length; i++)
45+
PANE_DECOMPILERS[i] = new Setting("panedecompiler" + i, "None");
46+
3847
ALL_SETTINGS.add(PATH);
3948
ALL_SETTINGS.add(SHOW_CONTAINER_NAME);
4049
ALL_SETTINGS.add(SNAP_TO_EDGES);
@@ -44,6 +53,8 @@ public class Settings {
4453
ALL_SETTINGS.add(FONT_SIZE);
4554
ALL_SETTINGS.add(FONT_FAMILY);
4655
ALL_SETTINGS.add(FONT_OPTIONS);
56+
57+
ALL_SETTINGS.addAll(Arrays.asList(PANE_DECOMPILERS));
4758
}
4859

4960
public static void saveGUI() {
@@ -137,4 +148,4 @@ private static void loadFrame(JsonObject windowsSection, IPersistentWindow f) {
137148
f.restoreSize(size);
138149
}
139150
}
140-
}
151+
}

0 commit comments

Comments
 (0)