From b18dabee151a99df1dd285703fa3400d1efc71b0 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 24 Nov 2013 17:40:56 +0400 Subject: [PATCH] gui: adjust tabbed ui appearance --- .../src/main/java/jadx/gui/MainWindow.java | 51 +++++++++++++----- .../src/main/java/jadx/gui/SearchBar.java | 5 ++ .../main/resources/icons-16/cross_grayed.png | Bin 0 -> 731 bytes 3 files changed, 42 insertions(+), 14 deletions(-) create mode 100644 jadx-gui/src/main/resources/icons-16/cross_grayed.png diff --git a/jadx-gui/src/main/java/jadx/gui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/MainWindow.java index d5dcaf67b..4231b8be3 100644 --- a/jadx-gui/src/main/java/jadx/gui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/MainWindow.java @@ -39,11 +39,14 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.io.File; import java.util.HashMap; import java.util.Map; @@ -67,6 +70,7 @@ public class MainWindow extends JFrame { private static final ImageIcon ICON_OPEN = Utils.openIcon("folder"); private static final ImageIcon ICON_SAVE_ALL = Utils.openIcon("disk_multiple"); private static final ImageIcon ICON_CLOSE = Utils.openIcon("cross"); + private static final ImageIcon ICON_CLOSE_INACTIVE = Utils.openIcon("cross_grayed"); private static final ImageIcon ICON_FLAT_PKG = Utils.openIcon("empty_logical_package_obj"); private static final ImageIcon ICON_SEARCH = Utils.openIcon("magnifier"); @@ -210,29 +214,48 @@ public class MainWindow extends JFrame { private Component makeTabComponent(final JClass cls, final Component comp) { String name = cls.getCls().getFullName(); - JPanel p = new JPanel(); - JLabel label = new JLabel(name); - p.add(label); - JButton button = new JButton(); - button.setIcon(ICON_CLOSE); - final int size = 12; - button.setPreferredSize(new Dimension(size, size)); - button.setToolTipText("Close"); + JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 3, 0)); + panel.setOpaque(false); + + final JLabel label = new JLabel(name); + label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 10)); + label.setIcon(cls.getIcon()); + + final JButton button = new JButton(); + button.setIcon(ICON_CLOSE_INACTIVE); + button.setRolloverIcon(ICON_CLOSE); + button.setRolloverEnabled(true); + button.setOpaque(false); button.setUI(new BasicButtonUI()); button.setContentAreaFilled(false); button.setFocusable(false); - button.setBorder(BorderFactory.createEtchedBorder()); + button.setBorder(null); button.setBorderPainted(false); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - tabbedPane.remove(comp); - openTabs.remove(cls); + closeCodeTab(cls, comp); } }); - p.add(button); - p.doLayout(); - return p; + + panel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getButton() == MouseEvent.BUTTON2) { + closeCodeTab(cls, comp); + } + } + }); + + panel.add(label); + panel.add(button); + panel.setBorder(BorderFactory.createEmptyBorder(4, 0, 0, 0)); + return panel; + } + + private void closeCodeTab(JClass cls, Component comp) { + tabbedPane.remove(comp); + openTabs.remove(cls); } private void scrollToLine(JTextArea textArea, int line) { diff --git a/jadx-gui/src/main/java/jadx/gui/SearchBar.java b/jadx-gui/src/main/java/jadx/gui/SearchBar.java index f6a3e2d70..6478088b7 100644 --- a/jadx-gui/src/main/java/jadx/gui/SearchBar.java +++ b/jadx-gui/src/main/java/jadx/gui/SearchBar.java @@ -21,6 +21,8 @@ import org.fife.ui.rtextarea.SearchContext; import org.fife.ui.rtextarea.SearchEngine; public class SearchBar extends JToolBar { + private static final long serialVersionUID = 1836871286618633003L; + private static final Color COLOR_BG_ERROR = new Color(0xFFDFDE); private static final Color COLOR_BG_WARN = new Color(0xFFFDD9); private static final Color COLOR_BG_NORMAL = new Color(0xFFFFFF); @@ -84,6 +86,7 @@ public class SearchBar extends JToolBar { search(-1); } }); + prevButton.setBorderPainted(false); add(prevButton); JButton nextButton = new JButton(NLS.str("search.next")); @@ -94,6 +97,7 @@ public class SearchBar extends JToolBar { search(1); } }); + nextButton.setBorderPainted(false); add(nextButton); markAllCB = new JCheckBox(NLS.str("search.mark_all")); @@ -120,6 +124,7 @@ public class SearchBar extends JToolBar { toggle(); } }); + closeButton.setBorderPainted(false); add(closeButton); setFloatable(false); diff --git a/jadx-gui/src/main/resources/icons-16/cross_grayed.png b/jadx-gui/src/main/resources/icons-16/cross_grayed.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe76ff6d8daba9b76a1402d983b9ff78a161c86 GIT binary patch literal 731 zcmV<10wn#3P)pc9z|8oUvpGGR zIewQohMmQwb32PmK2E{cnFqd3lIt6}{G}sK9v4H(?<_>HH8+34WOI7fhm?Wkx(lS# z)aRSG&jWy9=9XBdQeb8zwHm0=80^pI)&XGi{){gS8Cb51R7VHmFhpG5yG5$GB$ydL z79Kmy9LrQn8g2$j6hl?3phja*Cj>|lSgs2@n?+P8pjIjqQIZ~7exd|30|2(><{c&- zNyj!!&xNW+XjCd-mB92|*jW#8SVXi}CMM+#EiczwEga$7!$%GgMW*8zc4sG;2+SJL zjJR0(BUTM>Xl12-B18b_zn8D;B=PEphgv5J&D{{q-4M_kQK_hPv)(2?VE_O+Nd|-v z5}Lu3011JKASEOzJ@EJYHiIvB?)m@%({aE=uzGu8_Vt2^;B<7sG)3@!Vxn!ttqeAD zd0!YtV5QTrT^CWQgm}M9q?B+wdt~Q}4z7Qg?Y#X+l zMpP&wE*FUud90LMDHiBpdmCO)7u@b{Se6m2jg9#LU;+Rs)n`~103a%q5$zR8C+uB# z{c+4%jkRXTT9+ei8z{05DdlTAh1)Kvfg N002ovPDHLkV1nATH#7hM literal 0 HcmV?d00001