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 static info.magnolia.ui.form.field.definition.DateFieldDefinition.NOW;
37
38 import info.magnolia.cms.security.MgnlUserManager;
39 import info.magnolia.context.Context;
40 import info.magnolia.i18nsystem.SimpleTranslator;
41 import info.magnolia.objectfactory.Components;
42 import info.magnolia.ui.api.context.UiContext;
43 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
44 import info.magnolia.ui.form.field.definition.DateFieldDefinition;
45
46 import java.text.ParseException;
47 import java.text.SimpleDateFormat;
48 import java.util.Date;
49 import java.util.TimeZone;
50
51 import javax.inject.Inject;
52
53 import org.apache.commons.lang3.StringUtils;
54
55 import com.vaadin.v7.data.Item;
56 import com.vaadin.v7.shared.ui.datefield.Resolution;
57 import com.vaadin.v7.ui.Field;
58 import com.vaadin.v7.ui.PopupDateField;
59
60
61
62
63
64
65
66
67 @Deprecated
68 public class DateFieldFactory extends AbstractFieldFactory<DateFieldDefinition, Date> {
69
70
71
72
73 private static final String BROWSER_TIMEZONE = "browser";
74
75 private final SimpleTranslator i18n;
76 private final Context context;
77
78 @Inject
79 public DateFieldFactory(DateFieldDefinition definition, Item relatedFieldItem, UiContext uiContext, I18NAuthoringSupport i18NAuthoringSupport, SimpleTranslator i18n, Context context) {
80 super(definition, relatedFieldItem, uiContext, i18NAuthoringSupport);
81 this.i18n = i18n;
82 this.context = context;
83 }
84
85
86
87
88 @Deprecated
89 public DateFieldFactory(DateFieldDefinition definition, Item relatedFieldItem) {
90 this(definition, relatedFieldItem, null, Components.getComponent(I18NAuthoringSupport.class), Components.getComponent(SimpleTranslator.class), Components.getComponent(Context.class));
91 }
92
93 @Override
94 public Field<Date> createField() {
95 Field<Date> field = super.createField();
96 field.setWidthUndefined();
97 return field;
98 }
99
100 @Override
101 protected Field<Date> createFieldComponent() {
102 DateFieldDefinition definition = getFieldDefinition();
103 PopupDateField popupDateField = new PopupDateField();
104 setTimeZone(popupDateField);
105 String dateFormat;
106
107
108 if (definition.isTime()) {
109 popupDateField.setResolution(Resolution.MINUTE);
110 dateFormat = definition.getDateFormat() + " " + definition.getTimeFormat();
111 } else {
112 popupDateField.setResolution(Resolution.DAY);
113 dateFormat = definition.getDateFormat();
114 }
115 popupDateField.setDateFormat(dateFormat);
116 return popupDateField;
117 }
118
119 @Override
120 protected Class<?> getDefaultFieldType() {
121 return Date.class;
122 }
123
124
125
126
127
128
129
130
131 protected void setTimeZone(PopupDateField popupDateField) {
132
133 final String timeZoneId = context.getUser().getProperty(MgnlUserManager.PROPERTY_TIMEZONE);
134 final TimeZone timeZone;
135
136 if (timeZoneId == null || timeZoneId.isEmpty() || timeZoneId.equals(BROWSER_TIMEZONE)) {
137 timeZone = TimeZone.getDefault();
138 } else {
139 timeZone = TimeZone.getTimeZone(timeZoneId);
140 }
141 if (timeZone != null) {
142 popupDateField.setTimeZone(timeZone);
143
144
145 popupDateField.setDescription(i18n.translate("ui-admincentral.dateField.timeZone.description", timeZone.getDisplayName(false, TimeZone.LONG, context.getLocale()), timeZone.getRawOffset() / 3600000));
146 popupDateField.setInputPrompt(i18n.translate("ui-admincentral.dateField.timeZone.description", timeZone.getDisplayName(false, TimeZone.SHORT, context.getLocale()), timeZone.getRawOffset() / 3600000));
147 }
148 }
149
150 @Override
151 protected Object getConfiguredDefaultValue() {
152 if (NOW.equalsIgnoreCase(definition.getDefaultValue())) {
153 return new Date();
154 }
155 if (definition.isTime() && StringUtils.isNotEmpty(definition.getDefaultValue())) {
156 SimpleDateFormat dateFormatter = new SimpleDateFormat(definition.getDateFormat() + " " + definition.getTimeFormat());
157 try {
158 return dateFormatter.parse(definition.getDefaultValue());
159 } catch (ParseException e) {
160 }
161 }
162 return super.getConfiguredDefaultValue();
163 }
164 }