diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/ClassViewer.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/ClassViewer.java index 5f0db855..5dd0f090 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/ClassViewer.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/ClassViewer.java @@ -119,8 +119,6 @@ public class ClassViewer extends Viewer { return splitter; } - String name; - String container; JSplitPane sp; JSplitPane sp2; public List decompilers = Arrays.asList(null, null, null); @@ -321,7 +319,7 @@ public class ClassViewer extends Viewer { this.name = name; this.container = container; this.cn = cn; - this.setName(name + "(" + container + ")"); + updateName(); this.setLayout(new BorderLayout()); this.sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panels.get(0), panels.get(1)); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/FileViewer.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/FileViewer.java index 59be284b..1e0aeaaa 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/FileViewer.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/FileViewer.java @@ -50,8 +50,6 @@ public class FileViewer extends Viewer { private static final long serialVersionUID = 6103372882168257164L; - String name; - String container; private byte[] contents; RSyntaxTextArea panelArea = new RSyntaxTextArea(); JPanel panel = new JPanel(new BorderLayout()); @@ -194,7 +192,7 @@ public class FileViewer extends Viewer { this.name = name; this.container = container; this.contents = contents; - this.setName(name); + updateName(); this.setLayout(new BorderLayout()); this.add(panel2, BorderLayout.CENTER); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java index 73bc1c01..7bd7e1e5 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/MainViewerGUI.java @@ -205,6 +205,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { public final ButtonGroup panelGroup1 = new ButtonGroup(); public final ButtonGroup panelGroup2 = new ButtonGroup(); public final ButtonGroup panelGroup3 = new ButtonGroup(); + public final JCheckBox mnShowContainer = new JCheckBox("Show Containing File's Name"); private final JMenuItem mntmSetOpitonalLibrary = new JMenuItem("Set Optional Library Folder"); private final JMenuItem mntmPingback = new JMenuItem("Pingback"); private final JMenu mnFontSize = new JMenu("Font Size"); @@ -1225,11 +1226,26 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier { fontSpinner.setSize(new Dimension(42, 20)); fontSpinner.setModel(new SpinnerNumberModel(12, 1, null, 1)); viewMenu.add(mnFontSize); - mnFontSize.add(fontSpinner); - - panelGroup1.setSelected(allDecompilersRev.get(panelGroup1).get(Decompiler.JDGUI).getModel(), true); + viewMenu.add(mnShowContainer); + mnShowContainer.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + JTabbedPane tabs = workPane.tabs; + Component[] components = tabs.getComponents(); + for (int i = 0; i < components.length; i++) { + Component c = components[i]; + if (c instanceof Viewer) { + ((Viewer) c).updateName(); + int idx = tabs.indexOfComponent(c); + tabs.setTabComponentAt(idx, new TabbedPane(c.getName(), tabs)); + workPane.tabs.setTitleAt(idx, c.getName()); + } + } + } + }); + panelGroup1.setSelected(allDecompilersRev.get(panelGroup1).get(Decompiler.JDGUI).getModel(), true); panelGroup2.setSelected(allDecompilersRev.get(panelGroup2).get(Decompiler.BYTECODE).getModel(), true); panelGroup3.setSelected(allDecompilersRev.get(panelGroup3).get(null).getModel(), true); this.setLocationRelativeTo(null); diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/Viewer.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/Viewer.java index 36dee117..783ca30c 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/Viewer.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/Viewer.java @@ -1,6 +1,7 @@ package the.bytecode.club.bytecodeviewer.gui; import org.objectweb.asm.tree.ClassNode; +import the.bytecode.club.bytecodeviewer.BytecodeViewer; import javax.swing.*; @@ -26,7 +27,11 @@ public abstract class Viewer extends JPanel { public ClassNode cn; public String name; + public String container; private static final long serialVersionUID = -2965538493489119191L; + public void updateName() { + this.setName(name + (BytecodeViewer.viewer.mnShowContainer.isSelected() ? "(" + container + ")" : "")); + } } diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/WorkPane.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/WorkPane.java index d0acc8ba..48c4dce8 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/WorkPane.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/WorkPane.java @@ -86,11 +86,11 @@ public class WorkPane extends VisibleComponent implements ActionListener { final Component c = e.getChild(); if (c instanceof ClassViewer) { ClassViewer cv = (ClassViewer) c; - workingOn.remove(cv.name + "$" + cv.name); + workingOn.remove(cv.container + "$" + cv.name); } if (c instanceof FileViewer) { FileViewer fv = (FileViewer) c; - workingOn.remove(fv.name + "$" + fv.name); + workingOn.remove(fv.container + "$" + fv.name); } }