package morepaste.util; import java.io.Serializable; import java.awt.*; import java.util.NoSuchElementException; import javax.swing.*; import javax.swing.border.*; /** * @version 1.0.1 2002-01-26 * @author Takashi KOBAYASHI * @see javax.swing.ListCellRenderer * @see javax.swing.DefaultListCellRenderer */ public class CheckBoxCellRenderer extends JPanel implements ListCellRenderer { JCheckBox jcb; protected static Border noFocusBorder; public CheckBoxCellRenderer() { super(); noFocusBorder = new EmptyBorder(1, 1, 1, 1); setOpaque(true); setBorder(noFocusBorder); setLayout( new BorderLayout() ); jcb = new JCheckBox(); add( jcb, BorderLayout.WEST ); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) { CheckBoxListModel clm = (CheckBoxListModel)list.getModel(); jcb.setText( value.toString() ); try{ jcb.setSelected( clm.isSelectedAt( index ) ); jcb.setEnabled( clm.isEnabledAt( index ) ); } catch( NoSuchElementException e ) {} if( isSelected ) { jcb.setBackground( list.getSelectionBackground() ); setBackground( list.getSelectionBackground() ); setForeground( list.getSelectionForeground() ); } else { jcb.setBackground( list.getBackground() ); setBackground( list.getBackground() ); setForeground( list.getForeground() ); } setEnabled(list.isEnabled()); setFont(list.getFont()); setBorder( (cellHasFocus) ? UIManager.getBorder( "List.focusCellHighlightBorder" ) : noFocusBorder ); return this; } public boolean isInCheckBox( Point p, String cellText ) { jcb.setText( cellText ); return jcb.contains( p ); } }