Revision 2155 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/DatePickerControllerImpl.java

View differences:

DatePickerControllerImpl.java
4 4
import java.awt.event.ActionEvent;
5 5
import java.awt.event.ActionListener;
6 6
import java.net.URL;
7
import java.text.DateFormat;
8
import java.text.ParseException;
7 9
import java.util.Date;
8
import java.util.Objects;
10
import java.util.Locale;
9 11
import javax.swing.ImageIcon;
10 12
import javax.swing.JButton;
13
import javax.swing.JFormattedTextField;
11 14
import javax.swing.JPopupMenu;
12 15
import javax.swing.text.JTextComponent;
13
import org.apache.commons.lang3.mutable.Mutable;
14
import org.apache.commons.lang3.mutable.MutableObject;
16
import javax.swing.text.DateFormatter;
17
import javax.swing.text.DefaultFormatterFactory;
18
import org.apache.commons.lang3.StringUtils;
15 19
import org.freixas.jcalendar.DateEvent;
16 20
import org.freixas.jcalendar.DateListener;
17 21
import org.freixas.jcalendar.JCalendar;
......
33 37
    
34 38
    private final JButton btnDate;
35 39
    private final JTextComponent txtDate;
36
    private final Mutable<Date> value;
37 40
    private JCalendar jcalendar;
41
    private DateFormat df;
38 42

  
39 43
    public static void selfRegister() {
40 44
        URL imageResource = DatePickerControllerImpl.class.getClassLoader().getResource("org/gvsig/tools/swing/picker/picker-date.png");
......
47 51
    }
48 52
    
49 53
    public DatePickerControllerImpl(JTextComponent txtDate, JButton btnDate) {
50
        this.value = new MutableObject<>(new Date());
51 54
        this.txtDate = txtDate;
52 55
        ToolsSwingLocator.getToolsSwingManager().addClearButton(txtDate, new ActionListener() {
53 56
          @Override
......
56 59
            txtDate.setText("");
57 60
          }
58 61
        });
62
        this.df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM, Locale.getDefault());
63
        if( this.txtDate instanceof JFormattedTextField ) {
64
            DefaultFormatterFactory formatterFactory = new DefaultFormatterFactory(new DateFormatter(df));
65
            ((JFormattedTextField)(this.txtDate)).setFormatterFactory(formatterFactory);
66
        }
59 67
        this.btnDate = btnDate;
60 68
        this.txtDate.setAlignmentX(RIGHT_ALIGNMENT);
61 69
        this.txtDate.setEditable(true);
......
72 80
    }
73 81

  
74 82
    @Override
83
    public boolean isValid() {
84
      if( StringUtils.isBlank(this.txtDate.getText()) ) {
85
        return true;
86
      }
87
      try {
88
        Date date = this.df.parse(this.txtDate.getText());
89
        return true;
90
      } catch (ParseException ex) {
91
        return false;
92
      }
93
    }
94

  
95
    @Override
75 96
    public boolean isEmpty() {
76
        return this.value.getValue()==null;
97
      if( StringUtils.isBlank(this.txtDate.getText()) ) {
98
        return true;
99
      }
100
      try {
101
        Date date = this.df.parse(this.txtDate.getText());
102
        return false;
103
      } catch (ParseException ex) {
104
        return true;
105
      }
77 106
    }
78 107

  
79 108
    @Override
80 109
    public Date get() {
81
        return this.value.getValue();
110
      if( StringUtils.isBlank(this.txtDate.getText()) ) {
111
        return null;
112
      }
113
      try {
114
        Date date = this.df.parse(this.txtDate.getText());
115
        return date;
116
      } catch (ParseException ex) {
117
        return null;
118
      }
82 119
    }
83 120

  
84 121
    @Override
85 122
    public void set(Date date) {
86
        this.value.setValue(date);
87
        this.txtDate.setText(Objects.toString(date, ""));
123
        this.txtDate.setText(this.df.format(date));
88 124
    }
89 125

  
90 126
    @Override
......
104 140
        }
105 141
        JPopupMenu menu = new JPopupMenu();
106 142
        menu.add(getJCalendar());
107
        Date v = this.value.getValue();
143
        Date v = this.get();
108 144
        if (v != null) {
109 145
            getJCalendar().setDate(v);
110 146
        }

Also available in: Unified diff