Package org.zkoss.zul

Class Timebox

All Implemented Interfaces:
Serializable, Cloneable, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.ext.Disable, org.zkoss.zk.ui.ext.Readonly, org.zkoss.zk.ui.ext.Scope, org.zkoss.zk.ui.sys.ComponentCtrl, Constrainted

public class Timebox extends DateTimeFormatInputElement
An input box for holding a time (a java.util.Date Object), but only Hour & Minute are used.

Default getZclass(): z-timebox. (since 3.5.0)

timebox supports below key events.

  • 0-9 : set the time digit depend on the position on the inner text box.
  • up : increase time digit depend on the position on the inner text box.
  • down : decrease time digit depend on the position on the inner text box.
  • delete : clear the time to empty (null)

Like Combobox and Datebox, the value of a read-only time box (InputElement.isReadonly()) can be changed by clicking the up or down button (though users cannot type anything in the input box).

Since 10.0.0, if cols is not set by user, it will match the formatted value at the beginning (or 5 when value is null).

Since:
3.0.0
Author:
Dennis Chen
See Also:
  • Field Details

  • Constructor Details

    • Timebox

      public Timebox()
    • Timebox

      public Timebox(Date date) throws org.zkoss.zk.ui.WrongValueException
      Throws:
      org.zkoss.zk.ui.WrongValueException
    • Timebox

      public Timebox(ZonedDateTime value) throws org.zkoss.zk.ui.WrongValueException
      Throws:
      org.zkoss.zk.ui.WrongValueException
    • Timebox

      public Timebox(LocalDateTime value) throws org.zkoss.zk.ui.WrongValueException
      Throws:
      org.zkoss.zk.ui.WrongValueException
    • Timebox

      public Timebox(LocalTime value) throws org.zkoss.zk.ui.WrongValueException
      Throws:
      org.zkoss.zk.ui.WrongValueException
  • Method Details

    • setFormat

      public void setFormat(String format) throws org.zkoss.zk.ui.WrongValueException
      Sets the date format.

      If null or empty is specified, getDefaultFormat() is assumed. Since 5.0.7, you could specify one of the following reserved words, and DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String) will be used to retrieve the real format.

      short DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String) with DateFormat.SHORT
      medium DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String) with DateFormat.MEDIUM
      long DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String) with DateFormat.LONG
      full DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String) with DateFormat.FULL

      In additions, the format could be a combination of the following pattern letters:

      Letter Date or Time Component Presentation Examples
      a Am/pm marker Text PM
      H Hour in day (0-23) Number 0
      k Hour in day (1-24) Number 24
      K Hour in am/pm (0-11) Number 0
      h Hour in am/pm (1-12) Number 12
      m Minute in hour Number 30
      s Second in minute Number 55
      Overrides:
      setFormat in class FormatInputElement
      Throws:
      org.zkoss.zk.ui.WrongValueException
      Since:
      5.0.0
    • getRealFormat

      public String getRealFormat()
      Returns the real format, i.e., the combination of the format patterns, such as hh:mm.

      As described in setFormat(java.lang.String), a developer could specify an abstract name, such as short, or an empty string as the format, and this method will convert it to a real time format.

      Overrides:
      getRealFormat in class FormatInputElement
      Since:
      5.0.7
    • setValueInLocalDate

      public void setValueInLocalDate(LocalDate value) throws org.zkoss.zk.ui.WrongValueException
      It is meaningless to set only LocalDate in timebox.
      Overrides:
      setValueInLocalDate in class DateTimeFormatInputElement
      Parameters:
      value - the date to be assigned to this component.
      Notice that, if this component does not allow users to select the time (i.e., the format limited to year, month and day), the date specified here is better to set hour, minutes, seconds and milliseconds to zero (for the current timezone, TimeZones.getCurrent()), so it is easier to work with other libraries, such as SQL. Dates has a set of utilities to simplify the task.
      Throws:
      org.zkoss.zk.ui.WrongValueException - if value is wrong
    • isButtonVisible

      public boolean isButtonVisible()
      Returns whether the button (on the right of the textbox) is visible.

      Default: true.

    • setButtonVisible

      public void setButtonVisible(boolean visible)
      Sets whether the button (on the right of the textbox) is visible.
    • setConstraint

      public void setConstraint(String constr)
      Overrides:
      setConstraint in class InputElement
      Parameters:
      constr - a list of constraints separated by comma. Example: between 093000 and 183000, before 210000
    • getDefaultFormat

      protected String getDefaultFormat()
      Returns the default format, which is used when constructing a timebox.

      Default: DateFormats.getTimeFormat(DEFAULT, null, "HH:mm") (see DateFormats.getTimeFormat(int, java.util.Locale, java.lang.String)).

      Though you might override this method to provide your own default format, it is suggested to specify the format for the current thread with DateFormats.setLocalFormatInfo(org.zkoss.text.DateFormatInfo).

      Since:
      5.0.7
    • coerceFromString

      protected Object coerceFromString(String value) throws org.zkoss.zk.ui.WrongValueException
      Description copied from class: InputElement
      Coerces the value passed to InputElement.setText(java.lang.String).

      Deriving note:
      If you want to store the value in other type, say BigDecimal, you have to override InputElement.coerceToString(java.lang.Object) and InputElement.coerceFromString(java.lang.String) to convert between a string and your targeting type.

      Moreover, when Textbox is called, it calls this method with value = null. Derives shall handle this case properly.

      Specified by:
      coerceFromString in class InputElement
      Throws:
      org.zkoss.zk.ui.WrongValueException
    • coerceToString

      protected String coerceToString(Object value)
      Description copied from class: InputElement
      Coerces the value passed to InputElement.setText(java.lang.String).

      Default: convert null to an empty string.

      Deriving note:
      If you want to store the value in other type, say BigDecimal, you have to override InputElement.coerceToString(java.lang.Object) and InputElement.coerceFromString(java.lang.String) to convert between a string and your targeting type.

      Specified by:
      coerceToString in class InputElement
    • getDateFormat

      protected DateFormat getDateFormat(String fmt)
      Returns the date format of the time only,

      Default: it uses SimpleDateFormat to format the date.

    • getZclass

      public String getZclass()
      Overrides:
      getZclass in class org.zkoss.zk.ui.HtmlBasedComponent
    • renderProperties

      protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer) throws IOException
      Overrides:
      renderProperties in class DateTimeFormatInputElement
      Throws:
      IOException
    • getPropertyAccess

      public org.zkoss.zk.ui.sys.PropertyAccess getPropertyAccess(String prop)
      Specified by:
      getPropertyAccess in interface org.zkoss.zk.ui.sys.ComponentCtrl
      Overrides:
      getPropertyAccess in class DateTimeFormatInputElement