OSDN Git Service

必要のないクラスを削除し,クラスの整理を行った.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / BirthmarkSelectionCheckSetPane.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 import java.awt.BorderLayout;
4 import java.awt.Dimension;
5 import java.awt.GridLayout;
6 import java.awt.event.ActionEvent;
7 import java.awt.event.ActionListener;
8 import java.util.Iterator;
9
10 import javax.swing.Box;
11 import javax.swing.JButton;
12 import javax.swing.JCheckBox;
13 import javax.swing.JPanel;
14
15 /**
16  *
17  * @author Haruaki TAMADA
18  */
19 public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{
20     private static final long serialVersionUID = 3209854654743223453L;
21
22     private JPanel checks = new JPanel();
23
24     public BirthmarkSelectionCheckSetPane(StigmataFrame stigmata){
25         super(stigmata);
26
27         initLayouts();
28     }
29
30     private void initLayouts(){
31         setLayout(new BorderLayout());
32         add(checks, BorderLayout.CENTER);
33
34         JButton checkAll = GUIUtility.createButton(getMessages(), "checkall");
35         JButton uncheckAll = GUIUtility.createButton(getMessages(), "uncheckall");
36
37         Box box = Box.createHorizontalBox();
38         box.add(Box.createHorizontalGlue());
39         box.add(checkAll);
40         box.add(Box.createHorizontalGlue());        
41         box.add(uncheckAll);
42         box.add(Box.createHorizontalGlue());
43         add(box, BorderLayout.SOUTH);
44
45         ActionListener listener = new ActionListener(){
46             @Override
47             public void actionPerformed(ActionEvent e){
48                 boolean flag = e.getActionCommand().equals("checkall");
49                 for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
50                     BirthmarkSelection le = i.next();
51                     le.setSelected(flag);
52                     fireEvent();
53                 }
54                 updateLayouts();
55             }
56         };
57         checkAll.addActionListener(listener);
58         uncheckAll.addActionListener(listener);
59     }
60
61     /**
62      * update layouts and update selected birthmarks list.
63      */
64     @Override
65     protected void updateLayouts(){
66         checks.removeAll();
67         Dimension d = calculateDimension();
68         checks.setLayout(new GridLayout(d.height, d.width));
69
70         for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
71             final BirthmarkSelection elem = i.next();
72             if(elem.isVisible(isExperimentalMode())){
73                 JCheckBox check = new JCheckBox(elem.getService().getType());
74                 check.setSelected(elem.isSelected());
75                 check.addActionListener(new ActionListener(){
76                     @Override
77                     public void actionPerformed(ActionEvent e){
78                         JCheckBox c = (JCheckBox)e.getSource();
79                         elem.setSelected(c.isSelected());
80                         select(elem.getService().getType(), c.isSelected());
81                         fireEvent();
82                     }
83                 });
84                 checks.add(check);
85             }
86
87             select(elem.getType(), elem.isVisible(isExperimentalMode()) && elem.isSelected());
88         }
89         updateUI();
90     }
91
92     private Dimension calculateDimension(){
93         int rows = 1;
94         int cols = 0;
95         for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
96             BirthmarkSelection selection = i.next();
97             if(selection.isVisible(isExperimentalMode())){
98                 cols++;
99             }
100         }
101
102         if(cols > 4){
103             rows = (cols / 3);
104             if((cols % 3) != 0) rows++;
105             cols = 3;
106         }
107
108         return new Dimension(cols, rows);
109     }
110 }