OSDN Git Service

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