1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.form.field.factory;
35
36 import info.magnolia.ui.form.field.definition.DateFieldDefinition;
37
38 import java.util.Date;
39 import java.util.TimeZone;
40
41 import com.vaadin.data.Item;
42 import com.vaadin.server.Page;
43 import com.vaadin.server.Sizeable;
44 import com.vaadin.server.Sizeable.Unit;
45 import com.vaadin.shared.ui.datefield.Resolution;
46 import com.vaadin.ui.DateField;
47 import com.vaadin.ui.Field;
48 import com.vaadin.ui.PopupDateField;
49
50
51
52
53 public class DateFieldFactory extends AbstractFieldFactory<DateFieldDefinition, Date> {
54
55 public DateFieldFactory(DateFieldDefinition definition, Item relatedFieldItem) {
56 super(definition, relatedFieldItem);
57 }
58
59 @Override
60 public Field<Date> createField() {
61 Field<Date> field = super.createField();
62 field.setWidth(Sizeable.SIZE_UNDEFINED, Unit.PIXELS);
63 return field;
64 }
65
66 @Override
67 protected Field<Date> createFieldComponent() {
68 DateFieldDefinition definition = getFieldDefinition();
69 PopupDateField popupDateField = new PopupDateField();
70
71 setTimeZone(popupDateField);
72 String dateFormat = "";
73
74
75 if (definition.isTime()) {
76 popupDateField.setResolution(Resolution.MINUTE);
77 dateFormat = definition.getDateFormat() + ":" + definition.getTimeFormat();
78 } else {
79 popupDateField.setResolution(Resolution.DAY);
80 dateFormat = definition.getDateFormat();
81 }
82
83 popupDateField.setDateFormat(dateFormat);
84
85 return popupDateField;
86 }
87
88 @Override
89 protected Class<?> getDefaultFieldType() {
90 return Date.class;
91 }
92
93
94
95
96
97 private void setTimeZone(DateField popupDateField) {
98
99 TimeZone timeZone = TimeZone.getDefault();
100 try {
101 int offset = Page.getCurrent().getWebBrowser().getRawTimezoneOffset();
102 timeZone.setRawOffset(offset);
103 }
104 catch (NullPointerException e) {
105
106 }
107 popupDateField.setTimeZone(timeZone);
108 }
109 }