19 package org.sleuthkit.autopsy.guiutils;
21 import java.awt.BorderLayout;
22 import java.awt.Component;
23 import java.awt.event.MouseAdapter;
24 import java.awt.event.MouseEvent;
25 import javax.swing.Icon;
26 import javax.swing.JCheckBox;
27 import javax.swing.JLabel;
28 import javax.swing.JList;
29 import javax.swing.JPanel;
30 import javax.swing.ListCellRenderer;
31 import javax.swing.ListSelectionModel;
36 final class CheckBoxJList<T
extends CheckBoxJList.CheckboxListItem> extends JList<T> {
38 private static final long serialVersionUID = 1L;
45 interface CheckboxListItem {
59 void setChecked(
boolean checked);
66 String getDisplayName();
93 private void initalize() {
94 CellRenderer cellRenderer =
new CellRenderer();
96 setCellRenderer(cellRenderer);
97 addMouseListener(
new MouseAdapter() {
99 public void mousePressed(MouseEvent e) {
100 int index = locationToIndex(e.getPoint());
102 CheckBoxJList.CheckboxListItem element = getModel().getElementAt(index);
103 element.setChecked(!element.isChecked());
108 setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
114 class CellRenderer
extends JPanel implements ListCellRenderer<CheckBoxJList.CheckboxListItem> {
116 private static final long serialVersionUID = 1L;
118 private final JCheckBox checkbox =
new JCheckBox();
119 private final JLabel label =
new JLabel();
122 setLayout(
new BorderLayout(2, 0));
123 add(checkbox, BorderLayout.WEST);
124 add(label, BorderLayout.CENTER);
128 public Component getListCellRendererComponent(
129 JList<? extends CheckBoxJList.CheckboxListItem> list, CheckBoxJList.CheckboxListItem value,
int index,
130 boolean isSelected,
boolean cellHasFocus) {
132 setBackground(list.getBackground());
134 checkbox.setSelected(value.isChecked());
135 checkbox.setBackground(list.getBackground());
136 checkbox.setEnabled(list.isEnabled());
137 label.setText(value.getDisplayName());
138 label.setEnabled(list.isEnabled());
139 if (value.hasIcon()) {
140 label.setIcon(value.getIcon());
143 setEnabled(list.isEnabled());