Skip to content

Commit e1cf87f

Browse files
frauzufallctrueden
authored andcommitted
searchbar: default message
1 parent 3b535f1 commit e1cf87f

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/main/java/org/scijava/ui/swing/search/SwingSearchBar.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@
3737
import java.awt.Font;
3838
import java.awt.GridLayout;
3939
import java.awt.Window;
40+
import java.awt.event.ActionListener;
4041
import java.awt.event.FocusEvent;
4142
import java.awt.event.FocusListener;
4243
import java.awt.event.KeyAdapter;
4344
import java.awt.event.KeyEvent;
45+
import java.beans.PropertyChangeListener;
4446
import java.net.URL;
4547
import java.util.Collections;
4648
import java.util.Comparator;
@@ -119,20 +121,23 @@ public class SwingSearchBar extends JTextField {
119121
private final Window window;
120122
private final Container parent;
121123
private SwingSearchPanel searchPanel;
124+
125+
private DocumentListener documentListener;
122126

123127
public SwingSearchBar(final Context context, final Window window, final Container parent) {
124128
super(DEFAULT_MESSAGE, 12);
125129
this.parent = parent;
126130
this.window = window;
127131
context.inject(this);
132+
setText(DEFAULT_MESSAGE);
128133

129134
setBorder(BorderFactory.createCompoundBorder(
130135
BorderFactory.createLineBorder(new Color(237,237,237), 5),
131136
BorderFactory.createEmptyBorder(5,5,5,5)));
132137

133138
addActionListener(e -> run());
134139
addKeyListener(new SearchBarKeyAdapter());
135-
getDocument().addDocumentListener(new DocumentListener() {
140+
documentListener = new DocumentListener() {
136141

137142
@Override
138143
public void insertUpdate(final DocumentEvent e) {
@@ -149,12 +154,14 @@ public void changedUpdate(final DocumentEvent e) {
149154
search();
150155
}
151156

152-
});
157+
};
158+
getDocument().addDocumentListener(documentListener);
153159
addFocusListener(new FocusListener() {
154160

155161
@Override
156162
public void focusGained(final FocusEvent e) {
157163
if (DEFAULT_MESSAGE.equals(getText())) setText("");
164+
setForeground(new Color(0,0,0));
158165
}
159166

160167
@Override
@@ -213,8 +220,8 @@ private void search() {
213220
parent.add(searchPanel, "south,height 300!", getParent().getComponentCount()-1);
214221
parent.doLayout();
215222
parent.revalidate();
216-
parent.repaint();
217223
window.pack();
224+
parent.repaint();
218225
threadService.queue(() -> {
219226
searchPanel.setVisible(true);
220227
try { Thread.sleep(100); }
@@ -235,19 +242,25 @@ private void run() {
235242

236243
private void reset() {
237244
assertDispatchThread();
238-
if (searchPanel == null) loseFocus();
245+
if (searchPanel == null){
246+
loseFocus();
247+
getDocument().removeDocumentListener(documentListener);
248+
setText(DEFAULT_MESSAGE);
249+
setForeground(new Color(150,150,150));
250+
getDocument().addDocumentListener(documentListener);
251+
}
239252
else {
240253
threadService.queue(() -> {
241254
parent.remove(searchPanel);
242255
parent.revalidate();
243-
parent.repaint(50L);
256+
parent.repaint();
244257
window.revalidate();
245258
window.pack();
246-
window.repaint(50L);
259+
window.repaint();
247260
searchPanel = null;
248261
});
262+
setText("");
249263
}
250-
setText("");
251264
}
252265

253266
private void loseFocus() {

0 commit comments

Comments
 (0)