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