1 package jp.sourceforge.stigmata.ui.swing;
7 import java.awt.BorderLayout;
8 import java.awt.Component;
9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11 import java.awt.event.MouseAdapter;
12 import java.awt.event.MouseEvent;
13 import java.util.Iterator;
15 import javax.swing.Box;
16 import javax.swing.DefaultListModel;
17 import javax.swing.JButton;
18 import javax.swing.JCheckBox;
19 import javax.swing.JList;
20 import javax.swing.JScrollPane;
21 import javax.swing.ListCellRenderer;
22 import javax.swing.UIManager;
23 import javax.swing.border.Border;
24 import javax.swing.border.EmptyBorder;
26 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
30 * @author Haruaki TAMADA
32 public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{
33 private static final long serialVersionUID = 3209854654743223453L;
35 private DefaultListModel model;
38 public BirthmarkSelectionListPane(StigmataFrame stigmata){
45 public void serviceRemoved(BirthmarkSpi service){
46 BirthmarkSelection elem = getSelection(service.getType());
47 model.removeElement(elem);
49 super.serviceRemoved(service);
52 private void initLayouts(){
53 setLayout(new BorderLayout());
54 list = new JList(model = new DefaultListModel());
55 JScrollPane scroll = new JScrollPane(list);
56 add(scroll, BorderLayout.CENTER);
57 list.setCellRenderer(new Renderer());
58 list.setVisibleRowCount(5);
59 JButton checkAll = GUIUtility.createButton(getMessages(), "checkall");
60 JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall");
62 Box box = Box.createHorizontalBox();
63 box.add(Box.createHorizontalGlue());
65 box.add(Box.createHorizontalGlue());
67 box.add(Box.createHorizontalGlue());
68 add(box, BorderLayout.SOUTH);
70 ActionListener listener = new ActionListener(){
72 public void actionPerformed(ActionEvent e){
73 boolean flag = e.getActionCommand().equals("checkall");
74 for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
75 BirthmarkSelection le = i.next();
82 checkAll.addActionListener(listener);
83 uncheckAll.addActionListener(listener);
84 list.addMouseListener(new MouseAdapter(){
86 public void mouseClicked(MouseEvent e){
87 int index = list.locationToIndex(e.getPoint());
88 list.setSelectedIndex(index);
89 BirthmarkSelection elem = (BirthmarkSelection)model.getElementAt(index);
90 elem.setSelected(!elem.isSelected());
97 * update layouts and update selected birthmarks list.
100 protected void updateLayouts(){
101 model.removeAllElements();
103 for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
104 BirthmarkSelection elem = i.next();
105 if(elem.isVisible(isExperimentalMode())){
106 model.addElement(elem);
109 select(elem.getType(), elem.isVisible(isExperimentalMode()) && elem.isSelected());
114 public static class Renderer extends JCheckBox implements ListCellRenderer{
115 private static final long serialVersionUID = -324432943654654L;
116 private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
123 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean forcus){
124 BirthmarkSelection elem = (BirthmarkSelection)value;
125 setText(elem.getService().getDisplayType());
126 setToolTipText(elem.getService().getDescription());
127 setSelected(elem.isSelected());
130 setBackground(list.getSelectionBackground());
131 setForeground(list.getSelectionForeground());
134 setBackground(list.getBackground());
135 setForeground(list.getForeground());
138 Border border = null;
141 border = UIManager.getBorder("List.focusSelectedCellHighlightBorder");
143 if (border == null) {
144 border = UIManager.getBorder("List.focusCellHighlightBorder");
147 border = noFocusBorder;