KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > snow > sortabletable > SearchPanel


1 package snow.sortabletable;
2
3 import java.awt.*;
4 import java.awt.event.*;
5 import javax.swing.*;
6 import javax.swing.event.*;
7
8 /** a small utility to add a search panel to a sortable table viewer
9 */

10 public final class SearchPanel extends JPanel
11 {
12   final private SortableTableModel stm;
13
14   final protected JTextField searchFT = new JTextField(6);
15   final protected JTextField searchFT2 = new JTextField(6);
16   final protected JCheckBox useRegExCB = new JCheckBox("RegEx", false);
17
18   /** @param secondSearch if true, two fields are shown, alowing an AND search
19       @param searchLabelText is normally "Search: "
20   */

21   public SearchPanel(final String JavaDoc searchLabelText, final Icon searchIcon,
22                      final SortableTableModel stm, final boolean secondSearch, final boolean allowRegEx)
23   {
24     super(new FlowLayout(FlowLayout.LEFT));
25     this.stm = stm;
26
27     // Components
28
//
29
add(new JLabel(searchLabelText, searchIcon, JLabel.LEFT));
30     add(searchFT);
31
32     if(secondSearch)
33     {
34       add(new JLabel(" & "));
35       add(searchFT2);
36     }
37
38     if(allowRegEx)
39     {
40       add(useRegExCB);
41     }
42
43     // key listener
44
//
45
KeyAdapter kad = new KeyAdapter()
46     {
47       @Override JavaDoc public void keyReleased(KeyEvent ee)
48       {
49         doSearch();
50       }
51     };
52
53     searchFT.addKeyListener(kad);
54     searchFT2.addKeyListener(kad);
55
56     // focus behaviour
57
//
58

59     searchFT.addFocusListener(new FocusAdapter()
60     {
61        @Override JavaDoc public void focusGained(FocusEvent e)
62        {
63           searchFT.selectAll();
64        }
65     });
66     searchFT2.addFocusListener(new FocusAdapter()
67     {
68        @Override JavaDoc public void focusGained(FocusEvent e)
69        {
70           searchFT2.selectAll();
71        }
72     });
73
74     // CTRL+F mapping
75
//
76

77     this.registerKeyboardAction(new ActionListener()
78       {
79         public void actionPerformed(ActionEvent e)
80         {
81           searchFT.requestFocus();
82         }
83       },
84       KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK),
85       JComponent.WHEN_IN_FOCUSED_WINDOW
86     ); // ### Maybe pass the parent as argument reference and register actions on it.
87
// It makes sense if several internal frames have searches...
88

89
90   }
91
92
93   public void doSearch()
94   {
95     stm.search(searchFT.getText(), searchFT2.getText(), useRegExCB.isSelected());
96   }
97
98
99   public void setSearchText(String JavaDoc t1, String JavaDoc t2)
100   {
101      searchFT.setText(t1);
102      searchFT2.setText(t2);
103   }
104
105 } // SearchPanel
Popular Tags