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.apache.wicket.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 aDate
object. 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 containedDateTextField
by overridingnewDateTextField(String, PropertyModel)
and callingFormComponent.processInput()
:DateTimeField dateTimeField = new DateTimeField(...) { protected DateTextField newDateTextField(String id, PropertyModel
dateFieldModel) { DateTextField dateField = super.newDateTextField(id, dateFieldModel); dateField.add(new AjaxFormComponentUpdatingBehavior("change") { 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 class
DateTimeField.AM_PM
Enumerated type for different ways of handling the render part of requests.
-
Field Summary
Fields Modifier and Type Field Description protected static String
AM_OR_PM_CHOICE
protected static String
DATE
protected static String
HOURS
protected static String
MINUTES
-
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, RFLAG_CONTAINER_HAS_REMOVALS
-
-
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 Date
changeTimeZone(Date date, TimeZone zone)
Change a date in another timezoneprotected void
configure(Map<String,Object> widgetProperties)
Gives overriding classes the option of adding (or even changing/ removing) configuration properties for the javascript widget.void
convertInput()
Sets the converted input, which is an instance ofDate
, possibly null.DateTimeField.AM_PM
getAmOrPm()
Deprecated.valid during rendering onlyprotected TimeZone
getClientTimeZone()
Gets the client's time zone.Date
getDate()
Deprecated.valid during rendering onlyprotected DateTextField
getDateTextField()
Integer
getHours()
Deprecated.valid during rendering onlyString
getInput()
Integer
getMinutes()
Deprecated.valid during rendering onlyprotected Date
newDateInstance()
A factory method for the DateTextField's model object.protected Date
newDateInstance(long time)
A factory method for the DateTextField's model object.protected DatePicker
newDatePicker()
The DatePicker that gets added to the DateTimeField component.protected DateTextField
newDateTextField(String id, PropertyModel<Date> dateFieldModel)
create a newDateTextField
instance to be added to this panel.protected TextField<Integer>
newHoursTextField(String id, IModel<Integer> model, Class<Integer> type)
create a newTextField
instance for hours to be added to this panel.protected TextField<Integer>
newMinutesTextField(String id, IModel<Integer> model, Class<Integer> type)
create a newTextField
instance for minutes to be added to this panel.protected void
onBeforeRender()
void
setAmOrPm(DateTimeField.AM_PM amOrPm)
Sets the amOrPm model object associated with the drop down choice.void
setDate(Date date)
Sets the date model object associated with the date TextField.void
setHours(Integer hours)
Sets hours.void
setMinutes(Integer minutes)
Sets minutes.protected boolean
use12HourFormat()
Checks whether the currentLocale
uses 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, getParameterValues, 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, getMarkupTag, 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 newTextField
instance for hours to be added to this panel.- Parameters:
id
- the component idmodel
- model that should be used by theTextField
type
- 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 newTextField
instance for minutes to be added to this panel.- Parameters:
id
- the component idmodel
- model that should be used by theTextField
type
- 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:
getInput
in 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:
convertInput
in 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, PropertyModel<Date> dateFieldModel)
create a newDateTextField
instance 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:
onBeforeRender
in 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 currentLocale
uses the 12h or 24h time format. This method can be overridden to e.g. always use 24h format.- Returns:
- true, if the current
Locale
uses 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
DatePicker
instance
-
-