// Selection (Panel) // Modified: Carsten Schuermann // Date: Sat Mar 25 22:02:34 2006 import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; import javax.swing.event.CaretEvent; import javax.swing.event.CaretListener; import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionEvent; public class SelectionPanel extends JPanel{ private final JList jlist; JTextField selText; private final Selection selection; public SelectionPanel(final Selection selection){ this.selection = selection; // Filter text selText = new JTextField( 12 ); // Listener Relationship 6 selText.addCaretListener( new CaretListener(){ public void caretUpdate(CaretEvent e){ selection.updateFilter( selText.getText() ); if ( selection.getSize() == 1 ) jlist.setSelectedIndex(0); else jlist.clearSelection(); } }); // Scroll pane list. jlist = new JList( selection ); jlist.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); // Listener Relationship 7 jlist.addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ if (! e.getValueIsAdjusting() ) if ( jlist.isSelectionEmpty() ) selection.setSelected( null ); else selection.setSelected(selection.getElementAt( jlist.getMinSelectionIndex() ) ); } }); // layout in this Panel this.setLayout( new BorderLayout() ); this.add( selText,"North" ); this.add( new JScrollPane( jlist ) ,"Center" ); } }