Class TextAreaItem

All Implemented Interfaces:
HasHandlers, HasBlurHandlers, HasChangedHandlers, HasChangeHandlers, HasClickHandlers, HasDoubleClickHandlers, HasEditorEnterHandlers, HasEditorExitHandlers, HasFocusHandlers, HasIconClickHandlers, HasIconKeyPressHandlers, HasItemHoverHandlers, HasKeyDownHandlers, HasKeyPressHandlers, HasKeyUpHandlers, HasPendingStatusChangedHandlers, HasPickerIconClickHandlers, HasShowContextMenuHandlers, HasTitleClickHandlers, HasTitleDoubleClickHandlers, HasTitleHoverHandlers, HasValueHoverHandlers, HasValueIconClickHandlers
Direct Known Subclasses:
AutoFitTextAreaItem

public class TextAreaItem extends FormItem
Class for editable multi-line text areas (uses HTML <TEXTAREA> object)
  • Constructor Details

    • TextAreaItem

      public TextAreaItem()
    • TextAreaItem

      public TextAreaItem(JavaScriptObject jsObj)
    • TextAreaItem

      public TextAreaItem(String name)
    • TextAreaItem

      public TextAreaItem(String name, String title)
  • Method Details

    • getOrCreateRef

      public static TextAreaItem getOrCreateRef(JavaScriptObject jsObj)
    • changeAutoChildDefaults

      public static void changeAutoChildDefaults(String autoChildName, Canvas defaults)
      Changes the defaults for Canvas AutoChildren named autoChildName.
      Parameters:
      autoChildName - name of an AutoChild to customize the defaults for.
      defaults - Canvas defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see SGWTProperties.
      See Also:
    • changeAutoChildDefaults

      public static void changeAutoChildDefaults(String autoChildName, FormItem defaults)
      Changes the defaults for FormItem AutoChildren named autoChildName.
      Parameters:
      autoChildName - name of an AutoChild to customize the defaults for.
      defaults - FormItem defaults to apply. These defaults override any existing properties without destroying or wiping out non-overridden properties. For usage tips on this param, see SGWTProperties.
      See Also:
    • changePickerIconDefaults

      public static void changePickerIconDefaults(FormItemIcon defaults)
    • setBrowserAutoCapitalize

      public TextAreaItem setBrowserAutoCapitalize(Boolean browserAutoCapitalize)

      Note : This is an advanced setting

      Parameters:
      browserAutoCapitalize - New browserAutoCapitalize value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getBrowserAutoCapitalize

      public Boolean getBrowserAutoCapitalize()
      Returns:
      Current browserAutoCapitalize value. Default value is null
    • setBrowserAutoCorrect

      public TextAreaItem setBrowserAutoCorrect(Boolean browserAutoCorrect)
      In Mobile Safari, should automatic correction be offered for text in the item's text box? If null, then Mobile Safari determines automatically whether to enable autocorrect.

      When enabled, Mobile Safari displays "autocorrect bubbles" to suggest automatic corrections:
      Screenshot of Mobile Safari suggesting "On my way!" to replace "omw"

      Note : This is an advanced setting

      Parameters:
      browserAutoCorrect - New browserAutoCorrect value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getBrowserAutoCorrect

      public Boolean getBrowserAutoCorrect()
      In Mobile Safari, should automatic correction be offered for text in the item's text box? If null, then Mobile Safari determines automatically whether to enable autocorrect.

      When enabled, Mobile Safari displays "autocorrect bubbles" to suggest automatic corrections:
      Screenshot of Mobile Safari suggesting "On my way!" to replace "omw"

      Returns:
      Current browserAutoCorrect value. Default value is null
    • setChangeOnKeypress

      public TextAreaItem setChangeOnKeypress(Boolean changeOnKeypress)
      Should this form item fire its change handler (and store its value in the form) on every keypress? Set to false to suppress the 'change' handler firing (and the value stored) on every keypress.

      Note: If false, the value returned by getValue will not reflect the value displayed in the form item element as long as focus is in the form item element.

      Overrides:
      setChangeOnKeypress in class FormItem
      Parameters:
      changeOnKeypress - New changeOnKeypress value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getChangeOnKeypress

      public Boolean getChangeOnKeypress()
      Should this form item fire its change handler (and store its value in the form) on every keypress? Set to false to suppress the 'change' handler firing (and the value stored) on every keypress.

      Note: If false, the value returned by getValue will not reflect the value displayed in the form item element as long as focus is in the form item element.

      Overrides:
      getChangeOnKeypress in class FormItem
      Returns:
      Current changeOnKeypress value. Default value is true
    • setEditProxyConstructor

      public TextAreaItem setEditProxyConstructor(String editProxyConstructor)
      Default class used to construct the EditProxy for this component when the component is first placed into edit mode.
      Overrides:
      setEditProxyConstructor in class FormItem
      Parameters:
      editProxyConstructor - New editProxyConstructor value. Default value is "TextAreaItemEditProxy"
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getEditProxyConstructor

      public String getEditProxyConstructor()
      Default class used to construct the EditProxy for this component when the component is first placed into edit mode.
      Overrides:
      getEditProxyConstructor in class FormItem
      Returns:
      Current editProxyConstructor value. Default value is "TextAreaItemEditProxy"
      See Also:
    • setEnforceLength

      public TextAreaItem setEnforceLength(boolean enforceLength)
      If a length is specified for this item, should user input be limited to the specified length? If set to true, user input and values passed to setValue() will be trimmed to the specified length. Otherwise values exceeding the specified length will raise an error on validation.

      Note that having this value set to true limits user interactivity in some ways. For example users would be unable to paste a longer string into the field for editing without seeing it be truncated. Given how text areas are typically used to edit longer values than non-wrapping TextItems, this value is false by default for textAreaItems.

      Parameters:
      enforceLength - New enforceLength value. Default value is false
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getEnforceLength

      public boolean getEnforceLength()
      If a length is specified for this item, should user input be limited to the specified length? If set to true, user input and values passed to setValue() will be trimmed to the specified length. Otherwise values exceeding the specified length will raise an error on validation.

      Note that having this value set to true limits user interactivity in some ways. For example users would be unable to paste a longer string into the field for editing without seeing it be truncated. Given how text areas are typically used to edit longer values than non-wrapping TextItems, this value is false by default for textAreaItems.

      Returns:
      Current enforceLength value. Default value is false
    • setEscapeHTML

      public TextAreaItem setEscapeHTML(Boolean escapeHTML)
      By default HTML characters will be escaped when canEdit is false and readOnlyDisplay is "static", so that the raw value of the field (for example "<b>AAA</b>") is displayed to the user rather than the interpreted HTML (for example "AAA"). Setting escapeHTML false will instead force HTML values in a textAreaItem to be interpreted by the browser in that situation.
      Overrides:
      setEscapeHTML in class FormItem
      Parameters:
      escapeHTML - New escapeHTML value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getEscapeHTML

      public Boolean getEscapeHTML()
      By default HTML characters will be escaped when canEdit is false and readOnlyDisplay is "static", so that the raw value of the field (for example "<b>AAA</b>") is displayed to the user rather than the interpreted HTML (for example "AAA"). Setting escapeHTML false will instead force HTML values in a textAreaItem to be interpreted by the browser in that situation.
      Overrides:
      getEscapeHTML in class FormItem
      Returns:
      Current escapeHTML value. Default value is true
      See Also:
    • setFormatOnBlur

      public TextAreaItem setFormatOnBlur(Boolean formatOnBlur)
      With formatOnBlur enabled, this textAreaItem will format its value according to the rules described in FormItem.mapValueToDisplay() as long as the item does not have focus. Once the user puts focus into the item the formatter will be removed. This provides a simple way for developers to show a nicely formatted display value in a freeform text field, without the need for an explicit FormItem.formatEditorValue() and FormItem.parseEditorValue() pair.
      Parameters:
      formatOnBlur - New formatOnBlur value. Default value is false
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getFormatOnBlur

      public Boolean getFormatOnBlur()
      With formatOnBlur enabled, this textAreaItem will format its value according to the rules described in FormItem.mapValueToDisplay() as long as the item does not have focus. Once the user puts focus into the item the formatter will be removed. This provides a simple way for developers to show a nicely formatted display value in a freeform text field, without the need for an explicit FormItem.formatEditorValue() and FormItem.parseEditorValue() pair.
      Returns:
      Current formatOnBlur value. Default value is false
    • setHeight

      public TextAreaItem setHeight(int height)
      Default height of this item

      Note that when item is rendered as read-only with readOnlyDisplay as "static" the property FormItem.staticHeight is used instead.

      Overrides:
      setHeight in class FormItem
      Parameters:
      height - New height value. Default value is 100
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getHeight

      public int getHeight()
      Default height of this item

      Note that when item is rendered as read-only with readOnlyDisplay as "static" the property FormItem.staticHeight is used instead.

      Overrides:
      getHeight in class FormItem
      Returns:
      Current height value. Default value is 100
      See Also:
    • setIconVAlign

      public TextAreaItem setIconVAlign(VerticalAlignment iconVAlign)
      Align icons with the top edge of text area icons by default.
      Overrides:
      setIconVAlign in class FormItem
      Parameters:
      iconVAlign - New iconVAlign value. Default value is Canvas.TOP
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getIconVAlign

      public VerticalAlignment getIconVAlign()
      Align icons with the top edge of text area icons by default.
      Overrides:
      getIconVAlign in class FormItem
      Returns:
      Current iconVAlign value. Default value is Canvas.TOP
    • setLength

      public TextAreaItem setLength(Integer length)
      If set, maximum number of characters for this field. If enforceLength is set to true, user input will be limited to this value, and values exceeding this length passed to setValue() will be trimmed. Otherwise values exceeding the specified length will raise an error on validation.

      See also DataSourceField.length.

      Parameters:
      length - New length value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getLength

      public Integer getLength()
      If set, maximum number of characters for this field. If enforceLength is set to true, user input will be limited to this value, and values exceeding this length passed to setValue() will be trimmed. Otherwise values exceeding the specified length will raise an error on validation.

      See also DataSourceField.length.

      Returns:
      Current length value. Default value is null
      See Also:
    • setMinHeight

      public TextAreaItem setMinHeight(int minHeight)
      Minimum valid height for this TextAreaItem in px. If the specified height is less than this value, the text area will still render at this height.
      Parameters:
      minHeight - New minHeight value. Default value is 16
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getMinHeight

      public int getMinHeight()
      Minimum valid height for this TextAreaItem in px. If the specified height is less than this value, the text area will still render at this height.
      Returns:
      Current minHeight value. Default value is 16
    • setPickerIconHeight

      public TextAreaItem setPickerIconHeight(Integer pickerIconHeight)
      TextAreaItem has an explicit pickerIconHeight as we don't want the picker icon, if shown, to size itself to match the height of the item.
      Overrides:
      setPickerIconHeight in class FormItem
      Parameters:
      pickerIconHeight - New pickerIconHeight value. Default value is 20
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getPickerIconHeight

      public Integer getPickerIconHeight()
      TextAreaItem has an explicit pickerIconHeight as we don't want the picker icon, if shown, to size itself to match the height of the item.
      Overrides:
      getPickerIconHeight in class FormItem
      Returns:
      Current pickerIconHeight value. Default value is 20
    • setPrintFullText

      public TextAreaItem setPrintFullText(Boolean printFullText)
      When generating a print-view of the component containing this TextArea, should the form item expand to accommodate its value? If set to false the text box not expand to fit its content in the print view, instead showing exactly as it does in the live form, possibly with scrollbars.
      Parameters:
      printFullText - New printFullText value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getPrintFullText

      public Boolean getPrintFullText()
      When generating a print-view of the component containing this TextArea, should the form item expand to accommodate its value? If set to false the text box not expand to fit its content in the print view, instead showing exactly as it does in the live form, possibly with scrollbars.
      Returns:
      Current printFullText value. Default value is true
      See Also:
    • setSelectOnClick

      public TextAreaItem setSelectOnClick(Boolean selectOnClick)
      Allows the selectOnClick behavior to be configured on a per-FormItem basis. Normally all items in a form default to the value of DynamicForm.selectOnClick.
      Overrides:
      setSelectOnClick in class FormItem
      Parameters:
      selectOnClick - New selectOnClick value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getSelectOnClick

      public Boolean getSelectOnClick()
      Allows the selectOnClick behavior to be configured on a per-FormItem basis. Normally all items in a form default to the value of DynamicForm.selectOnClick.
      Overrides:
      getSelectOnClick in class FormItem
      Returns:
      Current selectOnClick value. Default value is null
      See Also:
    • setSelectOnFocus

      public TextAreaItem setSelectOnFocus(Boolean selectOnFocus)
      Allows the selectOnFocus behavior to be configured on a per-FormItem basis. Normally all items in a form default to the value of DynamicForm.selectOnFocus.
      Overrides:
      setSelectOnFocus in class FormItem
      Parameters:
      selectOnFocus - New selectOnFocus value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getSelectOnFocus

      public Boolean getSelectOnFocus()
      Allows the selectOnFocus behavior to be configured on a per-FormItem basis. Normally all items in a form default to the value of DynamicForm.selectOnFocus.
      Overrides:
      getSelectOnFocus in class FormItem
      Returns:
      Current selectOnFocus value. Default value is null
      See Also:
    • setShowHintInField

      public TextAreaItem setShowHintInField(Boolean showHintInField)
      If showing a hint for this form item, should the hint be shown within the field?

      Unless the HTML5 placeholder attribute is used to display the hint (see usePlaceholderForHint), the value of the <input> element for this item will be set to the hint whenever this item is not focused. Also, when displaying the hint, the CSS style of the data element will be set to the textBoxStyle with the suffix "Hint" appended to it; or, if the item is disabled, the suffix "DisabledHint" will be used. In RTL mode when showRTL is true, an additional "RTL" suffix will be appended; i.e. the CSS style of the data element when the hint is displayed will be the textBoxStyle plus "HintRTL" or "DisabledHintRTL".

      To change this attribute after being drawn, it is necessary to call FormItem.redraw() or redraw the form.

      Styling the in-field hint

      The in-field hint can be styled with CSS for the textBoxStyle + "Hint" / "HintRTL" / "DisabledHint" / "DisabledHintRTL" styles. For example, if this item's textBoxStyle is set to "mySpecialItem", then changing the hint color to blue can be accomplished with the following CSS:
      .mySpecialItemHint,
       .mySpecialItemHintRTL,
       .mySpecialItemDisabledHint,
       .mySpecialItemDisabledHintRTL {
           color: blue;
       }

      In DynamicForm.linearMode, this property will be defaulted true if left unset.

      Parameters:
      showHintInField - New showHintInField value. Default value is null
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getShowHintInField

      public Boolean getShowHintInField()
      If showing a hint for this form item, should the hint be shown within the field?

      Unless the HTML5 placeholder attribute is used to display the hint (see usePlaceholderForHint), the value of the <input> element for this item will be set to the hint whenever this item is not focused. Also, when displaying the hint, the CSS style of the data element will be set to the textBoxStyle with the suffix "Hint" appended to it; or, if the item is disabled, the suffix "DisabledHint" will be used. In RTL mode when showRTL is true, an additional "RTL" suffix will be appended; i.e. the CSS style of the data element when the hint is displayed will be the textBoxStyle plus "HintRTL" or "DisabledHintRTL".

      To change this attribute after being drawn, it is necessary to call FormItem.redraw() or redraw the form.

      Styling the in-field hint

      The in-field hint can be styled with CSS for the textBoxStyle + "Hint" / "HintRTL" / "DisabledHint" / "DisabledHintRTL" styles. For example, if this item's textBoxStyle is set to "mySpecialItem", then changing the hint color to blue can be accomplished with the following CSS:
      .mySpecialItemHint,
       .mySpecialItemHintRTL,
       .mySpecialItemDisabledHint,
       .mySpecialItemDisabledHintRTL {
           color: blue;
       }

      In DynamicForm.linearMode, this property will be defaulted true if left unset.

      Returns:
      Current showHintInField value. Default value is null
      See Also:
    • setShowInputElement

      public TextAreaItem setShowInputElement(boolean showInputElement)
      When set to false, prevents this item's input element from being written into the DOM. If there are valueIcons or a picker icon, these are displayed as normal, and the item will auto-sizing to that content if its width is set to null.

      Note : This is an advanced setting

      Parameters:
      showInputElement - New showInputElement value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getShowInputElement

      public boolean getShowInputElement()
      When set to false, prevents this item's input element from being written into the DOM. If there are valueIcons or a picker icon, these are displayed as normal, and the item will auto-sizing to that content if its width is set to null.
      Returns:
      Current showInputElement value. Default value is true
    • setStaticHeight

      public TextAreaItem setStaticHeight(Integer staticHeight)
      Height of the FormItem when canEdit is false and readOnlyDisplay is "static". The normal height is used if this property is not set.
      Overrides:
      setStaticHeight in class FormItem
      Parameters:
      staticHeight - New staticHeight value. Default value is 1
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getStaticHeight

      public Integer getStaticHeight()
      Height of the FormItem when canEdit is false and readOnlyDisplay is "static". The normal height is used if this property is not set.
      Overrides:
      getStaticHeight in class FormItem
      Returns:
      Current staticHeight value. Default value is 1
      See Also:
    • setSupportsCutPasteEvents

      public TextAreaItem setSupportsCutPasteEvents(boolean supportsCutPasteEvents)
      Does the current formItem support native cut and paste events?

      This attribute only applies to freeform text entry fields such as TextItem and TextAreaItem, and only if changeOnKeypress is true. If true, developers can detect the user editing the value via cut or paste interactions (triggered from keyboard shortcuts or the native browser menu options) using the FormItem.isCutEvent() and FormItem.isPasteEvent() methods. This allows custom cut/paste handling to be added to the various change notification flow methods including FormItem.change(), and FormItem.transformInput().

      Overrides:
      setSupportsCutPasteEvents in class FormItem
      Parameters:
      supportsCutPasteEvents - New supportsCutPasteEvents value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
    • getSupportsCutPasteEvents

      public boolean getSupportsCutPasteEvents()
      Does the current formItem support native cut and paste events?

      This attribute only applies to freeform text entry fields such as TextItem and TextAreaItem, and only if changeOnKeypress is true. If true, developers can detect the user editing the value via cut or paste interactions (triggered from keyboard shortcuts or the native browser menu options) using the FormItem.isCutEvent() and FormItem.isPasteEvent() methods. This allows custom cut/paste handling to be added to the various change notification flow methods including FormItem.change(), and FormItem.transformInput().

      Overrides:
      getSupportsCutPasteEvents in class FormItem
      Returns:
      Current supportsCutPasteEvents value. Default value is true
    • setTextBoxStyle

      public TextAreaItem setTextBoxStyle(String textBoxStyle)
      Base CSS class to apply to this item's input element. NOTE: See the CompoundFormItem_skinning discussion for special skinning considerations.
      Overrides:
      setTextBoxStyle in class FormItem
      Parameters:
      textBoxStyle - New textBoxStyle value. Default value is "textItem"
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getTextBoxStyle

      public String getTextBoxStyle()
      Base CSS class to apply to this item's input element. NOTE: See the CompoundFormItem_skinning discussion for special skinning considerations.
      Overrides:
      getTextBoxStyle in class FormItem
      Returns:
      Current textBoxStyle value. Default value is "textItem"
      See Also:
    • setUsePlaceholderForHint

      public TextAreaItem setUsePlaceholderForHint(boolean usePlaceholderForHint)
      If showing the hint in field and if supported by the browser, should the HTML5 placeholder attribute be used to display the hint within the field? If set to false, then use of the placeholder attribute is disabled and an alternative technique to display the hint in-field is used instead.

      The HTML5 placeholder attribute is supported in the following major browsers:

      • Chrome 4+
      • Firefox 4+
      • Internet Explorer 10+
      • Safari 5+
      • Opera 11.50+
      • Android 2.1+ WebView (used by the stock Browser app and when packaging with PhoneGap)
      • Mobile Safari for iOS 3.2+

      In browsers other than the above, in-field hints are implemented via a different technique.

      Note that placeholder behavior is known to differ in Internet Explorer and certain old versions of the above browsers due to a recent change in the HTML5 specification regarding the placeholder attribute. Under the old rules, the placeholder is cleared when the element is focused. In the latest HTML5 spec as published by WHATWG, the placeholder is still displayed when the element is focused as long as the value is an empty string.

      Styling the placeholder

      While there isn't a standard way to style the placeholder text, Chrome, Firefox, Internet Explorer, and Safari provide vendor-prefixed pseudo-classes and/or pseudo-elements that can be used in CSS selectors:
      Browser Pseudo-class or pseudo-element
      Chrome, Safari ::-webkit-input-placeholder
      Firefox 4 - 18 :-moz-placeholder
      Firefox 19+ ::-moz-placeholder
      Internet Explorer :-ms-input-placeholder

      Note that unlike other browsers, Firefox 19+ applies opacity:0.4 to the placeholder text. See Bug 556145 - Placeholder text default style should use opacity instead of GrayText

      Because browsers are required to ignore the entire rule if a selector is invalid, separate rules are needed for each browser. For example:

      ::-webkit-input-placeholder {
           color: blue;
           opacity: 1;
       }
       :-moz-placeholder {
           color: blue;
           opacity: 1;
       }
       ::-moz-placeholder {
           color: blue;
           opacity: 1;
       }
       :-ms-input-placeholder {
           color: blue;
           opacity: 1;
       }

      If using Sass, it may be useful to utilize Sass' parent selector feature. For example:

      .myCustomItem,
       .myCustomItemRTL,
       .myCustomItemDisabled,
       .myCustomItemDisabledRTL,
       .myCustomItemError,
       .myCustomItemErrorRTL,
       .myCustomItemFocused,
       .myCustomItemFocusedRTL,
       .myCustomItemHint,
       .myCustomItemHintRTL,
       .myCustomItemDisabledHint,
       .myCustomItemDisabledHintRTL {
           // ...
       
           &::-webkit-input-placeholder {
               color: blue;
               opacity: 1;
           }
           &:-moz-placeholder {
               color: blue;
               opacity: 1;
           }
           &::-moz-placeholder {
               color: blue;
               opacity: 1;
           }
           &:-ms-input-placeholder {
               color: blue;
               opacity: 1;
           }
       }

      If using Compass, the input-placeholder mixin that was added in version 1.0 can further simplify the code to style the placeholder text For example:

      .myCustomItem,
       .myCustomItemRTL,
       .myCustomItemDisabled,
       .myCustomItemDisabledRTL,
       .myCustomItemError,
       .myCustomItemErrorRTL,
       .myCustomItemFocused,
       .myCustomItemFocusedRTL,
       .myCustomItemHint,
       .myCustomItemHintRTL,
       .myCustomItemDisabledHint,
       .myCustomItemDisabledHintRTL {
           // ...
       
           @include input-placeholder {
               color: blue;
               opacity: 1;
           }
       }

      Accessibility concerns

      The HTML5 specification notes that a placeholder should not be used as a replacement for a title. The placeholder is intended to be a short hint that assists the user who is entering a value into the empty field. The placeholder can be mistaken by some users for a pre-filled value, particularly in Internet Explorer because the same color is used, and the placeholder text color may provide insufficient contrast, particularly in Firefox 19+ because of the default 0.4 opacity. Furthermore, not having a title reduces the hit area available for setting focus on the item.

      Note : This is an advanced setting

      Parameters:
      usePlaceholderForHint - New usePlaceholderForHint value. Default value is true
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getUsePlaceholderForHint

      public boolean getUsePlaceholderForHint()
      If showing the hint in field and if supported by the browser, should the HTML5 placeholder attribute be used to display the hint within the field? If set to false, then use of the placeholder attribute is disabled and an alternative technique to display the hint in-field is used instead.

      The HTML5 placeholder attribute is supported in the following major browsers:

      • Chrome 4+
      • Firefox 4+
      • Internet Explorer 10+
      • Safari 5+
      • Opera 11.50+
      • Android 2.1+ WebView (used by the stock Browser app and when packaging with PhoneGap)
      • Mobile Safari for iOS 3.2+

      In browsers other than the above, in-field hints are implemented via a different technique.

      Note that placeholder behavior is known to differ in Internet Explorer and certain old versions of the above browsers due to a recent change in the HTML5 specification regarding the placeholder attribute. Under the old rules, the placeholder is cleared when the element is focused. In the latest HTML5 spec as published by WHATWG, the placeholder is still displayed when the element is focused as long as the value is an empty string.

      Styling the placeholder

      While there isn't a standard way to style the placeholder text, Chrome, Firefox, Internet Explorer, and Safari provide vendor-prefixed pseudo-classes and/or pseudo-elements that can be used in CSS selectors:
      Browser Pseudo-class or pseudo-element
      Chrome, Safari ::-webkit-input-placeholder
      Firefox 4 - 18 :-moz-placeholder
      Firefox 19+ ::-moz-placeholder
      Internet Explorer :-ms-input-placeholder

      Note that unlike other browsers, Firefox 19+ applies opacity:0.4 to the placeholder text. See Bug 556145 - Placeholder text default style should use opacity instead of GrayText

      Because browsers are required to ignore the entire rule if a selector is invalid, separate rules are needed for each browser. For example:

      ::-webkit-input-placeholder {
           color: blue;
           opacity: 1;
       }
       :-moz-placeholder {
           color: blue;
           opacity: 1;
       }
       ::-moz-placeholder {
           color: blue;
           opacity: 1;
       }
       :-ms-input-placeholder {
           color: blue;
           opacity: 1;
       }

      If using Sass, it may be useful to utilize Sass' parent selector feature. For example:

      .myCustomItem,
       .myCustomItemRTL,
       .myCustomItemDisabled,
       .myCustomItemDisabledRTL,
       .myCustomItemError,
       .myCustomItemErrorRTL,
       .myCustomItemFocused,
       .myCustomItemFocusedRTL,
       .myCustomItemHint,
       .myCustomItemHintRTL,
       .myCustomItemDisabledHint,
       .myCustomItemDisabledHintRTL {
           // ...
       
           &::-webkit-input-placeholder {
               color: blue;
               opacity: 1;
           }
           &:-moz-placeholder {
               color: blue;
               opacity: 1;
           }
           &::-moz-placeholder {
               color: blue;
               opacity: 1;
           }
           &:-ms-input-placeholder {
               color: blue;
               opacity: 1;
           }
       }

      If using Compass, the input-placeholder mixin that was added in version 1.0 can further simplify the code to style the placeholder text For example:

      .myCustomItem,
       .myCustomItemRTL,
       .myCustomItemDisabled,
       .myCustomItemDisabledRTL,
       .myCustomItemError,
       .myCustomItemErrorRTL,
       .myCustomItemFocused,
       .myCustomItemFocusedRTL,
       .myCustomItemHint,
       .myCustomItemHintRTL,
       .myCustomItemDisabledHint,
       .myCustomItemDisabledHintRTL {
           // ...
       
           @include input-placeholder {
               color: blue;
               opacity: 1;
           }
       }

      Accessibility concerns

      The HTML5 specification notes that a placeholder should not be used as a replacement for a title. The placeholder is intended to be a short hint that assists the user who is entering a value into the empty field. The placeholder can be mistaken by some users for a pre-filled value, particularly in Internet Explorer because the same color is used, and the placeholder text color may provide insufficient contrast, particularly in Firefox 19+ because of the default 0.4 opacity. Furthermore, not having a title reduces the hit area available for setting focus on the item.
      Returns:
      Current usePlaceholderForHint value. Default value is true
      See Also:
    • setWidth

      public TextAreaItem setWidth(int width)
      default width of this item
      Overrides:
      setWidth in class FormItem
      Parameters:
      width - New width value. Default value is 150
      Returns:
      TextAreaItem instance, for chaining setter calls
      See Also:
    • getWidth

      public int getWidth()
      default width of this item
      Overrides:
      getWidth in class FormItem
      Returns:
      Current width value. Default value is 150
      See Also:
    • deselectValue

      public void deselectValue()
      If this item currently has focus, clear the current selection. leaving focus in the item. Has no effect if the item is undrawn or unfocused. Only applies to text-based items.
    • deselectValue

      public void deselectValue(Boolean start)
      If this item currently has focus, clear the current selection. leaving focus in the item. Has no effect if the item is undrawn or unfocused. Only applies to text-based items.
      Parameters:
      start - By default the text insertion cursor will be moved to the end of the current value - pass in this parameter to move to the start instead
    • getEnteredValue

      public String getEnteredValue()
      Returns the raw text value that currently appears in the text field, which can differ from FormItem.getValue() in various cases - for example:
      Returns:
      current entered value
    • getSelectionRange

      public int[] getSelectionRange()
      For text-based items, this method returns the indices of the start/end of the current selection if the item currently has the focus. In browsers other than Internet Explorer 6-9, if this item does not have focus, then this method returns the indices of the start/end of the selection the last time that this item had focus. In IE 6-9, returns null if the item does not have focus.

      In all browsers, clicking anywhere outside of the item causes the item to lose focus; hence, in IE 6-9, this method will not work in other components' event handlers for certain events. For example, within the click() handler of a button, this item will have already lost focus, so in IE 6-9, this method will return null if called within the button's click() handler. One cross-browser solution to this issue is to save the selection range for later in a mouseDown() or mouseOver() handler.

      Notes:

      • In browsers other than IE 6-9, calling setValue() or otherwise changing the entered value invalidates the past selection range.
      • The returned indices are indices within the entered value rather than the item's value as returned by getValue(). The distinction is particularly important for TextAreaItems because browsers normalize the line endings in the <textarea> element's value. Internet Explorer 6, 7, and 8 convert line endings to "\r\n" while other browsers convert line endings to "\n" as specified by the HTML5 standard.
      Returns:
      2 element array showing character index of the current or past selection's start and end points within this item's entered value. In IE 6-9, returns null if the item does not have focus.
    • selectValue

      public void selectValue()
      Put focus in this item and select the entire value. Only applies to text based items
    • setSelectionRange

      public void setSelectionRange(int start, int end)
      Puts focus into this form item and selects characters between the given indices. Only applies to drawn text based items.
      Parameters:
      start - selection starting character index
      end - end of selection character index
    • transformPastedValue

      public String transformPastedValue(FormItem item, DynamicForm form, String pastedValue)
      Notification fired in response to a clipboard "paste" event on freeform text items, giving developers an opportunity to reformat the pasted text. The pastedValue argument contains the text pasted from the clipboard. This method should return the text value to actually insert into the input element.
      Parameters:
      item - Item into which the user pasted a value
      form - Pointer to the item's form
      pastedValue - Pasted text value
      Returns:
      Reformatted version of the pasted text.
    • setDefaultProperties

      public static void setDefaultProperties(TextAreaItem textAreaItemProperties)
      Class level method to set the default properties of this class. If set, then all existing and subsequently created instances of this class will automatically have default properties corresponding to the properties of the class instance passed to this function. This is a powerful feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default properties of this class. Can also be used for skinning / styling purposes.

      Note: This method is intended for setting default attributes only and will affect all instances of the underlying class (including those automatically generated in JavaScript). This method should not be used to apply standard EventHandlers or override methods for a class - use a custom subclass instead. Calling this method after instances have been created can result in undefined behavior, since it bypasses any setters and a class instance may have already examined a particular property and not be expecting any changes through this route.

      Parameters:
      textAreaItemProperties - properties that should be used as new defaults when instances of this class are created
      See Also:
    • setWrap

      public void setWrap(TextAreaWrap wrap)
      Text wrapping style.
      Parameters:
      wrap - wrap Default value is TextAreaWrap.SOFT
    • getWrap

      public TextAreaWrap getWrap()
      Text wrapping style.
      Returns:
      TextAreaWrap
    • getValueAsString

      public String getValueAsString()
      Return the value tracked by this form item.
      Returns:
      value of this element