diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java index 37b4d8e9f9..5f1d4d4867 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java @@ -39,13 +39,19 @@ import java.util.List; import java.util.function.Predicate; import javax.swing.BorderFactory; import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; import javax.swing.ImageIcon; +import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import javax.swing.JRadioButton; +import javax.swing.JToggleButton; import javax.swing.border.EmptyBorder; +import javax.swing.plaf.basic.BasicButtonUI; +import javax.swing.plaf.basic.BasicToggleButtonUI; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.FontManager; @@ -98,11 +104,11 @@ class LootTrackerPanel extends PluginPanel // Details and navigation private final JPanel actionsContainer = new JPanel(); private final JLabel detailsTitle = new JLabel(); - private final JLabel backBtn = new JLabel(); - private final JLabel viewHiddenBtn = new JLabel(); - private final JLabel singleLootBtn = new JLabel(); - private final JLabel groupedLootBtn = new JLabel(); - private final JLabel collapseBtn = new JLabel(); + private final JButton backBtn = new JButton(); + private final JToggleButton viewHiddenBtn = new JToggleButton(); + private final JRadioButton singleLootBtn = new JRadioButton(); + private final JRadioButton groupedLootBtn = new JRadioButton(); + private final JButton collapseBtn = new JButton(); // Aggregate of all kills private final List aggregateRecords = new ArrayList<>(); @@ -174,121 +180,64 @@ class LootTrackerPanel extends PluginPanel final JPanel viewControls = new JPanel(new GridLayout(1, 3, 10, 0)); viewControls.setBackground(ColorScheme.DARKER_GRAY_COLOR); + SwingUtil.removeButtonDecorations(collapseBtn); collapseBtn.setIcon(EXPAND_ICON); - collapseBtn.addMouseListener(new MouseAdapter() - { - @Override - public void mousePressed(MouseEvent e) - { - changeCollapse(); - } - }); - - singleLootBtn.setIcon(SINGLE_LOOT_VIEW); - singleLootBtn.setToolTipText("Show each kill separately"); - singleLootBtn.addMouseListener(new MouseAdapter() - { - @Override - public void mousePressed(MouseEvent mouseEvent) - { - changeGrouping(false); - } - - @Override - public void mouseExited(MouseEvent mouseEvent) - { - singleLootBtn.setIcon(groupLoot ? SINGLE_LOOT_VIEW_FADED : SINGLE_LOOT_VIEW); - } - - @Override - public void mouseEntered(MouseEvent mouseEvent) - { - singleLootBtn.setIcon(groupLoot ? SINGLE_LOOT_VIEW_HOVER : SINGLE_LOOT_VIEW); - } - }); - - groupedLootBtn.setIcon(GROUPED_LOOT_VIEW); - groupedLootBtn.setToolTipText("Group loot by source"); - groupedLootBtn.addMouseListener(new MouseAdapter() - { - @Override - public void mousePressed(MouseEvent mouseEvent) - { - changeGrouping(true); - } - - @Override - public void mouseExited(MouseEvent mouseEvent) - { - groupedLootBtn.setIcon(groupLoot ? GROUPED_LOOT_VIEW : GROUPED_LOOT_VIEW_FADED); - } - - @Override - public void mouseEntered(MouseEvent mouseEvent) - { - groupedLootBtn.setIcon(groupLoot ? GROUPED_LOOT_VIEW : GROUPED_LOOT_VIEW_HOVER); - } - }); - - viewHiddenBtn.setIcon(VISIBLE_ICON); - viewHiddenBtn.setToolTipText("Show ignored items"); - viewHiddenBtn.addMouseListener(new MouseAdapter() - { - @Override - public void mousePressed(MouseEvent mouseEvent) - { - changeItemHiding(!hideIgnoredItems); - } - - @Override - public void mouseExited(MouseEvent mouseEvent) - { - viewHiddenBtn.setIcon(hideIgnoredItems ? INVISIBLE_ICON : VISIBLE_ICON); - } - - @Override - public void mouseEntered(MouseEvent mouseEvent) - { - viewHiddenBtn.setIcon(hideIgnoredItems ? INVISIBLE_ICON_HOVER : VISIBLE_ICON_HOVER); - } - }); - + collapseBtn.setSelectedIcon(COLLAPSE_ICON); + SwingUtil.addModalTooltip(collapseBtn, "Collapse All", "Un-Collapse All"); + collapseBtn.setBackground(ColorScheme.DARKER_GRAY_COLOR); + collapseBtn.setUI(new BasicButtonUI()); // substance breaks the layout + collapseBtn.addActionListener(ev -> changeCollapse()); viewControls.add(collapseBtn); + + SwingUtil.removeButtonDecorations(singleLootBtn); + singleLootBtn.setIcon(SINGLE_LOOT_VIEW_FADED); + singleLootBtn.setRolloverIcon(SINGLE_LOOT_VIEW_HOVER); + singleLootBtn.setSelectedIcon(SINGLE_LOOT_VIEW); + singleLootBtn.setToolTipText("Show each kill separately"); + singleLootBtn.addActionListener(e -> changeGrouping(false)); + + SwingUtil.removeButtonDecorations(groupedLootBtn); + groupedLootBtn.setIcon(GROUPED_LOOT_VIEW_FADED); + groupedLootBtn.setRolloverIcon(GROUPED_LOOT_VIEW_HOVER); + groupedLootBtn.setSelectedIcon(GROUPED_LOOT_VIEW); + groupedLootBtn.setToolTipText("Group loot by source"); + groupedLootBtn.addActionListener(e -> changeGrouping(true)); + + ButtonGroup groupSingleGroup = new ButtonGroup(); + groupSingleGroup.add(singleLootBtn); + groupSingleGroup.add(groupedLootBtn); + viewControls.add(groupedLootBtn); viewControls.add(singleLootBtn); - viewControls.add(viewHiddenBtn); changeGrouping(true); + + SwingUtil.removeButtonDecorations(viewHiddenBtn); + viewHiddenBtn.setIconTextGap(0); + viewHiddenBtn.setIcon(VISIBLE_ICON); + viewHiddenBtn.setRolloverIcon(INVISIBLE_ICON_HOVER); + viewHiddenBtn.setSelectedIcon(INVISIBLE_ICON); + viewHiddenBtn.setRolloverSelectedIcon(VISIBLE_ICON_HOVER); + viewHiddenBtn.setBackground(ColorScheme.DARKER_GRAY_COLOR); + viewHiddenBtn.setUI(new BasicToggleButtonUI()); // substance breaks the layout and the pressed icon + SwingUtil.addModalTooltip(viewHiddenBtn, "Show ignored items", "Hide ignored items"); changeItemHiding(true); + viewControls.add(viewHiddenBtn); final JPanel leftTitleContainer = new JPanel(new BorderLayout(5, 0)); leftTitleContainer.setBackground(ColorScheme.DARKER_GRAY_COLOR); detailsTitle.setForeground(Color.WHITE); + SwingUtil.removeButtonDecorations(backBtn); backBtn.setIcon(BACK_ARROW_ICON); + backBtn.setRolloverIcon(BACK_ARROW_ICON_HOVER); backBtn.setVisible(false); - backBtn.addMouseListener(new MouseAdapter() + backBtn.addActionListener(ev -> { - @Override - public void mousePressed(MouseEvent mouseEvent) - { - currentView = null; - backBtn.setVisible(false); - detailsTitle.setText(""); - rebuild(); - } - - @Override - public void mouseExited(MouseEvent mouseEvent) - { - backBtn.setIcon(BACK_ARROW_ICON); - } - - @Override - public void mouseEntered(MouseEvent mouseEvent) - { - backBtn.setIcon(BACK_ARROW_ICON_HOVER); - } + currentView = null; + backBtn.setVisible(false); + detailsTitle.setText(""); + rebuild(); }); leftTitleContainer.add(backBtn, BorderLayout.WEST); @@ -368,16 +317,7 @@ class LootTrackerPanel extends PluginPanel void updateCollapseText() { - if (isAllCollapsed()) - { - collapseBtn.setToolTipText("Un-Collapse All"); - collapseBtn.setIcon(COLLAPSE_ICON); - } - else - { - collapseBtn.setToolTipText("Collapse All"); - collapseBtn.setIcon(EXPAND_ICON); - } + collapseBtn.setSelected(isAllCollapsed()); } private boolean isAllCollapsed() @@ -428,9 +368,8 @@ class LootTrackerPanel extends PluginPanel private void changeGrouping(boolean group) { groupLoot = group; + (group ? groupedLootBtn : singleLootBtn).setSelected(true); rebuild(); - groupedLootBtn.setIcon(group ? GROUPED_LOOT_VIEW : GROUPED_LOOT_VIEW_FADED); - singleLootBtn.setIcon(group ? SINGLE_LOOT_VIEW_FADED : SINGLE_LOOT_VIEW); } /** @@ -441,8 +380,8 @@ class LootTrackerPanel extends PluginPanel private void changeItemHiding(boolean hide) { hideIgnoredItems = hide; + viewHiddenBtn.setSelected(hide); rebuild(); - viewHiddenBtn.setIcon(hideIgnoredItems ? VISIBLE_ICON : INVISIBLE_ICON); } /**