Commit 4a63f522 authored by Skylot's avatar Skylot

gui: fix ui tabs handling

parent c416f77e
...@@ -80,7 +80,7 @@ public class MainWindow extends JFrame { ...@@ -80,7 +80,7 @@ public class MainWindow extends JFrame {
private JTree tree; private JTree tree;
private final JTabbedPane tabbedPane = new JTabbedPane(); private final JTabbedPane tabbedPane = new JTabbedPane();
private DefaultTreeModel treeModel; private DefaultTreeModel treeModel;
private Map<JClass, Integer> openTabs = new HashMap<JClass, Integer>(); private Map<JClass, Component> openTabs = new HashMap<JClass, Component>();
public MainWindow(JadxWrapper wrapper) { public MainWindow(JadxWrapper wrapper) {
this.wrapper = wrapper; this.wrapper = wrapper;
...@@ -192,27 +192,24 @@ public class MainWindow extends JFrame { ...@@ -192,27 +192,24 @@ public class MainWindow extends JFrame {
} }
private void showCode(JClass cls, int line) { private void showCode(JClass cls, int line) {
JPanel panel; JPanel panel = (JPanel) openTabs.get(cls);
if (openTabs.containsKey(cls)) { if (panel != null) {
int id = openTabs.get(cls); panel = (JPanel) openTabs.get(cls);
panel = (JPanel) tabbedPane.getComponentAt(id); tabbedPane.setSelectedComponent(panel);
tabbedPane.setSelectedIndex(id);
} else { } else {
panel = newCodePane(); panel = newCodePane();
tabbedPane.add(panel); tabbedPane.add(panel);
int id = tabbedPane.getTabCount() - 1; openTabs.put(cls, panel);
openTabs.put(cls, id); int id = tabbedPane.indexOfComponent(panel);
tabbedPane.setTabComponentAt(id, makeTabComponent(cls, panel));
tabbedPane.setSelectedIndex(id); tabbedPane.setSelectedIndex(id);
tabbedPane.setTabComponentAt(id, makeTabComponent(cls, panel, id));
}
if (panel != null) {
JTextArea textArea = getTextArea(panel);
textArea.setText(cls.getCode());
scrollToLine(textArea, line);
} }
JTextArea textArea = getTextArea(panel);
textArea.setText(cls.getCode());
scrollToLine(textArea, line);
} }
private Component makeTabComponent(final JClass cls, final Component comp, final int id) { private Component makeTabComponent(final JClass cls, final Component comp) {
String name = cls.getCls().getFullName(); String name = cls.getCls().getFullName();
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 0)); JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 0));
panel.setOpaque(false); panel.setOpaque(false);
...@@ -244,7 +241,8 @@ public class MainWindow extends JFrame { ...@@ -244,7 +241,8 @@ public class MainWindow extends JFrame {
if (e.getButton() == MouseEvent.BUTTON2) { if (e.getButton() == MouseEvent.BUTTON2) {
closeCodeTab(cls, comp); closeCodeTab(cls, comp);
} else { } else {
tabbedPane.setSelectedIndex(id); // TODO: make correct event delegation to tabbed pane
tabbedPane.setSelectedComponent(comp);
} }
} }
}); });
...@@ -261,8 +259,8 @@ public class MainWindow extends JFrame { ...@@ -261,8 +259,8 @@ public class MainWindow extends JFrame {
} }
private void scrollToLine(JTextArea textArea, int line) { private void scrollToLine(JTextArea textArea, int line) {
if (line < 2) { if (line == 0) {
return; line = 1;
} }
try { try {
textArea.setCaretPosition(textArea.getLineStartOffset(line - 1)); textArea.setCaretPosition(textArea.getLineStartOffset(line - 1));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment