Add option for whether the name of the containing file should be shown in the tab title
Fix bug with closing tabs Fix bug with updating tab names when changing show container name option
This commit is contained in:
parent
090d3f7f29
commit
3aee5e5c3d
5 changed files with 28 additions and 11 deletions
|
@ -119,8 +119,6 @@ public class ClassViewer extends Viewer {
|
||||||
return splitter;
|
return splitter;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name;
|
|
||||||
String container;
|
|
||||||
JSplitPane sp;
|
JSplitPane sp;
|
||||||
JSplitPane sp2;
|
JSplitPane sp2;
|
||||||
public List<Decompiler> decompilers = Arrays.asList(null, null, null);
|
public List<Decompiler> decompilers = Arrays.asList(null, null, null);
|
||||||
|
@ -321,7 +319,7 @@ public class ClassViewer extends Viewer {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.cn = cn;
|
this.cn = cn;
|
||||||
this.setName(name + "(" + container + ")");
|
updateName();
|
||||||
this.setLayout(new BorderLayout());
|
this.setLayout(new BorderLayout());
|
||||||
|
|
||||||
this.sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panels.get(0), panels.get(1));
|
this.sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panels.get(0), panels.get(1));
|
||||||
|
|
|
@ -50,8 +50,6 @@ public class FileViewer extends Viewer {
|
||||||
|
|
||||||
private static final long serialVersionUID = 6103372882168257164L;
|
private static final long serialVersionUID = 6103372882168257164L;
|
||||||
|
|
||||||
String name;
|
|
||||||
String container;
|
|
||||||
private byte[] contents;
|
private byte[] contents;
|
||||||
RSyntaxTextArea panelArea = new RSyntaxTextArea();
|
RSyntaxTextArea panelArea = new RSyntaxTextArea();
|
||||||
JPanel panel = new JPanel(new BorderLayout());
|
JPanel panel = new JPanel(new BorderLayout());
|
||||||
|
@ -194,7 +192,7 @@ public class FileViewer extends Viewer {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.contents = contents;
|
this.contents = contents;
|
||||||
this.setName(name);
|
updateName();
|
||||||
this.setLayout(new BorderLayout());
|
this.setLayout(new BorderLayout());
|
||||||
|
|
||||||
this.add(panel2, BorderLayout.CENTER);
|
this.add(panel2, BorderLayout.CENTER);
|
||||||
|
|
|
@ -205,6 +205,7 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
||||||
public final ButtonGroup panelGroup1 = new ButtonGroup();
|
public final ButtonGroup panelGroup1 = new ButtonGroup();
|
||||||
public final ButtonGroup panelGroup2 = new ButtonGroup();
|
public final ButtonGroup panelGroup2 = new ButtonGroup();
|
||||||
public final ButtonGroup panelGroup3 = 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 mntmSetOpitonalLibrary = new JMenuItem("Set Optional Library Folder");
|
||||||
private final JMenuItem mntmPingback = new JMenuItem("Pingback");
|
private final JMenuItem mntmPingback = new JMenuItem("Pingback");
|
||||||
private final JMenu mnFontSize = new JMenu("Font Size");
|
private final JMenu mnFontSize = new JMenu("Font Size");
|
||||||
|
@ -1225,10 +1226,25 @@ public class MainViewerGUI extends JFrame implements FileChangeNotifier {
|
||||||
fontSpinner.setSize(new Dimension(42, 20));
|
fontSpinner.setSize(new Dimension(42, 20));
|
||||||
fontSpinner.setModel(new SpinnerNumberModel(12, 1, null, 1));
|
fontSpinner.setModel(new SpinnerNumberModel(12, 1, null, 1));
|
||||||
viewMenu.add(mnFontSize);
|
viewMenu.add(mnFontSize);
|
||||||
|
|
||||||
mnFontSize.add(fontSpinner);
|
mnFontSize.add(fontSpinner);
|
||||||
|
|
||||||
|
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);
|
panelGroup1.setSelected(allDecompilersRev.get(panelGroup1).get(Decompiler.JDGUI).getModel(), true);
|
||||||
panelGroup2.setSelected(allDecompilersRev.get(panelGroup2).get(Decompiler.BYTECODE).getModel(), true);
|
panelGroup2.setSelected(allDecompilersRev.get(panelGroup2).get(Decompiler.BYTECODE).getModel(), true);
|
||||||
panelGroup3.setSelected(allDecompilersRev.get(panelGroup3).get(null).getModel(), true);
|
panelGroup3.setSelected(allDecompilersRev.get(panelGroup3).get(null).getModel(), true);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package the.bytecode.club.bytecodeviewer.gui;
|
package the.bytecode.club.bytecodeviewer.gui;
|
||||||
|
|
||||||
import org.objectweb.asm.tree.ClassNode;
|
import org.objectweb.asm.tree.ClassNode;
|
||||||
|
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
|
@ -26,7 +27,11 @@ public abstract class Viewer extends JPanel {
|
||||||
|
|
||||||
public ClassNode cn;
|
public ClassNode cn;
|
||||||
public String name;
|
public String name;
|
||||||
|
public String container;
|
||||||
|
|
||||||
private static final long serialVersionUID = -2965538493489119191L;
|
private static final long serialVersionUID = -2965538493489119191L;
|
||||||
|
|
||||||
|
public void updateName() {
|
||||||
|
this.setName(name + (BytecodeViewer.viewer.mnShowContainer.isSelected() ? "(" + container + ")" : ""));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,11 +86,11 @@ public class WorkPane extends VisibleComponent implements ActionListener {
|
||||||
final Component c = e.getChild();
|
final Component c = e.getChild();
|
||||||
if (c instanceof ClassViewer) {
|
if (c instanceof ClassViewer) {
|
||||||
ClassViewer cv = (ClassViewer) c;
|
ClassViewer cv = (ClassViewer) c;
|
||||||
workingOn.remove(cv.name + "$" + cv.name);
|
workingOn.remove(cv.container + "$" + cv.name);
|
||||||
}
|
}
|
||||||
if (c instanceof FileViewer) {
|
if (c instanceof FileViewer) {
|
||||||
FileViewer fv = (FileViewer) c;
|
FileViewer fv = (FileViewer) c;
|
||||||
workingOn.remove(fv.name + "$" + fv.name);
|
workingOn.remove(fv.container + "$" + fv.name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue