Revision 298 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.serv/org.gvsig.tools.swing.serv.field/src/main/java/org/gvsig/tools/swing/serv/field/component/spinner/DynFieldEditor.java

View differences:

DynFieldEditor.java
1 1
package org.gvsig.tools.swing.serv.field.component.spinner;
2 2

  
3
import java.text.Format;
4
import java.text.ParseException;
5 3
import java.util.Date;
6 4
import java.util.Locale;
7 5

  
8
import javax.swing.AbstractSpinnerModel;
9 6
import javax.swing.JFormattedTextField;
10 7
import javax.swing.JSpinner;
11 8
import javax.swing.SpinnerDateModel;
12
import javax.swing.SpinnerModel;
13 9
import javax.swing.SpinnerNumberModel;
14 10
import javax.swing.JFormattedTextField.AbstractFormatter;
15
import javax.swing.event.ChangeEvent;
16 11
import javax.swing.text.DateFormatter;
17 12
import javax.swing.text.DefaultFormatterFactory;
18 13
import javax.swing.text.NumberFormatter;
......
20 15
import org.gvsig.tools.dataTypes.DataTypes;
21 16
import org.gvsig.tools.dynobject.DynField;
22 17

  
23

  
24 18
public class DynFieldEditor {
25 19

  
26 20
    private DynField dynField;
......
30 24

  
31 25
    public DynFieldEditor(DynField field, Locale locale) {
32 26
        this.dynField = field;
33
        this.formatter =
34
            DynFieldFormatter.getInstance(dynField, locale);
27
        this.formatter = DynFieldFormatter.getInstance(dynField, locale);
35 28
        this.spinner = createSpinner();
36
        this.spinner.setLocale(locale); 
37
        this.tf = ((JSpinner.DefaultEditor) this.spinner.getEditor()).getTextField();
38
  
29
        this.spinner.setLocale(locale);
30
        this.tf =
31
            ((JSpinner.DefaultEditor) this.spinner.getEditor()).getTextField();
32

  
39 33
        setDynFieldFormat();
40
        
41
//        this.spinner.validate();
42
           
43
//        setText(null);
34

  
35
        // this.spinner.validate();
36

  
37
        // setText(null);
44 38
    }
45
    
46
    private JSpinner createSpinner(){
47
        if (formatter.isDate()){
39

  
40
    private JSpinner createSpinner() {
41
        if (formatter.isDate()) {
48 42
            SpinnerDateModel dateModel = new SpinnerDateModel();
49 43
            dateModel.setStart((Comparable) dynField.getMinValue());
50 44
            dateModel.setEnd((Comparable) dynField.getMaxValue());
51 45
            return new JSpinner(dateModel);
52
        }else if (formatter.isNumber()){
53
            SpinnerNumberModel numModel = new SpinnerNumberModel();
54
            numModel.setMinimum((Comparable) dynField.getMinValue());
55
            numModel.setMaximum((Comparable) dynField.getMaxValue());
56
            numModel.setStepSize(1);
57
            return new JSpinner(numModel);
58
        }
46
        } else
47
            if (formatter.isNumber()) {
48
                SpinnerNumberModel numModel = new SpinnerNumberModel();
49
                numModel.setMinimum((Comparable) dynField.getMinValue());
50
                numModel.setMaximum((Comparable) dynField.getMaxValue());
51
                numModel.setStepSize(1);
52
                return new JSpinner(numModel);
53
            }
59 54
        return new JSpinner();
60 55
    }
61
    
62
    private void setDynFieldFormat(){
63
        DefaultFormatterFactory factory = (DefaultFormatterFactory) getTextField().getFormatterFactory();
64
        AbstractFormatter formatter = factory.getDefaultFormatter();
65 56

  
66
        if (this.formatter.isDate()){
67
            // Change the date format 
68
            ((DateFormatter) formatter).setFormat(this.formatter.toFormat());
69
            
70
        }else if (this.formatter.isNumber()){
71
            // Change the date format 
72
            ((NumberFormatter) formatter).setFormat(this.formatter.toFormat());
73
        }
74
    }
75
    
76
//    public void init(){
77
//         this.setFormatterFactory();
78
//  
79
//        this.getSpinner().setEditor(this);
80
//        getSpinner().setLocale(loc);
81
//        getSpinner().setModel(getModel());
82
//    }
83

  
84
    public DynFieldFormatter getFormat(){
85
        return this.formatter;
86
    }
87
    
88
//    private void setFormatterFactory() {
89
//        getTextField().setFormatterFactory(
90
//
91
//        new DynFieldFormatterFactory(getFormat()));
92
//    }
93
//
94
//    @Override
95
//    public void stateChanged(ChangeEvent e) {
96
//        JSpinner spinner = (JSpinner)(e.getSource());
97
//        Object value = model.getValue();
98
////        setText(model.getValue());
99
////        if (value!=null)
100
////            this.getModel().setValue(value);
101
//    }
102
//
103
//    public void setText(Object value) {
104
//        String txtValue = getFormat().format(value);
105
//        getTextField().setValue(txtValue);
106
//        getTextField().setText(txtValue);
107
//    }
108
//    
109
//    public Object getValue(){
110
//        String text = getTextField().getText();
111
//        try {
112
//            return formatter.parse(text);
113
//        } catch (ParseException e) {
114
//            return null;
115
//        }
116
//    }
117

  
118 57
    public Object getDefaultValue() {
119 58
        switch (this.dynField.getType()) {
120 59
        case DataTypes.DATE:
......
132 71
        }
133 72
    }
134 73

  
74
    // public void init(){
75
    // this.setFormatterFactory();
76
    //  
77
    // this.getSpinner().setEditor(this);
78
    // getSpinner().setLocale(loc);
79
    // getSpinner().setModel(getModel());
80
    // }
81

  
82
    public DynFieldFormatter getFormat() {
83
        return this.formatter;
84
    }
85

  
86
    // private void setFormatterFactory() {
87
    // getTextField().setFormatterFactory(
88
    //
89
    // new DynFieldFormatterFactory(getFormat()));
90
    // }
91
    //
92
    // @Override
93
    // public void stateChanged(ChangeEvent e) {
94
    // JSpinner spinner = (JSpinner)(e.getSource());
95
    // Object value = model.getValue();
96
    // // setText(model.getValue());
97
    // // if (value!=null)
98
    // // this.getModel().setValue(value);
99
    // }
100
    //
101
    // public void setText(Object value) {
102
    // String txtValue = getFormat().format(value);
103
    // getTextField().setValue(txtValue);
104
    // getTextField().setText(txtValue);
105
    // }
106
    //    
107
    // public Object getValue(){
108
    // String text = getTextField().getText();
109
    // try {
110
    // return formatter.parse(text);
111
    // } catch (ParseException e) {
112
    // return null;
113
    // }
114
    // }
115

  
135 116
    public JSpinner getSpinner() {
136 117
        return this.spinner;
137 118
    }
138 119

  
139 120
    public JFormattedTextField getTextField() {
140
        return this.tf;        
121
        return this.tf;
141 122
    }
123

  
124
    private void setDynFieldFormat() {
125
        DefaultFormatterFactory factory =
126
            (DefaultFormatterFactory) getTextField().getFormatterFactory();
127
        AbstractFormatter formatter = factory.getDefaultFormatter();
128

  
129
        if (this.formatter.isDate()) {
130
            // Change the date format
131
            ((DateFormatter) formatter).setFormat(this.formatter.toFormat());
132

  
133
        } else
134
            if (this.formatter.isNumber()) {
135
                // Change the date format
136
                ((NumberFormatter) formatter).setFormat(this.formatter
137
                    .toFormat());
138
            }
139
    }
142 140
}

Also available in: Unified diff