1 package org.columba.addressbook.gui.table; 19 20 import java.awt.event.ActionEvent ; 21 import java.awt.event.ActionListener ; 22 23 import javax.swing.BorderFactory ; 24 import javax.swing.JButton ; 25 import javax.swing.JLabel ; 26 import javax.swing.JPanel ; 27 import javax.swing.JTextField ; 28 import javax.swing.event.DocumentEvent ; 29 import javax.swing.event.DocumentListener ; 30 31 import org.columba.addressbook.gui.table.model.FilterDecorator; 32 33 import com.jgoodies.forms.builder.PanelBuilder; 34 import com.jgoodies.forms.layout.CellConstraints; 35 import com.jgoodies.forms.layout.FormLayout; 36 37 38 public class FilterToolbar extends JPanel implements ActionListener { 39 public JButton searchButton; 40 41 private TableController table; 42 43 private JLabel label; 44 45 private JTextField textField; 46 47 private JButton clearButton; 48 49 public FilterToolbar(TableController table) { 50 super(); 51 52 this.table = table; 53 54 initComponents(); 55 layoutComponents(); 56 57 textField.getDocument().addDocumentListener(new MyDocumentListener()); 58 } 59 60 protected void initComponents() { 61 label = new JLabel ("Name or email contains:"); 62 63 textField = new JTextField (12); 64 65 clearButton = new JButton ("Clear"); 66 clearButton.setActionCommand("CLEAR"); 67 clearButton.addActionListener(this); 68 } 69 70 protected void layoutComponents() { 71 setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); 72 73 FormLayout l = new FormLayout( 74 "3dlu, default, 3dlu, fill:default:grow, 3dlu, default, 3dlu", 75 "fill:default:grow"); 76 PanelBuilder b = new PanelBuilder(l, this); 77 78 CellConstraints c = new CellConstraints(); 79 80 b.add(label, c.xy(2, 1)); 81 b.add(textField, c.xy(4, 1)); 82 b.add(clearButton, c.xy(6, 1)); 83 84 } 85 86 public void update() { 87 table.getAddressbookModel().update(); 88 } 89 90 public void actionPerformed(ActionEvent e) { 91 String action = e.getActionCommand(); 92 93 if (action.equals("CLEAR")) { 94 textField.setText(""); 95 } 96 } 97 98 class MyDocumentListener implements DocumentListener { 99 100 public void insertUpdate(DocumentEvent e) { 101 update(); 102 } 103 104 public void removeUpdate(DocumentEvent e) { 105 update(); 106 } 107 108 public void changedUpdate(DocumentEvent e) { 109 } 111 112 public void update() { 113 FilterDecorator model = table.getFilterDecorator(); 114 model.setPattern(textField.getText()); 115 table.getAddressbookModel().fireTableDataChanged(); 116 } 117 } 118 } | Popular Tags |