Skip to content

Commit 8f5f4f5

Browse files
committed
[LibManager] Restore "search on type" with 1 second grace period
1 parent f3d521d commit 8f5f4f5

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

app/src/cc/arduino/contributions/ui/FilterJTextField.java

+32
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,21 @@ public class FilterJTextField extends JTextField {
4343
private final String filterHint;
4444

4545
private boolean showingHint;
46+
private Timer timer;
4647

4748
public FilterJTextField(String hint) {
4849
super(hint);
4950
filterHint = hint;
5051

5152
showingHint = true;
5253
updateStyle();
54+
timer = new Timer(1000, new ActionListener() {
55+
@Override
56+
public void actionPerformed(ActionEvent e) {
57+
applyFilter();
58+
timer.stop();
59+
}
60+
});
5361

5462
addFocusListener(new FocusListener() {
5563
public void focusLost(FocusEvent focusEvent) {
@@ -68,14 +76,38 @@ public void focusGained(FocusEvent focusEvent) {
6876
}
6977
});
7078

79+
getDocument().addDocumentListener(new DocumentListener() {
80+
public void removeUpdate(DocumentEvent e) {
81+
spawnTimer();
82+
}
83+
84+
public void insertUpdate(DocumentEvent e) {
85+
spawnTimer();
86+
}
87+
88+
public void changedUpdate(DocumentEvent e) {
89+
90+
}
91+
});
92+
7193
addActionListener(new ActionListener() {
7294
@Override
7395
public void actionPerformed(ActionEvent e) {
96+
if (timer.isRunning()) {
97+
timer.stop();
98+
}
7499
applyFilter();
75100
}
76101
});
77102
}
78103

104+
private void spawnTimer() {
105+
if (timer.isRunning()) {
106+
timer.stop();
107+
}
108+
timer.start();
109+
}
110+
79111
public void applyFilter() {
80112
String filter = showingHint ? "" : getText();
81113
filter = filter.toLowerCase();

0 commit comments

Comments
 (0)