Merge pull request #1002 from sethtroll/addhiscorefeatures

hiscore panel: add qol features
This commit is contained in:
Adam
2018-03-19 18:37:18 -04:00
committed by GitHub
7 changed files with 54 additions and 7 deletions

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.hiscore; package net.runelite.client.plugins.hiscore;
import java.awt.event.MouseAdapter;
import static net.runelite.http.api.hiscore.HiscoreSkill.*; import static net.runelite.http.api.hiscore.HiscoreSkill.*;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@@ -94,6 +95,8 @@ public class HiscorePanel extends PluginPanel
private final ButtonGroup endpointButtonGroup = new ButtonGroup(); private final ButtonGroup endpointButtonGroup = new ButtonGroup();
private final JTextArea details = new JTextArea(); private final JTextArea details = new JTextArea();
private List<JToggleButton> endpointButtons;
private final HiscoreClient client = new HiscoreClient(); private final HiscoreClient client = new HiscoreClient();
private HiscoreResult result; private HiscoreResult result;
@@ -217,30 +220,33 @@ public class HiscorePanel extends PluginPanel
JPanel endpointPanel = new JPanel(); JPanel endpointPanel = new JPanel();
endpointPanel.setBorder(subPanelBorder); endpointPanel.setBorder(subPanelBorder);
List<JToggleButton> endpointButtons = new ArrayList<>(); endpointButtons = new ArrayList<>();
for (HiscoreEndpoint endpoint : HiscoreEndpoint.values()) for (HiscoreEndpoint endpoint : HiscoreEndpoint.values())
{ {
try try
{ {
BufferedImage iconImage; BufferedImage iconImage;
BufferedImage selectedImage;
synchronized (ImageIO.class) synchronized (ImageIO.class)
{ {
iconImage = ImageIO.read(HiscorePanel.class.getResourceAsStream( iconImage = ImageIO.read(HiscorePanel.class.getResourceAsStream(
endpoint.name().toLowerCase() + ".png")); endpoint.name().toLowerCase() + ".png"));
selectedImage = ImageIO.read(HiscorePanel.class.getResourceAsStream(
endpoint.name().toLowerCase() + "_selected.png"));
} }
JToggleButton button = new JToggleButton(); JToggleButton button = new JToggleButton();
button.setIcon(new ImageIcon(iconImage)); button.setIcon(new ImageIcon(iconImage));
button.setSelectedIcon(new ImageIcon(selectedImage));
button.setPreferredSize(new Dimension(24, 24)); button.setPreferredSize(new Dimension(24, 24));
button.setBackground(Color.WHITE); button.setBackground(Color.WHITE);
button.setFocusPainted(false); button.setFocusPainted(false);
button.setActionCommand(endpoint.name()); button.setActionCommand(endpoint.name());
button.setToolTipText(endpoint.getName() + " Hiscores"); button.setToolTipText(endpoint.getName() + " Hiscores");
button.addActionListener((e -> executor.execute(this::lookup))); button.addActionListener((e -> executor.execute(this::lookup)));
button.addMouseListener(new MouseAdapter()
{
@Override
public void mouseReleased(MouseEvent e)
{
updateButtons();
}
});
endpointButtons.add(button); endpointButtons.add(button);
endpointButtonGroup.add(button); endpointButtonGroup.add(button);
endpointPanel.add(button); endpointPanel.add(button);
@@ -252,6 +258,7 @@ public class HiscorePanel extends PluginPanel
} }
endpointButtons.get(0).setSelected(true); endpointButtons.get(0).setSelected(true);
endpointButtons.get(0).setBackground(Color.CYAN);
c.gridx = 0; c.gridx = 0;
c.gridy = 5; c.gridy = 5;
@@ -318,7 +325,7 @@ public class HiscorePanel extends PluginPanel
+ "Rank: " + rank; + "Rank: " + rank;
break; break;
} }
default: case "Overall":
{ {
Skill requestedSkill = result.getSkill(skill); Skill requestedSkill = result.getSkill(skill);
String rank = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getRank()); String rank = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getRank());
@@ -328,6 +335,27 @@ public class HiscorePanel extends PluginPanel
+ "Experience: " + exp; + "Experience: " + exp;
break; break;
} }
default:
{
Skill requestedSkill = result.getSkill(skill);
String rank = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getRank());
String exp = (requestedSkill.getRank() == -1) ? "Unranked" : NUMBER_FORMATTER.format(requestedSkill.getExperience());
String remainingXp;
if (requestedSkill.getRank() == -1)
{
remainingXp = "Unranked";
}
else
{
int currentLevel = Experience.getLevelForXp((int) requestedSkill.getExperience());
remainingXp = (currentLevel + 1 <= Experience.MAX_VIRT_LEVEL) ? NUMBER_FORMATTER.format(Experience.getXpForLevel(currentLevel + 1) - requestedSkill.getExperience()) : "0";
}
text = "Skill: " + skillName + System.lineSeparator()
+ "Rank: " + rank + System.lineSeparator()
+ "Experience: " + exp + System.lineSeparator()
+ "Remaining XP: " + remainingXp;
break;
}
} }
details.setFont(UIManager.getFont("Label.font")); details.setFont(UIManager.getFont("Label.font"));
@@ -395,6 +423,7 @@ public class HiscorePanel extends PluginPanel
private void lookup() private void lookup()
{ {
String lookup = input.getText(); String lookup = input.getText();
details.setText("Loading...");
lookup = sanitize(lookup); lookup = sanitize(lookup);
@@ -418,6 +447,7 @@ public class HiscorePanel extends PluginPanel
catch (IOException ex) catch (IOException ex)
{ {
log.warn("Error fetching Hiscore data " + ex.getMessage()); log.warn("Error fetching Hiscore data " + ex.getMessage());
details.setText("Error fetching Hiscore data");
return; return;
} }
@@ -457,4 +487,21 @@ public class HiscorePanel extends PluginPanel
{ {
return lookup.replace('\u00A0', ' '); return lookup.replace('\u00A0', ' ');
} }
private void updateButtons()
{
for (JToggleButton button : endpointButtons)
{
Color color;
if (button.isSelected())
{
color = Color.CYAN;
}
else
{
color = Color.WHITE;
}
button.setBackground(color);
}
}
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B