eb0c5876f07b35d852ac5ee63dad40006b4206d8
2 package be
.nikiroo
.fanfix_swing
.gui
;
4 import java
.awt
.BorderLayout
;
5 import java
.awt
.event
.ActionEvent
;
6 import java
.awt
.event
.ActionListener
;
7 import java
.awt
.event
.KeyAdapter
;
8 import java
.awt
.event
.KeyEvent
;
10 import javax
.swing
.JButton
;
11 import javax
.swing
.JTextField
;
12 import javax
.swing
.SwingUtilities
;
14 import be
.nikiroo
.fanfix_swing
.gui
.utils
.ListenerPanel
;
15 import be
.nikiroo
.fanfix_swing
.gui
.utils
.UiHelper
;
16 import be
.nikiroo
.fanfix_swing
.images
.IconGenerator
;
17 import be
.nikiroo
.fanfix_swing
.images
.IconGenerator
.Icon
;
18 import be
.nikiroo
.fanfix_swing
.images
.IconGenerator
.Size
;
21 * A generic search/filter bar.
25 public class SearchBar
extends ListenerPanel
{
26 static private final long serialVersionUID
= 1L;
28 private JButton search
;
29 private JTextField text
;
30 private JButton clear
;
32 private boolean realTime
;
35 * Create a new {@link SearchBar}.
38 setLayout(new BorderLayout());
40 // TODO: option for this
43 search
= new JButton(IconGenerator
.get(Icon
.search
, Size
.x16
));
44 UiHelper
.setButtonPressed(search
, realTime
);
45 search
.addActionListener(new ActionListener() {
47 public void actionPerformed(ActionEvent e
) {
49 UiHelper
.setButtonPressed(search
, realTime
);
53 fireActionPerformed(getText());
58 text
= new JTextField();
59 text
.addKeyListener(new KeyAdapter() {
61 public void keyTyped(final KeyEvent e
) {
63 SwingUtilities
.invokeLater(new Runnable() {
66 boolean empty
= (text
.getText().isEmpty());
67 clear
.setVisible(!empty
);
70 fireActionPerformed(getText());
76 text
.addActionListener(new ActionListener() {
78 public void actionPerformed(ActionEvent e
) {
80 fireActionPerformed(getText());
85 clear
= new JButton(IconGenerator
.get(Icon
.clear
, Size
.x16
));
86 clear
.setBackground(text
.getBackground());
87 clear
.setVisible(false);
88 clear
.addActionListener(new ActionListener() {
90 public void actionPerformed(ActionEvent e
) {
92 clear
.setVisible(false);
95 fireActionPerformed(getText());
99 add(search
, BorderLayout
.WEST
);
100 add(text
, BorderLayout
.CENTER
);
101 add(clear
, BorderLayout
.EAST
);
105 * Return the current text displayed by this {@link SearchBar}.
109 public String
getText() {
110 return text
.getText();