Class DateTimeField
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
-
- org.apache.wicket.markup.html.form.FormComponent<T>
-
- org.apache.wicket.markup.html.form.FormComponentPanel<Date>
-
- org.wicketstuff.datetime.extensions.yui.calendar.DateTimeField
-
- All Implemented Interfaces:
Serializable,Iterable<Component>,IEventSink,IEventSource,IFeedbackContributor,IConverterLocator,IGenericComponent<Date,FormComponent<Date>>,IMetadataContext<Serializable,Component>,IQueueRegion,IFormModelUpdateListener,IFormVisitorParticipant,ILabelProvider<String>,IHeaderContributor,IRequestableComponent,IHierarchical<Component>,IClusterable
public class DateTimeField extends FormComponentPanel<Date>
Works on aDateobject. Displays a date field and aDatePicker, a field for hours and a field for minutes, and an AM/PM field. The format (12h/24h) of the hours field depends on the time format of thisDateTimeField'sLocale, as does the visibility of the AM/PM field (seeuse12HourFormat()).Ajaxifying the DateTimeField: If you want to update a DateTimeField with an
AjaxFormComponentUpdatingBehavior, you have to attach it to the containedDateTextFieldby overridingnewDateTextField(String, IModel)and callingFormComponent.processInput():DateTimeField dateTimeField = new DateTimeField(...) { protected DateTextField newDateTextField(String id, IModel<Date> dateFieldModel) { DateTextField dateField = super.newDateTextField(id, dateFieldModel); dateField.add(new AjaxFormComponentUpdatingBehavior("change") { protected void onUpdate(AjaxRequestTarget target) { processInput(); // let DateTimeField process input too ... } }); return recorder; } }- Author:
- eelcohillenius
- See Also:
for a variant with just the date field and date picker, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDateTimeField.AM_PMEnumerated type for different ways of handling the render part of requests.
-
Field Summary
Fields Modifier and Type Field Description protected static StringAM_OR_PM_CHOICEprotected static StringDATEprotected static StringHOURSprotected static StringMINUTES-
Fields inherited from class org.apache.wicket.markup.html.form.FormComponent
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, VALUE_SEPARATOR
-
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING
-
-
Constructor Summary
Constructors Constructor Description DateTimeField(String id)Construct.DateTimeField(String id, IModel<Date> model)Construct.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static DatechangeTimeZone(Date date, TimeZone zone)Change a date in another timezoneprotected voidconfigure(Map<String,Object> widgetProperties)Gives overriding classes the option of adding (or even changing/ removing) configuration properties for the javascript widget.voidconvertInput()Sets the converted input, which is an instance ofDate, possibly null.DateTimeField.AM_PMgetAmOrPm()Deprecated.valid during rendering onlyprotected TimeZonegetClientTimeZone()Gets the client's time zone.DategetDate()Deprecated.valid during rendering onlyprotected DateTextFieldgetDateTextField()IntegergetHours()Deprecated.valid during rendering onlyStringgetInput()IntegergetMinutes()Deprecated.valid during rendering onlyprotected DatenewDateInstance()A factory method for the DateTextField's model object.protected DatenewDateInstance(long time)A factory method for the DateTextField's model object.protected DatePickernewDatePicker()The DatePicker that gets added to the DateTimeField component.protected DateTextFieldnewDateTextField(String id, IModel<Date> dateFieldModel)create a newDateTextFieldinstance to be added to this panel.protected TextField<Integer>newHoursTextField(String id, IModel<Integer> model, Class<Integer> type)create a newTextFieldinstance for hours to be added to this panel.protected TextField<Integer>newMinutesTextField(String id, IModel<Integer> model, Class<Integer> type)create a newTextFieldinstance for minutes to be added to this panel.protected voidonBeforeRender()voidsetAmOrPm(DateTimeField.AM_PM amOrPm)Sets the amOrPm model object associated with the drop down choice.voidsetDate(Date date)Sets the date model object associated with the date TextField.voidsetHours(Integer hours)Sets hours.voidsetMinutes(Integer minutes)Sets minutes.protected booleanuse12HourFormat()Checks whether the currentLocaleuses the 12h or 24h time format.-
Methods inherited from class org.apache.wicket.markup.html.form.FormComponentPanel
checkRequired, clearInput, newMarkupSourcingStrategy, onComponentTag
-
Methods inherited from class org.apache.wicket.markup.html.form.FormComponent
add, add, convertValue, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInputAsArray, getInputName, getModelValue, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isMultiPart, isRequired, isValid, newValidatable, newValidationError, onDetach, onDisabled, onInvalid, onValid, processChildren, processInput, remove, reportRequiredError, setConvertedInput, setLabel, setModelValue, setRequired, setType, shouldTrimInput, trim, updateAutoLabels, updateCollectionModel, updateModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
-
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
getLabel
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.wicket.IGenericComponent
getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject
-
Methods inherited from interface org.apache.wicket.IQueueRegion
dequeue, getRegionMarkup, newDequeueContext
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
DATE
protected static final String DATE
- See Also:
- Constant Field Values
-
HOURS
protected static final String HOURS
- See Also:
- Constant Field Values
-
MINUTES
protected static final String MINUTES
- See Also:
- Constant Field Values
-
AM_OR_PM_CHOICE
protected static final String AM_OR_PM_CHOICE
- See Also:
- Constant Field Values
-
-
Method Detail
-
newHoursTextField
protected TextField<Integer> newHoursTextField(String id, IModel<Integer> model, Class<Integer> type)
create a newTextFieldinstance for hours to be added to this panel.- Parameters:
id- the component idmodel- model that should be used by theTextFieldtype- the type of the text field- Returns:
- a new text field instance
-
newMinutesTextField
protected TextField<Integer> newMinutesTextField(String id, IModel<Integer> model, Class<Integer> type)
create a newTextFieldinstance for minutes to be added to this panel.- Parameters:
id- the component idmodel- model that should be used by theTextFieldtype- the type of the text field- Returns:
- a new text field instance
-
getDateTextField
protected final DateTextField getDateTextField()
- Returns:
- The date TextField
-
getAmOrPm
public final DateTimeField.AM_PM getAmOrPm()
Deprecated.valid during rendering onlyGets the amOrPm model object of the drop down choice.- Returns:
- amOrPm
-
getDate
public final Date getDate()
Deprecated.valid during rendering onlyGets the date model object for the date TextField. Any associated time information will be ignored.- Returns:
- date
-
getHours
public final Integer getHours()
Deprecated.valid during rendering onlyGets the hours model object for the TextField- Returns:
- hours
-
getMinutes
public final Integer getMinutes()
Deprecated.valid during rendering onlyGets the minutes model object for the TextField- Returns:
- minutes
-
configure
protected void configure(Map<String,Object> widgetProperties)
Gives overriding classes the option of adding (or even changing/ removing) configuration properties for the javascript widget. See the widget's documentation for the available options. If you want to override/ remove properties, you should call super.configure(properties) first. If you don't call that, be aware that you will have to callconfigure(java.util.Map)manually if you like localized strings to be added.- Parameters:
widgetProperties- the current widget properties
-
getInput
public String getInput()
- Overrides:
getInputin classFormComponent<Date>
-
setAmOrPm
public final void setAmOrPm(DateTimeField.AM_PM amOrPm)
Sets the amOrPm model object associated with the drop down choice.- Parameters:
amOrPm- amOrPm
-
setDate
public final void setDate(Date date)
Sets the date model object associated with the date TextField. It does not affect hours or minutes.- Parameters:
date- date
-
setHours
public final void setHours(Integer hours)
Sets hours.- Parameters:
hours- hours
-
setMinutes
public final void setMinutes(Integer minutes)
Sets minutes.- Parameters:
minutes- minutes
-
getClientTimeZone
protected TimeZone getClientTimeZone()
Gets the client's time zone.- Returns:
- The client's time zone or null
-
convertInput
public void convertInput()
Sets the converted input, which is an instance ofDate, possibly null. It combines the inputs of the nested date, hours, minutes and am/pm fields and constructs a date from it.Note that overriding this method is a better option than overriding
FormComponent.updateModel()like the first versions of this class did. The reason for that is that this method can be used by form validators without having to depend on the actual model being updated, and this method is called by the default implementation ofFormComponent.updateModel()anyway (so we don't have to override that anymore).- Overrides:
convertInputin classFormComponent<Date>
-
newDateInstance
protected Date newDateInstance()
A factory method for the DateTextField's model object.- Returns:
- any specialization of java.util.Date
-
newDateInstance
protected Date newDateInstance(long time)
A factory method for the DateTextField's model object.- Parameters:
time- the time in milliseconds- Returns:
- any specialization of java.util.Date
-
newDateTextField
protected DateTextField newDateTextField(String id, IModel<Date> dateFieldModel)
create a newDateTextFieldinstance to be added to this panel.- Parameters:
id- the component iddateFieldModel- model that should be used by theDateTextField- Returns:
- a new date text field instance
-
onBeforeRender
protected void onBeforeRender()
- Overrides:
onBeforeRenderin classComponent- See Also:
Component.onBeforeRender()
-
changeTimeZone
public static Date changeTimeZone(Date date, TimeZone zone)
Change a date in another timezone- Parameters:
date- The input date.zone- The target timezone.- Returns:
- A new converted date.
-
use12HourFormat
protected boolean use12HourFormat()
Checks whether the currentLocaleuses the 12h or 24h time format. This method can be overridden to e.g. always use 24h format.- Returns:
- true, if the current
Localeuses the 12h format.
false, otherwise
-
newDatePicker
protected DatePicker newDatePicker()
The DatePicker that gets added to the DateTimeField component. Users may override this method with a DatePicker of their choice.- Returns:
- a new
DatePickerinstance
-
-