1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.binding.value.binder;
17
18 import java.text.DecimalFormat;
19 import java.text.ParseException;
20 import java.text.SimpleDateFormat;
21 import java.util.Calendar;
22 import java.util.Date;
23
24 import org.eclipse.swt.widgets.DateTime;
25 import org.seasar.framework.beans.PropertyDesc;
26 import org.seasar.uruma.binding.value.ValueBinder;
27 import org.seasar.uruma.component.UIComponent;
28
29
30
31
32
33
34 public class DateTimeValueBinder extends AbstractValueBinder<DateTime> {
35
36
37
38
39 public DateTimeValueBinder() {
40 super(DateTime.class);
41 }
42
43
44
45
46
47 @Override
48 protected void doImportValue(final DateTime widget, final Object formObj,
49 final PropertyDesc propDesc, final UIComponent uiComp) {
50
51 Date date = null;
52 SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMddHHmmss");
53 DecimalFormat dFormat = new DecimalFormat("00");
54 try {
55 date = sdFormat.parse(widget.getYear()
56 + dFormat.format(widget.getMonth() + 1)
57 + dFormat.format(widget.getDay())
58 + dFormat.format(widget.getHours())
59 + dFormat.format(widget.getMinutes())
60 + dFormat.format(widget.getSeconds()));
61 } catch (ParseException ex) {
62 date = new Date();
63 }
64
65 logBinding(IMPORT_VALUE, formObj, propDesc, widget, propDesc, date);
66 propDesc.setValue(formObj, date);
67 }
68
69
70
71
72
73 @Override
74 protected void doExportValue(final DateTime widget, final Object formObj,
75 final PropertyDesc propDesc, final UIComponent uiComp) {
76 Object value = propDesc.getValue(formObj);
77 if (value == null || !(value instanceof Date)) {
78 value = new Date();
79 }
80
81 logBinding(EXPORT_VALUE, formObj, propDesc, widget, propDesc, value);
82
83 Calendar cal = Calendar.getInstance();
84 cal.setTime((Date) value);
85 widget.setYear(cal.get(Calendar.YEAR));
86 widget.setMonth(cal.get(Calendar.MONTH));
87 widget.setDay(cal.get(Calendar.DATE));
88 widget.setHours(cal.get(Calendar.HOUR_OF_DAY));
89 widget.setMinutes(cal.get(Calendar.MINUTE));
90 widget.setSeconds(cal.get(Calendar.SECOND));
91 }
92 }