Class PickTreeItem

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

public class PickTreeItem extends CanvasItem
FormItem that allows picking a value from a hierarchical data model.
  • Constructor Details

    • PickTreeItem

      public PickTreeItem()
    • PickTreeItem

      public PickTreeItem(JavaScriptObject jsObj)
    • PickTreeItem

      public PickTreeItem(String name)
    • PickTreeItem

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

    • getOrCreateRef

      public static PickTreeItem 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)
    • getButton

      public Canvas getButton()
      The visible button created by a PickTreeItem is an com.smartgwt.client.types.AutoChild of type TreeMenuButton by default.

      This component is an AutoChild named "button". For an overview of how to use and configure AutoChildren, see Using AutoChildren.

      Returns:
      Current button value. Default value is null
    • setCanSelectParentItems

      public PickTreeItem setCanSelectParentItems(Boolean canSelectParentItems)
      If true, clicking or pressing Enter on a menu item that has a submenu will select that item (with standard behavior of hiding the menus, calling click handlers, etc) instead of showing the submenu.
      Parameters:
      canSelectParentItems - New canSelectParentItems value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getCanSelectParentItems

      public Boolean getCanSelectParentItems()
      If true, clicking or pressing Enter on a menu item that has a submenu will select that item (with standard behavior of hiding the menus, calling click handlers, etc) instead of showing the submenu.
      Returns:
      Current canSelectParentItems value. Default value is null
      See Also:
    • setDisplayField

      public PickTreeItem setDisplayField(String displayField)
      Specifies an alternative field from which display values should be retrieved for this item.

      If this item is not databound (dataSource is unset), this is implemented by picking up the value of the specified field from the valueTree.

      Otherwise this item will attempt to map its underlying value to a display value by retrieving a record from the dataSource where the valueField matches this item's value, and displaying the displayField value from that record.

      Overrides:
      setDisplayField in class FormItem
      Parameters:
      displayField - New displayField value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getDisplayField

      public String getDisplayField()
      Specifies an alternative field from which display values should be retrieved for this item.

      If this item is not databound (dataSource is unset), this is implemented by picking up the value of the specified field from the valueTree.

      Otherwise this item will attempt to map its underlying value to a display value by retrieving a record from the dataSource where the valueField matches this item's value, and displaying the displayField value from that record.

      Overrides:
      getDisplayField in class FormItem
      Returns:
      Current displayField value. Default value is null
      See Also:
    • setEmptyDisplayValue

      public PickTreeItem setEmptyDisplayValue(String emptyDisplayValue)
      Text to display when this form item has a null or undefined value.

      If the formItem has a databound pickList, and its FormItem.displayField or FormItem.valueField (if the former isn't set) has an undefined emptyCellValue field, that field will automatically be set using the emptyDisplayValue property.

      If the emptyDisplayValue is null (the default) then this item will use the standard title of the tree menu button that is shown when no values are selected.

      If this method is called after the component has been drawn/initialized: Setter for emptyDisplayValue.

      Overrides:
      setEmptyDisplayValue in class FormItem
      Parameters:
      emptyDisplayValue - New emptyDisplayValue value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getEmptyDisplayValue

      public String getEmptyDisplayValue()
      Text to display when this form item has a null or undefined value.

      If the formItem has a databound pickList, and its FormItem.displayField or FormItem.valueField (if the former isn't set) has an undefined emptyCellValue field, that field will automatically be set using the emptyDisplayValue property.

      If the emptyDisplayValue is null (the default) then this item will use the standard title of the tree menu button that is shown when no values are selected.

      Overrides:
      getEmptyDisplayValue in class FormItem
      Returns:
      Current emptyDisplayValue value. Default value is null
      See Also:
    • setEmptyMenuMessage

      public PickTreeItem setEmptyMenuMessage(String emptyMenuMessage)
      This message will be displayed as a single, disabled option in any empty menu/submenu created from this item's data tree.

      Note : This is an advanced setting

      Parameters:
      emptyMenuMessage - New emptyMenuMessage value. Default value is "No items to display"
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getEmptyMenuMessage

      public String getEmptyMenuMessage()
      This message will be displayed as a single, disabled option in any empty menu/submenu created from this item's data tree.
      Returns:
      Current emptyMenuMessage value. Default value is "No items to display"
      See Also:
    • setLoadDataOnDemand

      public PickTreeItem setLoadDataOnDemand(Boolean loadDataOnDemand)
      If this is a databound item, should the load our set of possible options be loaded on demand (as submenus are displayed), or upfront?

      Note : This is an advanced setting

      Parameters:
      loadDataOnDemand - New loadDataOnDemand value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
    • getLoadDataOnDemand

      public Boolean getLoadDataOnDemand()
      If this is a databound item, should the load our set of possible options be loaded on demand (as submenus are displayed), or upfront?
      Returns:
      Current loadDataOnDemand value. Default value is null
    • setOptionDataSource

      public PickTreeItem setOptionDataSource(DataSource optionDataSource)
      If set, this FormItem will map stored values to display values as though a com.smartgwt.client.types.ValueMap were specified, by fetching records from the specified optionDataSource and extracting the valueField and displayField in loaded records, to derive one valueMap entry per record loaded from the optionDataSource.

      With the default setting of fetchMissingValues, fetches will be initiated against the optionDataSource any time the FormItem has a non-null value and no corresponding display value is available. This includes when the form is first initialized, as well as any subsequent calls to FormItem.setValue(), such as may happen when DynamicForm.editRecord() is called. Retrieved values are automatically cached by the FormItem.

      Note that if a normal, static valueMap is also specified for the field (either directly in the form item or as part of the field definition in the dataSource), it will be preferred to the data derived from the optionDataSource for whatever mappings are present.

      In a databound form, if FormItem.displayField is specified for a FormItem and optionDataSource is unset, optionDataSource will default to the form's current DataSource

      Overrides:
      setOptionDataSource in class FormItem
      Parameters:
      optionDataSource - New optionDataSource value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getOptionDataSource

      public DataSource getOptionDataSource()
      If set, this FormItem will map stored values to display values as though a com.smartgwt.client.types.ValueMap were specified, by fetching records from the specified optionDataSource and extracting the valueField and displayField in loaded records, to derive one valueMap entry per record loaded from the optionDataSource.

      With the default setting of fetchMissingValues, fetches will be initiated against the optionDataSource any time the FormItem has a non-null value and no corresponding display value is available. This includes when the form is first initialized, as well as any subsequent calls to FormItem.setValue(), such as may happen when DynamicForm.editRecord() is called. Retrieved values are automatically cached by the FormItem.

      Note that if a normal, static valueMap is also specified for the field (either directly in the form item or as part of the field definition in the dataSource), it will be preferred to the data derived from the optionDataSource for whatever mappings are present.

      In a databound form, if FormItem.displayField is specified for a FormItem and optionDataSource is unset, optionDataSource will default to the form's current DataSource

      Overrides:
      getOptionDataSource in class FormItem
      Returns:
      Current optionDataSource value. Default value is null
      See Also:
    • setPendingButtonStyle

      public PickTreeItem setPendingButtonStyle(String pendingButtonStyle)
      When showPending is true, the Button.baseStyle of the button when in the "Pending" visual state.

      If unset, then the baseStyle of the button is not changed.

      Parameters:
      pendingButtonStyle - New pendingButtonStyle value. Default value is "buttonPending"
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getPendingButtonStyle

      public String getPendingButtonStyle()
      When showPending is true, the Button.baseStyle of the button when in the "Pending" visual state.

      If unset, then the baseStyle of the button is not changed.

      Returns:
      Current pendingButtonStyle value. Default value is "buttonPending"
      See Also:
    • setReadOnlyDisplay

      public PickTreeItem setReadOnlyDisplay(ReadOnlyDisplayAppearance readOnlyDisplay)
      If FormItem.canEdit is set to false, how should this item be displayed to the user?

      For PickTreeItems, this setting affects only the item's title - the button itself will always appear disabled when canEdit is false, since buttons don't provide readOnly or static appearances.

      Overrides:
      setReadOnlyDisplay in class FormItem
      Parameters:
      readOnlyDisplay - New readOnlyDisplay value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getReadOnlyDisplay

      public ReadOnlyDisplayAppearance getReadOnlyDisplay()
      If FormItem.canEdit is set to false, how should this item be displayed to the user?

      For PickTreeItems, this setting affects only the item's title - the button itself will always appear disabled when canEdit is false, since buttons don't provide readOnly or static appearances.

      Overrides:
      getReadOnlyDisplay in class FormItem
      Returns:
      Current readOnlyDisplay value. Default value is null
      See Also:
    • setShouldSaveValue

      public PickTreeItem setShouldSaveValue(Boolean shouldSaveValue)
      Should this item's value be saved in the form's values and hence returned from form.getValues()?

      shouldSaveValue:false is used to mark formItems which do not correspond to the underlying data model and should not save a value into the form's values. Example includes visual separators, password re-type fields, or checkboxes used to show/hide other form items.

      A shouldSaveValue:false item should be given a value either via FormItem.defaultValue or by calling form.setValue(item, value) or formItem.setValue(value). Providing a value via form.values or form.setValues() will automatically switch the item to shouldSaveValue:true.

      Note that

      • if an item is shouldSaveValue true, but has no name, a warning is logged, and shouldSaveValue will be set to false.
      Overrides:
      setShouldSaveValue in class CanvasItem
      Parameters:
      shouldSaveValue - New shouldSaveValue value. Default value is true
      Returns:
      PickTreeItem instance, for chaining setter calls
    • getShouldSaveValue

      public Boolean getShouldSaveValue()
      Should this item's value be saved in the form's values and hence returned from form.getValues()?

      shouldSaveValue:false is used to mark formItems which do not correspond to the underlying data model and should not save a value into the form's values. Example includes visual separators, password re-type fields, or checkboxes used to show/hide other form items.

      A shouldSaveValue:false item should be given a value either via FormItem.defaultValue or by calling form.setValue(item, value) or formItem.setValue(value). Providing a value via form.values or form.setValues() will automatically switch the item to shouldSaveValue:true.

      Note that

      • if an item is shouldSaveValue true, but has no name, a warning is logged, and shouldSaveValue will be set to false.
      Overrides:
      getShouldSaveValue in class CanvasItem
      Returns:
      Current shouldSaveValue value. Default value is true
    • setValueField

      public PickTreeItem setValueField(String valueField)
      Which field in the tree-data should be returned as this item's value? If unspecified, the path will be used
      Overrides:
      setValueField in class FormItem
      Parameters:
      valueField - New valueField value. Default value is null
      Returns:
      PickTreeItem instance, for chaining setter calls
      See Also:
    • getValueField

      public String getValueField()
      Which field in the tree-data should be returned as this item's value? If unspecified, the path will be used
      Overrides:
      getValueField in class FormItem
      Returns:
      Current valueField value. Default value is null
      See Also:
    • fetchData

      public void fetchData()
      Only applies to databound items (see optionDataSource).
      Performs a fetch type operation on this item's DataSource to retrieve/refresh the tree of data displayed as rows in this items menu.
    • pendingStatusChanged

      public boolean pendingStatusChanged(DynamicForm form, FormItem item, boolean pendingStatus, Object newValue, Object value)
      Notification method called when showPending is enabled and this PickTreeItem should either clear or show its pending visual state.

      The default behavior is that the titleStyle and cellStyle are updated to include/exclude the "Pending" suffix. In addition, when displayed in the pending state and a pendingButtonStyle is set, then the button's baseStyle is set to pendingButtonStyle. Returning false will cancel this default behavior.

      Parameters:
      form - the managing DynamicForm instance.
      item - the form item itself (also available as "this").
      pendingStatus - true if the item should show its pending visual state; false otherwise.
      newValue - the current form item value.
      value - the value that would be restored by a call to DynamicForm.resetValues().
      Returns:
      false to cancel the default behavior.
    • setDefaultProperties

      public static void setDefaultProperties(PickTreeItem pickTreeItemProperties)
      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:
      pickTreeItemProperties - properties that should be used as new defaults when instances of this class are created
      See Also:
    • setDataSource

      public void setDataSource(DataSource dataSource)
      If specified, the tree of possible options will be derived from the dataSource as a ResultTree, rather than using this.valueTree. Options can be loaded on demand or up front according to loadDataOnDemand.

      Note : This is an advanced setting

      Parameters:
      dataSource - dataSource Default value is null
    • getDataSource

      public DataSource getDataSource()
      The DataSource that this component should bind to for default fields and for performing DSRequest.

      Can be specified as either a DataSource instance or the String ID of a DataSource.

      Returns:
      DataSource
    • setValueTree

      public void setValueTree(Tree valueTree)
      A Tree of options from which the user can select.
      Parameters:
      valueTree - valueTree Default value is null
    • setDataProperties

      public void setDataProperties(Tree dataProperties)
      For a PickTreeItem that uses a DataSource, these properties will be passed to the automatically-created ResultTree. This can be used for various customizations such as modifying the automatically-chosen parentIdField.
      Parameters:
      dataProperties - dataProperties Default value is null
      See Also: