Skip to content

Commit 4a9276e

Browse files
yyyairglu0nskylot
authored
feat(gui): tabs UI improvements (PR #2419)
* Adds "Reveal In Explorer" tab, to focus on on the current class's tree node * Adds separators between tab categories, similar to how tabs look in VSCode/IntelliJ * Rename from reveal_in_explorer to reveal_in_tree * Minor fixes * Handle mouse presses on tabs better * use exist action name instead new one --------- Co-authored-by: glu0n <[email protected]> Co-authored-by: Skylot <[email protected]>
1 parent b78d3aa commit 4a9276e

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

jadx-gui/src/main/java/jadx/gui/ui/tab/TabComponent.java

+8
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,14 @@ private JPopupMenu createTabPopupMenu() {
230230
JMenuItem unbookmarkAll = new JMenuItem(NLS.str("tabs.unbookmark_all"));
231231
unbookmarkAll.addActionListener(e -> tabsController.unbookmarkAllTabs());
232232
menu.add(unbookmarkAll);
233+
menu.addSeparator();
234+
}
235+
236+
if (nodeFullName != null) {
237+
JMenuItem revealTab = new JMenuItem(NLS.str("menu.sync"));
238+
revealTab.addActionListener(e -> tabsController.getMainWindow().selectNodeInTree(getNode()));
239+
menu.add(revealTab);
240+
menu.addSeparator();
233241
}
234242

235243
JMenuItem closeTab = new JMenuItem(NLS.str("tabs.close"));

jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java

+15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.awt.event.FocusEvent;
77
import java.awt.event.FocusListener;
88
import java.awt.event.KeyEvent;
9+
import java.awt.event.MouseAdapter;
10+
import java.awt.event.MouseEvent;
911
import java.util.ArrayList;
1012
import java.util.HashMap;
1113
import java.util.LinkedHashSet;
@@ -58,6 +60,19 @@ public TabbedPane(MainWindow window, TabsController controller) {
5860
controller.addListener(this);
5961
setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
6062

63+
MouseAdapter clickAdapter = new MouseAdapter() {
64+
@Override
65+
public void mousePressed(MouseEvent e) {
66+
int tabIndex = indexAtLocation(e.getX(), e.getY());
67+
if (tabIndex == -1 || tabIndex > getTabCount()) {
68+
return;
69+
}
70+
TabComponent tab = (TabComponent) getTabComponentAt(tabIndex);
71+
tab.dispatchEvent(e);
72+
}
73+
};
74+
addMouseListener(clickAdapter);
75+
6176
addMouseWheelListener(event -> {
6277
if (dnd != null && dnd.isDragging()) {
6378
return;

0 commit comments

Comments
 (0)