OSDN Git Service

Remove Id tag
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / filter / TotalElementCountComparisonPairFilterComponentService.java
1 package jp.sourceforge.stigmata.ui.swing.filter;
2
3 import java.awt.GridLayout;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import javax.swing.JComboBox;
8 import javax.swing.JLabel;
9 import javax.swing.JTextField;
10
11 import jp.sourceforge.stigmata.ComparisonPairFilter;
12 import jp.sourceforge.stigmata.filter.FilterTarget;
13 import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilter;
14 import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilterService;
15 import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
16 import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
17
18 /**
19  * @author Haruaki TAMADA
20  */
21 public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
22
23     @Override
24     public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
25         return new Pane(frame, service);
26     }
27
28     @Override
29     public String getFilterName(){
30         return "totalelementcount";
31     }
32
33     @Override
34     public ComparisonPairFilterSpi getComparisonPairFilterService(){
35         return new TotalElementCountComparisonPairFilterService();
36     }
37
38     private static class Pane extends ComparisonPairFilterPane{
39         private static final long serialVersionUID = 8912037614500713027L;
40         private ComparisonPairFilterSpi service;
41         private JComboBox criterionType;
42         private JTextField threshold;
43         private JComboBox targetType;
44
45         public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
46             super(frame);
47             this.service = service;
48             initLayouts();
49         }
50
51         @Override
52         public String[] getErrors(){
53             List<String> errors = new ArrayList<String>();
54             if(threshold.getText().trim().equals("")){
55                 errors.add(getMessages().get("error.empty.threshold"));
56             }
57             try{
58                 int v = Integer.parseInt(threshold.getText());
59                 if(v < 0){
60                     errors.add(getMessages().format("error.negative.value", v));
61                 }
62             } catch(NumberFormatException e){
63                 errors.add(getMessages().format("error.invalid.format.integer", threshold.getText()));
64             }
65             return errors.toArray(new String[errors.size()]);
66         }
67
68         @Override
69         public ComparisonPairFilter getFilter(){
70             try{
71                 TotalElementCountComparisonPairFilter filter = new TotalElementCountComparisonPairFilter(service);
72                 filter.setCriterion(getCriterion((String)criterionType.getSelectedItem()));
73                 filter.setThreshold(Integer.parseInt(threshold.getText()));
74                 filter.setTarget(getTarget((String)targetType.getSelectedItem()));
75
76                 return filter;
77             } catch(NumberFormatException e){
78             }
79             return null;
80         }
81
82         @Override
83         public void resetComponents(){
84             threshold.setText("");
85             criterionType.setSelectedIndex(0);
86             targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS));
87         }
88
89         @Override
90         public void setFilter(ComparisonPairFilter cpf){
91             TotalElementCountComparisonPairFilter filter = (TotalElementCountComparisonPairFilter)cpf;
92             criterionType.setSelectedItem(getDisplayCriterion(filter.getCriterion()));
93             threshold.setText(String.valueOf(filter.getThreshold()));
94             targetType.setSelectedItem(getDisplayTarget(filter.getTarget()));
95         }
96
97         private void initLayouts(){
98             JLabel label = new JLabel(getMessages().get("filter.totalelementcount.label"));
99             threshold = new JTextField();
100             criterionType = createCriteriaBox(TotalElementCountComparisonPairFilter.getValidCriteria());
101             targetType = createTargetBox();
102
103             setLayout(new GridLayout(4, 1));
104             add(label);
105             add(targetType);
106             add(criterionType);
107             add(threshold);
108         }
109     };
110 }