Add searchbar suppor to Skill Calculator

Fixes #2976

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
rbbi
2018-09-24 13:45:26 +02:00
committed by Tomas Slusny
parent 7426babd3f
commit 8d8c8e4754
2 changed files with 37 additions and 1 deletions

View File

@@ -49,6 +49,8 @@ import net.runelite.client.plugins.skillcalculator.beans.SkillDataEntry;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.DynamicGridLayout;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.PluginPanel;
import net.runelite.client.ui.components.IconTextField;
class SkillCalculator extends JPanel
{
@@ -64,6 +66,7 @@ class SkillCalculator extends JPanel
private final UICombinedActionSlot combinedActionSlot;
private final ArrayList<UIActionSlot> combinedActionSlots = new ArrayList<>();
private final List<JCheckBox> bonusCheckBoxes = new ArrayList<>();
private final IconTextField searchBar = new IconTextField();
private SkillData skillData;
private int currentLevel = 1;
@@ -81,6 +84,12 @@ class SkillCalculator extends JPanel
combinedActionSlot = new UICombinedActionSlot(spriteManager);
searchBar.setIcon(IconTextField.Icon.SEARCH);
searchBar.setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH - 20, 30));
searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR);
searchBar.addKeyListener(e -> onSearch());
setLayout(new DynamicGridLayout(0, 1, 0, 5));
// Register listeners on the input fields and then move on to the next related text field
@@ -123,6 +132,9 @@ class SkillCalculator extends JPanel
// Add the combined action slot.
add(combinedActionSlot);
// Add the search bar
add(searchBar);
// Create action slots for the skill actions.
renderActionSlots();
@@ -370,4 +382,28 @@ class SkillCalculator extends JPanel
{
return Math.min(MAX_XP, Math.max(0, input));
}
private void onSearch()
{
//only show slots that match our search text
uiActionSlots.forEach(slot ->
{
if (slotContainsText(slot, searchBar.getText()))
{
super.add(slot);
}
else
{
super.remove(slot);
}
revalidate();
});
}
private boolean slotContainsText(UIActionSlot slot, String text)
{
return slot.getAction().getName().toLowerCase().contains(text.toLowerCase());
}
}

View File

@@ -134,4 +134,4 @@ class UICalculatorInputArea extends JPanel
return uiInput.getTextField();
}
}
}