1 package jp.sourceforge.stigmata.ui.swing.filter;
7 import java.awt.GridLayout;
8 import java.util.ArrayList;
11 import javax.swing.JComboBox;
12 import javax.swing.JLabel;
13 import javax.swing.JTextField;
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;
23 * @author Haruaki TAMADA
26 public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
29 public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
30 return new Pane(frame, service);
34 public String getFilterName(){
35 return "totalelementcount";
39 public ComparisonPairFilterSpi getComparisonPairFilterService(){
40 return new TotalElementCountComparisonPairFilterService();
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;
50 public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
52 this.service = service;
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"));
63 int v = Integer.parseInt(threshold.getText());
65 errors.add(getMessages().format("error.negative.value", v));
67 } catch(NumberFormatException e){
68 errors.add(getMessages().format("error.invalid.format.integer", threshold.getText()));
70 return errors.toArray(new String[errors.size()]);
74 public ComparisonPairFilter getFilter(){
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()));
82 } catch(NumberFormatException e){
88 public void resetComponents(){
89 threshold.setText("");
90 criterionType.setSelectedIndex(0);
91 targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS));
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()));
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();
108 setLayout(new GridLayout(4, 1));