IconTextField: fire clear listener after text has been cleared

This would put the ge search panel into an invalid state where it could
no longer be interacted with
This commit is contained in:
Max Weber
2020-06-04 18:39:46 -06:00
committed by Adam
parent a1122ba141
commit b63466694f
3 changed files with 17 additions and 6 deletions

View File

@@ -98,7 +98,7 @@ class GrandExchangeSearchPanel extends JPanel
searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR);
searchBar.addActionListener(e -> executor.execute(() -> priceLookup(false)));
searchBar.addClearListener(e -> updateSearch());
searchBar.addClearListener(this::updateSearch);
searchItemsPanel.setLayout(new GridBagLayout());
searchItemsPanel.setBackground(ColorScheme.DARK_GRAY_COLOR);

View File

@@ -94,7 +94,7 @@ class SkillCalculator extends JPanel
searchBar.setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH - 20, 30));
searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR);
searchBar.addClearListener(e -> onSearch());
searchBar.addClearListener(this::onSearch);
searchBar.addKeyListener(e -> onSearch());
setLayout(new DynamicGridLayout(0, 1, 0, 5));

View File

@@ -29,7 +29,6 @@ package net.runelite.client.ui.components;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
@@ -38,6 +37,8 @@ import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
@@ -77,6 +78,8 @@ public class IconTextField extends JPanel
@Getter
private final DefaultListModel<String> suggestionListModel;
private final List<Runnable> clearListeners = new ArrayList<>();
public IconTextField()
{
setLayout(new BorderLayout());
@@ -124,7 +127,15 @@ public class IconTextField extends JPanel
clearButton = createRHSButton(ColorScheme.PROGRESS_ERROR_COLOR, Color.PINK);
clearButton.setText("×");
clearButton.addActionListener(evt -> setText(null));
clearButton.addActionListener(evt ->
{
setText(null);
for (Runnable l : clearListeners)
{
l.run();
}
});
suggestionListModel = new DefaultListModel<>();
suggestionListModel.addListDataListener(new ListDataListener()
@@ -318,9 +329,9 @@ public class IconTextField extends JPanel
textField.addKeyListener(keyListener);
}
public void addClearListener(Consumer<ActionEvent> actionEventConsumer)
public void addClearListener(Runnable clearListener)
{
clearButton.addActionListener(actionEventConsumer::accept);
clearListeners.add(clearListener);
}
public void addKeyListener(Consumer<KeyEvent> keyEventConsumer)