package nars.gui.output;
import automenta.vivisect.Video;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
/**
* @author http://stackoverflow.com/questions/19766/how-do-i-make-a-list-with-checkboxes-in-java-swing
*/
public class JCategoryList extends JList<JButton> {
protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
/*addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int index = locationToIndex(e.getPoint());
if (index != -1) {
JButton checkbox = (JButton)getModel().getElementAt(index);
repaint();
}
}
});*/
public JCategoryList() {
setCellRenderer(new CellRenderer());
/*addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int index = locationToIndex(e.getPoint());
if (index != -1) {
JButton checkbox = (JButton)getModel().getElementAt(index);
repaint();
}
}
});*/
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
public JCategoryList(ListModel<JButton> model) {
this();
setModel(model);
}
protected class CellRenderer implements ListCellRenderer<JButton> {
Font f = Video.fontMono(16f);
private JButton lastCellFocus;
public Component getListCellRendererComponent(JList<? extends JButton> list, JButton value, int index, boolean isSelected, boolean cellHasFocus) {
JButton b = value;
b.setContentAreaFilled(false);
b.setHorizontalTextPosition(JButton.LEFT);
b.setHorizontalAlignment(JButton.LEFT);
b.setForeground(Color.WHITE);
b.setFocusPainted(false);
b.setBorderPainted(false);
b.setFont(f);
if ((cellHasFocus) && (lastCellFocus != b)) {
b.doClick();
lastCellFocus = b;
}
return b;
}
}
}