1 package jp.sourceforge.stigmata.ui.swing.filter;
3 import java.awt.GridLayout;
4 import java.util.ArrayList;
7 import javax.swing.JComboBox;
8 import javax.swing.JLabel;
9 import javax.swing.JTextField;
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;
19 * @author Haruaki TAMADA
21 public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
24 public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
25 return new Pane(frame, service);
29 public String getFilterName(){
30 return "totalelementcount";
34 public ComparisonPairFilterSpi getComparisonPairFilterService(){
35 return new TotalElementCountComparisonPairFilterService();
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;
45 public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
47 this.service = service;
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"));
58 int v = Integer.parseInt(threshold.getText());
60 errors.add(getMessages().format("error.negative.value", v));
62 } catch(NumberFormatException e){
63 errors.add(getMessages().format("error.invalid.format.integer", threshold.getText()));
65 return errors.toArray(new String[errors.size()]);
69 public ComparisonPairFilter getFilter(){
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()));
77 } catch(NumberFormatException e){
83 public void resetComponents(){
84 threshold.setText("");
85 criterionType.setSelectedIndex(0);
86 targetType.setSelectedItem(getDisplayTarget(FilterTarget.BOTH_TARGETS));
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()));
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();
103 setLayout(new GridLayout(4, 1));