1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.primefaces.extensions.component.clockpicker;
23
24 import java.util.Locale;
25
26 import javax.faces.application.ResourceDependency;
27 import javax.faces.context.FacesContext;
28
29 import org.primefaces.component.api.AbstractPrimeHtmlInputText;
30 import org.primefaces.component.api.InputHolder;
31 import org.primefaces.component.api.Widget;
32 import org.primefaces.util.LocaleUtils;
33
34 @ResourceDependency(library = "primefaces", name = "components.css")
35 @ResourceDependency(library = "primefaces", name = "jquery/jquery.js")
36 @ResourceDependency(library = "primefaces", name = "jquery/jquery-plugins.js")
37 @ResourceDependency(library = "primefaces", name = "core.js")
38 @ResourceDependency(library = "primefaces-extensions", name = "clockpicker/clockpicker.css")
39 @ResourceDependency(library = "primefaces-extensions", name = "clockpicker/clockpicker.js")
40 public class ClockPicker extends AbstractPrimeHtmlInputText implements Widget, InputHolder {
41 public static final String CONTAINER_CLASS = "pe-clockpicker ui-widget ui-corner-all clockpicker";
42 public static final String BUTTON_TRIGGER_CLASS = "pe-clockpicker-trigger ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only input-group-addon";
43 public static final String BUTTON_TRIGGER_ICON_CLASS = "ui-button-icon-left ui-icon ui-icon-clock";
44 public static final String BUTTON_TRIGGER_TEXT_CLASS = "ui-button-text";
45
46 public static final String COMPONENT_TYPE = "org.primefaces.extensions.component.ClockPicker";
47 public static final String COMPONENT_FAMILY = "org.primefaces.extensions.component";
48 private static final String DEFAULT_RENDERER = "org.primefaces.extensions.component.ClockPickerRenderer";
49
50 private Locale appropriateLocale;
51
52 protected enum PropertyKeys {
53
54
55 widgetVar,
56 locale,
57 placement,
58 align,
59 autoClose,
60 vibrate,
61 twelveHour,
62 showOn,
63 onbeforeshow,
64 onaftershow,
65 onbeforehide,
66 onafterhide,
67 onbeforehourselect,
68 onafterhourselect,
69 onafterampmselect,
70 onbeforedone,
71 onafterdone,
72 appendTo
73 }
74
75 public ClockPicker() {
76 setRendererType(DEFAULT_RENDERER);
77 }
78
79 @Override
80 public String getFamily() {
81 return COMPONENT_FAMILY;
82 }
83
84 @Override
85 public String getInputClientId() {
86 return getClientId(getFacesContext()) + "_input";
87 }
88
89 @Override
90 public String getValidatableInputClientId() {
91 return getInputClientId();
92 }
93
94 @Override
95 public String getLabelledBy() {
96 return (String) getStateHelper().get("labelledby");
97 }
98
99 @Override
100 public void setLabelledBy(String labelledBy) {
101 getStateHelper().put("labelledby", labelledBy);
102 }
103
104 public String getWidgetVar() {
105 return (String) getStateHelper().eval(PropertyKeys.widgetVar, null);
106 }
107
108 public void setWidgetVar(final String widgetVar) {
109 getStateHelper().put(PropertyKeys.widgetVar, widgetVar);
110 }
111
112 public String getPlacement() {
113 return (String) getStateHelper().eval(PropertyKeys.placement, "bottom");
114 }
115
116 public void setPlacement(final String placement) {
117 getStateHelper().put(PropertyKeys.placement, placement);
118 }
119
120 public String getAlign() {
121 return (String) getStateHelper().eval(PropertyKeys.align, "left");
122 }
123
124 public void setAlign(final String align) {
125 getStateHelper().put(PropertyKeys.align, align);
126 }
127
128 public Boolean isAutoClose() {
129 return (Boolean) getStateHelper().eval(PropertyKeys.autoClose, false);
130 }
131
132 public void setAutoClose(final Boolean autoClose) {
133 getStateHelper().put(PropertyKeys.autoClose, autoClose);
134 }
135
136 public Boolean getVibrate() {
137 return (Boolean) getStateHelper().eval(PropertyKeys.vibrate, true);
138 }
139
140 public void setVibrate(final Boolean vibrate) {
141 getStateHelper().put(PropertyKeys.vibrate, vibrate);
142 }
143
144 public Boolean isTwelveHour() {
145 return (Boolean) getStateHelper().eval(PropertyKeys.twelveHour, false);
146 }
147
148 public void setTwelveHour(final Boolean twelveHour) {
149 getStateHelper().put(PropertyKeys.twelveHour, twelveHour);
150 }
151
152 public Object getLocale() {
153 return getStateHelper().eval(PropertyKeys.locale, null);
154 }
155
156 public void setLocale(final Object locale) {
157 getStateHelper().put(PropertyKeys.locale, locale);
158 }
159
160 public String getShowOn() {
161 return (String) getStateHelper().eval(PropertyKeys.showOn, "focus");
162 }
163
164 public void setShowOn(final String showOn) {
165 getStateHelper().put(PropertyKeys.showOn, showOn);
166 }
167
168 public String getOnbeforeshow() {
169 return (String) getStateHelper().eval(PropertyKeys.onbeforeshow, null);
170 }
171
172 public void setOnbeforeshow(final String beforeshow) {
173 getStateHelper().put(PropertyKeys.onbeforeshow, beforeshow);
174 }
175
176 public String getOnaftershow() {
177 return (String) getStateHelper().eval(PropertyKeys.onaftershow, null);
178 }
179
180 public void setOnaftershow(final String aftershow) {
181 getStateHelper().put(PropertyKeys.onaftershow, aftershow);
182 }
183
184 public String getOnbeforehide() {
185 return (String) getStateHelper().eval(PropertyKeys.onbeforehide, null);
186 }
187
188 public void setOnbeforehide(final String beforehide) {
189 getStateHelper().put(PropertyKeys.onbeforehide, beforehide);
190 }
191
192 public String getOnafterhide() {
193 return (String) getStateHelper().eval(PropertyKeys.onafterhide, null);
194 }
195
196 public void setOnafterhide(final String afterhide) {
197 getStateHelper().put(PropertyKeys.onafterhide, afterhide);
198 }
199
200 public String getOnbeforedone() {
201 return (String) getStateHelper().eval(PropertyKeys.onbeforedone, null);
202 }
203
204 public void setOnbeforedone(final String beforedone) {
205 getStateHelper().put(PropertyKeys.onbeforedone, beforedone);
206 }
207
208 public String getOnafterdone() {
209 return (String) getStateHelper().eval(PropertyKeys.onafterdone, null);
210 }
211
212 public void setOnafterdone(final String afterdone) {
213 getStateHelper().put(PropertyKeys.onafterdone, afterdone);
214 }
215
216 public String getOnafterampmselect() {
217 return (String) getStateHelper().eval(PropertyKeys.onafterampmselect, null);
218 }
219
220 public void setOnafterampmselect(final String afterampmselect) {
221 getStateHelper().put(PropertyKeys.onafterampmselect, afterampmselect);
222 }
223
224 public String getOnafterhourselect() {
225 return (String) getStateHelper().eval(PropertyKeys.onafterhourselect, null);
226 }
227
228 public void setOnafterhourselect(final String afterhourselect) {
229 getStateHelper().put(PropertyKeys.onafterhourselect, afterhourselect);
230 }
231
232 public String getOnbeforehourselect() {
233 return (String) getStateHelper().eval(PropertyKeys.onbeforehourselect, null);
234 }
235
236 public void setOnbeforehourselect(final String beforehourselect) {
237 getStateHelper().put(PropertyKeys.onbeforehourselect, beforehourselect);
238 }
239
240 public boolean isShowOnButton() {
241 return !"focus".equals(getShowOn());
242 }
243
244 public String getAppendTo() {
245 return (String) getStateHelper().eval(PropertyKeys.appendTo, "@(body)");
246 }
247
248 public void setAppendTo(String appendTo) {
249 getStateHelper().put(PropertyKeys.appendTo, appendTo);
250 }
251
252 public Locale calculateLocale(FacesContext fc) {
253 if (appropriateLocale == null) {
254 appropriateLocale = LocaleUtils.resolveLocale(fc, getLocale(), getClientId(fc));
255 }
256 return appropriateLocale;
257 }
258
259 @Override
260 public Object saveState(FacesContext context) {
261
262 appropriateLocale = null;
263
264 return super.saveState(context);
265 }
266 }