Simple xp tracker mode toggle (#789)

This commit is contained in:
sdburns1998
2019-06-28 08:36:06 +02:00
committed by James
parent 64cdc9e696
commit 2f36af4bf1

View File

@@ -28,6 +28,9 @@ package net.runelite.client.plugins.xptracker;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@@ -79,12 +82,13 @@ class XpInfoBox extends JPanel
/* The tracker's wrapping container */ /* The tracker's wrapping container */
private final JPanel container = new JPanel(); private final JPanel container = new JPanel();
/* Contains the skill icon and the stats panel */ /* Contains the skill icon */
private final JPanel headerPanel = new JPanel(); private final JPanel skillWrapper = new JPanel();
/* Contains all the skill information (exp gained, per hour, etc) */ /* Contains all the skill information (exp gained, per hour, etc) */
private final JPanel statsPanel = new JPanel(); private final JPanel statsPanel = new JPanel();
private final JPanel progressWrapper = new JPanel();
private final ProgressBar progressBar = new ProgressBar(); private final ProgressBar progressBar = new ProgressBar();
private final JLabel expGained = new JLabel(); private final JLabel expGained = new JLabel();
@@ -98,6 +102,14 @@ class XpInfoBox extends JPanel
private boolean paused = false; private boolean paused = false;
private Style style = Style.FULL;
private enum Style
{
FULL,
SIMPLE
}
XpInfoBox(XpTrackerPlugin xpTrackerPlugin, XpTrackerConfig xpTrackerConfig, Client client, JPanel panel, Skill skill, SkillIconManager iconManager) XpInfoBox(XpTrackerPlugin xpTrackerPlugin, XpTrackerConfig xpTrackerConfig, Client client, JPanel panel, Skill skill, SkillIconManager iconManager)
{ {
this.xpTrackerConfig = xpTrackerConfig; this.xpTrackerConfig = xpTrackerConfig;
@@ -134,6 +146,10 @@ class XpInfoBox extends JPanel
popupMenu.add(pauseSkill); popupMenu.add(pauseSkill);
popupMenu.add(canvasItem); popupMenu.add(canvasItem);
skillWrapper.setBackground(ColorScheme.DARKER_GRAY_COLOR);
skillWrapper.setLayout(new BorderLayout());
skillWrapper.setBorder(new EmptyBorder(0, 5, 0, 0));
canvasItem.addActionListener(e -> canvasItem.addActionListener(e ->
{ {
if (canvasItem.getText().equals(REMOVE_STATE)) if (canvasItem.getText().equals(REMOVE_STATE))
@@ -151,14 +167,13 @@ class XpInfoBox extends JPanel
JLabel skillIcon = new JLabel(new ImageIcon(iconManager.getSkillImage(skill))); JLabel skillIcon = new JLabel(new ImageIcon(iconManager.getSkillImage(skill)));
skillIcon.setHorizontalAlignment(SwingConstants.CENTER); skillIcon.setHorizontalAlignment(SwingConstants.CENTER);
skillIcon.setVerticalAlignment(SwingConstants.CENTER); skillIcon.setVerticalAlignment(SwingConstants.CENTER);
skillIcon.setPreferredSize(new Dimension(35, 35)); skillIcon.setPreferredSize(new Dimension(30, 30));
headerPanel.setBackground(ColorScheme.DARKER_GRAY_COLOR); skillWrapper.add(skillIcon, BorderLayout.NORTH);
headerPanel.setLayout(new BorderLayout());
statsPanel.setLayout(new DynamicGridLayout(2, 2)); statsPanel.setLayout(new DynamicGridLayout(2, 2));
statsPanel.setBackground(ColorScheme.DARKER_GRAY_COLOR); statsPanel.setBackground(ColorScheme.DARKER_GRAY_COLOR);
statsPanel.setBorder(new EmptyBorder(9, 2, 9, 2)); statsPanel.setBorder(new EmptyBorder(6, 5, 0, 2));
expGained.setFont(FontManager.getRunescapeSmallFont()); expGained.setFont(FontManager.getRunescapeSmallFont());
expHour.setFont(FontManager.getRunescapeSmallFont()); expHour.setFont(FontManager.getRunescapeSmallFont());
@@ -170,13 +185,8 @@ class XpInfoBox extends JPanel
statsPanel.add(expHour); statsPanel.add(expHour);
statsPanel.add(actionsLeft); statsPanel.add(actionsLeft);
headerPanel.add(skillIcon, BorderLayout.WEST);
headerPanel.add(statsPanel, BorderLayout.CENTER);
JPanel progressWrapper = new JPanel();
progressWrapper.setBackground(ColorScheme.DARKER_GRAY_COLOR); progressWrapper.setBackground(ColorScheme.DARKER_GRAY_COLOR);
progressWrapper.setLayout(new BorderLayout()); progressWrapper.setLayout(new BorderLayout());
progressWrapper.setBorder(new EmptyBorder(0, 7, 7, 7));
progressBar.setMaximumValue(100); progressBar.setMaximumValue(100);
progressBar.setBackground(new Color(61, 56, 49)); progressBar.setBackground(new Color(61, 56, 49));
@@ -185,15 +195,48 @@ class XpInfoBox extends JPanel
progressWrapper.add(progressBar, BorderLayout.NORTH); progressWrapper.add(progressBar, BorderLayout.NORTH);
container.add(headerPanel, BorderLayout.NORTH);
container.add(progressWrapper, BorderLayout.SOUTH);
container.setComponentPopupMenu(popupMenu); container.setComponentPopupMenu(popupMenu);
progressBar.setComponentPopupMenu(popupMenu); progressBar.setComponentPopupMenu(popupMenu);
MouseListener mouseListener = new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(e))
{
toggleStyle();
}
}
};
container.addMouseListener(mouseListener);
progressBar.addMouseListener(mouseListener);
add(container, BorderLayout.NORTH); add(container, BorderLayout.NORTH);
} }
void setStyle(Style style)
{
container.removeAll();
if (style == Style.SIMPLE)
{
progressWrapper.setBorder(new EmptyBorder(7, 7, 7, 7));
container.add(skillWrapper, BorderLayout.WEST);
container.add(progressWrapper, BorderLayout.CENTER);
}
else
{
progressWrapper.setBorder(new EmptyBorder(4, 7, 7, 7));
container.add(skillWrapper, BorderLayout.WEST);
container.add(statsPanel, BorderLayout.CENTER);
container.add(progressWrapper, BorderLayout.SOUTH);
}
panel.revalidate();
this.style = style;
}
void reset() void reset()
{ {
canvasItem.setText(ADD_STATE); canvasItem.setText(ADD_STATE);
@@ -214,7 +257,7 @@ class XpInfoBox extends JPanel
if (getParent() != panel) if (getParent() != panel)
{ {
panel.add(this); panel.add(this);
panel.revalidate(); setStyle(style);
} }
paused = skillPaused; paused = skillPaused;
@@ -284,6 +327,18 @@ class XpInfoBox extends JPanel
expHour.setText(htmlLabel("XP/Hour: ", xpSnapshotSingle.getXpPerHour())); expHour.setText(htmlLabel("XP/Hour: ", xpSnapshotSingle.getXpPerHour()));
} }
private void toggleStyle()
{
if (style == Style.FULL)
{
setStyle(Style.SIMPLE);
}
else
{
setStyle(Style.FULL);
}
}
static String htmlLabel(String key, int value) static String htmlLabel(String key, int value)
{ {
String valueStr = StackFormatter.quantityToRSDecimalStack(value, true); String valueStr = StackFormatter.quantityToRSDecimalStack(value, true);