| /* |
| */ |
| package org.apache.log4j.chainsaw; |
| |
| import java.awt.Component; |
| |
| import javax.swing.BorderFactory; |
| import javax.swing.JCheckBox; |
| import javax.swing.JList; |
| import javax.swing.ListCellRenderer; |
| import javax.swing.UIManager; |
| import javax.swing.border.Border; |
| import javax.swing.table.TableColumn; |
| |
| |
| /** |
| * A ListCellRenderer that display a check box if the value |
| * has been "checked". |
| * |
| * Borrowed heavily from the excellent book "Swing, 2nd Edition" by |
| * Matthew Robinson & Pavel Vorobiev. |
| * |
| * @author Paul Smith |
| * |
| */ |
| public abstract class CheckListCellRenderer extends JCheckBox |
| implements ListCellRenderer { |
| private final Border noFocusBorder = |
| BorderFactory.createEmptyBorder(1, 1, 1, 1); |
| |
| /** |
| * |
| */ |
| public CheckListCellRenderer() { |
| super(); |
| setOpaque(true); |
| setBorder(noFocusBorder); |
| } |
| |
| /* (non-Javadoc) |
| * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) |
| */ |
| public Component getListCellRendererComponent( |
| JList list, Object value, int index, boolean isSelected, |
| boolean cellHasFocus) { |
| setText(((TableColumn)value).getHeaderValue().toString()); |
| setBackground( |
| isSelected ? list.getSelectionBackground() : list.getBackground()); |
| setForeground( |
| isSelected ? list.getSelectionForeground() : list.getForeground()); |
| setFont(list.getFont()); |
| setBorder( |
| cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder") |
| : noFocusBorder); |
| |
| setSelected(isSelected(value)); |
| return this; |
| } |
| |
| /** |
| * @param value |
| * @return selected flag |
| */ |
| protected abstract boolean isSelected(Object value); |
| } |