Class MultiPickerItem

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:
SetFilterItem

public class MultiPickerItem extends StaticTextItem
MultiPickerItem provides an interface to edit data involving whether a record has membership in a certain set, for example, where specific Employees are part of specific Teams.

MultiPickerItem is a compact editor for this purpose, using a pop-up to present a Shuttle-style interface for moving records or values being different categories. When the MultiPickerItem pop-up is not active, MultiPickerItem just displays the currently chosen values as read-only text, which can be clipped to appear in a very small space.

Note: if your use case is a search interface to generate criteria, in either the FilterEditor of a ListGrid/TreeGrid, or in a SearchForm, SetFilterItem is the right choice. Generally, use SetFilterItem for searching, and MultiPickerItem (or Shuttle) for editing.

To configure a MultiPickerItem, provide either an optionDataSource or a valueMap. The value stored by a MultiPickerItem is the set of selected items, as either a list of primary key values if an optionDataSource is used, or as just ID values if an valueMap is used.

The item's picker-component can be customized via settings such as sortField, or by configuring auto-children like the search-form, the main pickList-grid or the separate list of selected values. You can use optionFilterContext to apply custom requestProperties to fetches from the main pickList grid.

  • Constructor Details

    • MultiPickerItem

      public MultiPickerItem()
    • MultiPickerItem

      public MultiPickerItem(JavaScriptObject jsObj)
    • MultiPickerItem

      public MultiPickerItem(String name)
  • Method Details

    • getOrCreateRef

      public static MultiPickerItem 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)
    • setCanExpand

      public MultiPickerItem setCanExpand(Boolean canExpand)
      Should we show an expansionIcon expand button allowing the user to show an expanded view of the pickList with multiple fields.

      canExpand only applies to MultiPickerItems with selectionStyle set to "pickList" or "pickTree" and an explicitly specified set of expandedPickListFields to display within the expanded view.

      Parameters:
      canExpand - New canExpand value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getCanExpand

      public Boolean getCanExpand()
      Should we show an expansionIcon expand button allowing the user to show an expanded view of the pickList with multiple fields.

      canExpand only applies to MultiPickerItems with selectionStyle set to "pickList" or "pickTree" and an explicitly specified set of expandedPickListFields to display within the expanded view.

      Returns:
      Current canExpand value. Default value is true
    • setCanSelectFolders

      public MultiPickerItem setCanSelectFolders(Boolean canSelectFolders)
      For multiPickerItems with selectionStyle:"pickTree", should the user be able to select and deselect folders?

      If false, selection checkboxes will only be visible by leaf nodes within the pickTree data set.

      Note that this flag may be set to true in conjunction with includeSelectedParents:false. In this case the user may check and uncheck parent nodes as a convenient way to select or unselect all their children due to cascading selection, but the parent nodes themselves won't be present in the item's value.

      Parameters:
      canSelectFolders - New canSelectFolders value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getCanSelectFolders

      public Boolean getCanSelectFolders()
      For multiPickerItems with selectionStyle:"pickTree", should the user be able to select and deselect folders?

      If false, selection checkboxes will only be visible by leaf nodes within the pickTree data set.

      Note that this flag may be set to true in conjunction with includeSelectedParents:false. In this case the user may check and uncheck parent nodes as a convenient way to select or unselect all their children due to cascading selection, but the parent nodes themselves won't be present in the item's value.

      Returns:
      Current canSelectFolders value. Default value is true
    • setCascadeSelection

      public MultiPickerItem setCascadeSelection(Boolean cascadeSelection)
      For multiPickerItems with selectionStyle:"pickTree", and canSelectFolders:true, should TreeGrid.cascadeSelection be enabled on our pickTree?
      Parameters:
      cascadeSelection - New cascadeSelection value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getCascadeSelection

      public Boolean getCascadeSelection()
      For multiPickerItems with selectionStyle:"pickTree", and canSelectFolders:true, should TreeGrid.cascadeSelection be enabled on our pickTree?
      Returns:
      Current cascadeSelection value. Default value is true
    • setCollapseIconSrc

      public MultiPickerItem setCollapseIconSrc(String collapseIconSrc)
      SCImgURL for the expansionIcon while in expanded mode
      Parameters:
      collapseIconSrc - New collapseIconSrc value. Default value is "[SKINIMG]/actions/collapse_left.png"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getCollapseIconSrc

      public String getCollapseIconSrc()
      SCImgURL for the expansionIcon while in expanded mode
      Returns:
      Current collapseIconSrc value. Default value is "[SKINIMG]/actions/collapse_left.png"
    • setDeriveUniqueValues

      public MultiPickerItem setDeriveUniqueValues(Boolean deriveUniqueValues)
      If this MultiPickerItem is deriving its options from a dataSource, should it ensure unique field values by grouping by the value field for this item? This is not necessary if the target dataSource value field is already unique - for example if this is the primaryKey field for a dataSource.

      Note that for MultiPickerItems with deriveUniqueValues:true, any expandedPickListFields to be displayed in the expanded view will not be able to display meaningful values unless a summaryFunction is supplied to produce aggregated values from the grouped data. This may be achieved by specifying summaryFunctions directly on the optionFilterContext, or on the operationBinding for the fetch operation.

      Note : This is an advanced setting

      Parameters:
      deriveUniqueValues - New deriveUniqueValues value. Default value is false
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getDeriveUniqueValues

      public Boolean getDeriveUniqueValues()
      If this MultiPickerItem is deriving its options from a dataSource, should it ensure unique field values by grouping by the value field for this item? This is not necessary if the target dataSource value field is already unique - for example if this is the primaryKey field for a dataSource.

      Note that for MultiPickerItems with deriveUniqueValues:true, any expandedPickListFields to be displayed in the expanded view will not be able to display meaningful values unless a summaryFunction is supplied to produce aggregated values from the grouped data. This may be achieved by specifying summaryFunctions directly on the optionFilterContext, or on the operationBinding for the fetch operation.

      Returns:
      Current deriveUniqueValues value. Default value is false
    • getDeselectAllButton

      public ToolStripButton getDeselectAllButton()
      Clear All button com.smartgwt.client.types.AutoChild

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

      Returns:
      Current deselectAllButton value. Default value is null
    • setDeselectAllButtonTitle

      public MultiPickerItem setDeselectAllButtonTitle(String deselectAllButtonTitle)
      Title for the deselectAllButton
      Parameters:
      deselectAllButtonTitle - New deselectAllButtonTitle value. Default value is "Clear All"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getDeselectAllButtonTitle

      public String getDeselectAllButtonTitle()
      Title for the deselectAllButton
      Returns:
      Current deselectAllButtonTitle value. Default value is "Clear All"
    • setDeselectAllWhileFiltered_disabledPrompt

      public MultiPickerItem setDeselectAllWhileFiltered_disabledPrompt(String deselectAllWhileFiltered_disabledPrompt)
      Disabled prompt for the deselectAllButton while filtered if selectAllWhileFiltered is set to "disable".
      Parameters:
      deselectAllWhileFiltered_disabledPrompt - New deselectAllWhileFiltered_disabledPrompt value. Default value is "Clear All disabled while filtered"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getDeselectAllWhileFiltered_disabledPrompt

      public String getDeselectAllWhileFiltered_disabledPrompt()
      Disabled prompt for the deselectAllButton while filtered if selectAllWhileFiltered is set to "disable".
      Returns:
      Current deselectAllWhileFiltered_disabledPrompt value. Default value is "Clear All disabled while filtered"
    • setDeselectAllWhileFiltered_partialCachePrompt

      public MultiPickerItem setDeselectAllWhileFiltered_partialCachePrompt(String deselectAllWhileFiltered_partialCachePrompt)
      Disabled prompt for the deselectAllButton while filtered if selectAllWhileFiltered is set to "whenLoaded" and the PickList does not have a complete data set loaded on the client.
      Parameters:
      deselectAllWhileFiltered_partialCachePrompt - New deselectAllWhileFiltered_partialCachePrompt value. Default value is "Unable to Clear All as the full set of options has not been fetched from the server."
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getDeselectAllWhileFiltered_partialCachePrompt

      public String getDeselectAllWhileFiltered_partialCachePrompt()
      Disabled prompt for the deselectAllButton while filtered if selectAllWhileFiltered is set to "whenLoaded" and the PickList does not have a complete data set loaded on the client.
      Returns:
      Current deselectAllWhileFiltered_partialCachePrompt value. Default value is "Unable to Clear All as the full set of options has not been fetched from the server."
    • setDisplayField

      public MultiPickerItem setDisplayField(String displayField)
      If set, this item will display a value from another field to the user instead of showing the underlying data value for the field name.

      This property is used in two ways:

      The item will display the displayField value from the record currently being edited if FormItem.useLocalDisplayFieldValue is true, (or if unset and the conditions outlined in the documentation for that property are met).

      If this field has an FormItem.optionDataSource, this property is used by default to identify which value to use as a display value in records from this related dataSource. In this usage the specified displayField must be explicitly defined in the optionDataSource to be used - see getDisplayFieldName() for more on this behavior.
      If not using local display values, the display value for this item will be derived by performing a fetch against the option dataSource to find a record where the value field matches this item's value, and use the displayField value from that record.
      In addition to this, PickList-based form items that provide a list of possible options such as the SelectItem or ComboBoxItem will show the displayField values to the user by default, allowing them to choose a new data value (see FormItem.valueField) from a list of user-friendly display values.

      This essentially allows the specified optionDataSource to be used as a server based valueMap.

      If local display values are being used and FormItem.storeDisplayValues is true, selecting a new value will update both the value for this field and the associated display-field value on the record being edited.

      Note: Developers may specify the FormItem.foreignDisplayField property in addition to displayField. This is useful for cases where the display field name in the local dataSource differs from the display field name in the optionDataSource. See the documentation for DataSourceField.foreignDisplayField for more on this.
      If a foreignDisplayField is specified, as with just displayField, if local display values are being used and FormItem.storeDisplayValues is true, when the user chooses a value the associated display-field value on the record being edited will be updated. In this case it would be set to the foreignDisplayField value from the related record. This means foreignDisplayField is always expected to be set to the equivalent field in the related dataSources.
      Developers looking to display some other arbitrary field(s) from the related dataSource during editing should consider using custom PickList.pickListFields instead of setting a foreignDisplayField.

      Note that if optionDataSource is set and no valid display field is specified, FormItem.getDisplayFieldName() will return the dataSource title field by default.

      If a displayField is specified for a freeform text based item (such as a ComboBoxItem), any user-entered value will be treated as a display value. In this scenario, items will derive the data value for the item from the first record where the displayField value matches the user-entered value. To avoid ambiguity, developers may wish to avoid this usage if display values are not unique.

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

      public String getDisplayField()
      If set, this item will display a value from another field to the user instead of showing the underlying data value for the field name.

      This property is used in two ways:

      The item will display the displayField value from the record currently being edited if FormItem.useLocalDisplayFieldValue is true, (or if unset and the conditions outlined in the documentation for that property are met).

      If this field has an FormItem.optionDataSource, this property is used by default to identify which value to use as a display value in records from this related dataSource. In this usage the specified displayField must be explicitly defined in the optionDataSource to be used - see getDisplayFieldName() for more on this behavior.
      If not using local display values, the display value for this item will be derived by performing a fetch against the option dataSource to find a record where the value field matches this item's value, and use the displayField value from that record.
      In addition to this, PickList-based form items that provide a list of possible options such as the SelectItem or ComboBoxItem will show the displayField values to the user by default, allowing them to choose a new data value (see FormItem.valueField) from a list of user-friendly display values.

      This essentially allows the specified optionDataSource to be used as a server based valueMap.

      If local display values are being used and FormItem.storeDisplayValues is true, selecting a new value will update both the value for this field and the associated display-field value on the record being edited.

      Note: Developers may specify the FormItem.foreignDisplayField property in addition to displayField. This is useful for cases where the display field name in the local dataSource differs from the display field name in the optionDataSource. See the documentation for DataSourceField.foreignDisplayField for more on this.
      If a foreignDisplayField is specified, as with just displayField, if local display values are being used and FormItem.storeDisplayValues is true, when the user chooses a value the associated display-field value on the record being edited will be updated. In this case it would be set to the foreignDisplayField value from the related record. This means foreignDisplayField is always expected to be set to the equivalent field in the related dataSources.
      Developers looking to display some other arbitrary field(s) from the related dataSource during editing should consider using custom PickList.pickListFields instead of setting a foreignDisplayField.

      Note that if optionDataSource is set and no valid display field is specified, FormItem.getDisplayFieldName() will return the dataSource title field by default.

      If a displayField is specified for a freeform text based item (such as a ComboBoxItem), any user-entered value will be treated as a display value. In this scenario, items will derive the data value for the item from the first record where the displayField value matches the user-entered value. To avoid ambiguity, developers may wish to avoid this usage if display values are not unique.

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

      public MultiPickerItem setExpandedPickListFields(ListGridField... expandedPickListFields)
      If canExpand is true, this is the list of fields to display in the PickList or pickTree when the picker is expanded
      Parameters:
      expandedPickListFields - New expandedPickListFields value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getExpandedPickListFields

      public ListGridField[] getExpandedPickListFields()
      If canExpand is true, this is the list of fields to display in the PickList or pickTree when the picker is expanded
      Returns:
      Current expandedPickListFields value. Default value is null
    • setExpandIconSrc

      public MultiPickerItem setExpandIconSrc(String expandIconSrc)
      SCImgURL for the expansionIcon while not in expanded mode
      Parameters:
      expandIconSrc - New expandIconSrc value. Default value is "[SKINIMG]/actions/expand_right.png"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getExpandIconSrc

      public String getExpandIconSrc()
      SCImgURL for the expansionIcon while not in expanded mode
      Returns:
      Current expandIconSrc value. Default value is "[SKINIMG]/actions/expand_right.png"
    • setExpansionHeight

      public MultiPickerItem setExpansionHeight(Integer expansionHeight)
      Height for the pickerLayout in expanded mode when canExpand is true
      Parameters:
      expansionHeight - New expansionHeight value. Default value is 500
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getExpansionHeight

      public Integer getExpansionHeight()
      Height for the pickerLayout in expanded mode when canExpand is true
      Returns:
      Current expansionHeight value. Default value is 500
    • getExpansionIcon

      public ToolStripButton getExpansionIcon()
      Automatically generated expand / collapse icon when canExpand is true

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

      Returns:
      Current expansionIcon value. Default value is null
    • setExpansionWidth

      public MultiPickerItem setExpansionWidth(Integer expansionWidth)
      Width for the pickerLayout in expanded mode when canExpand is true
      Parameters:
      expansionWidth - New expansionWidth value. Default value is 500
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getExpansionWidth

      public Integer getExpansionWidth()
      Width for the pickerLayout in expanded mode when canExpand is true
      Returns:
      Current expansionWidth value. Default value is 500
    • getFilterForm

      public DynamicForm getFilterForm()
      Dynamic form showing a single text item for filtering the PickList while SelectionStyle is "pickList".

      May be hidden by setting showFilterForm to false.

      If canExpand is true, the filter form will not be displayed in the expanded view, as it would be unclear to the user which of the expanded fields would be filtered by it.

      Instead if showFilterForm is true, the pickList will show the filterEditor by default, allowing the user to filter by field

      Instead of the filterForm, developers may display the standard filterEditor for the pickList in non-expanded view via pickList autoChild properties. If you do this the filterForm will not be displayed even ifshowFilterForm is true.

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

      Returns:
      Current filterForm value. Default value is null
    • setFilterHint

      public MultiPickerItem setFilterHint(String filterHint)
      Hint for the filterForm text item.

      This will be shown inside the field via TextItem.showHintInField

      Parameters:
      filterHint - New filterHint value. Default value is "Filter"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getFilterHint

      public String getFilterHint()
      Hint for the filterForm text item.

      This will be shown inside the field via TextItem.showHintInField

      Returns:
      Current filterHint value. Default value is "Filter"
    • getFilterIcon

      public FormItemIcon getFilterIcon()
      Automatically generated right-aligned inline filter indicator icon for the filterForm text box.

      This icon may be customized using the standard AutoChild pattern as well as via filterIconSrc, filterIconWidth, filterIconHeight

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

      Returns:
      Current filterIcon value. Default value is null
    • setFilterIconHeight

      public MultiPickerItem setFilterIconHeight(Integer filterIconHeight)
      Parameters:
      filterIconHeight - New filterIconHeight value. Default value is 16
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getFilterIconHeight

      public Integer getFilterIconHeight()
      Returns:
      Current filterIconHeight value. Default value is 16
    • setFilterIconSrc

      public MultiPickerItem setFilterIconSrc(String filterIconSrc)
      src for the filterIcon
      Parameters:
      filterIconSrc - New filterIconSrc value. Default value is "[SKINIMG]actions/view.png"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getFilterIconSrc

      public String getFilterIconSrc()
      src for the filterIcon
      Returns:
      Current filterIconSrc value. Default value is "[SKINIMG]actions/view.png"
    • setFilterIconWidth

      public MultiPickerItem setFilterIconWidth(Integer filterIconWidth)
      Parameters:
      filterIconWidth - New filterIconWidth value. Default value is 16
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getFilterIconWidth

      public Integer getFilterIconWidth()
      Returns:
      Current filterIconWidth value. Default value is 16
    • setFilterPickListOnKeypress

      public MultiPickerItem setFilterPickListOnKeypress(boolean filterPickListOnKeypress)
      Should filterOnKeypress be active for the pickList?

      This behavior applies to filter values entered in the filterForm as well as the the standard filterEditor for the picklist in expanded view.

      Parameters:
      filterPickListOnKeypress - New filterPickListOnKeypress value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getFilterPickListOnKeypress

      public boolean getFilterPickListOnKeypress()
      Should filterOnKeypress be active for the pickList?

      This behavior applies to filter values entered in the filterForm as well as the the standard filterEditor for the picklist in expanded view.

      Returns:
      Current filterPickListOnKeypress value. Default value is true
    • setIncludeSelectedParents

      public MultiPickerItem setIncludeSelectedParents(Boolean includeSelectedParents)
      For multiPickerItems with selectionStyle:"pickTree", and canSelectFolders:true, should selected parent nodes be included in the item's value?

      When cascading selection is enabled for a tree, the selected state of parent nodes always reflects the selected state of their children, and it may not be necessary or desirable to explicitly record the parents' selected state in the item's value.

      Some specific use cases where this is the case might include:

      • Creating filter criteria for a target TreeGrid where TreeGrid.keepParentsOnFilter is true. In this case filter criteria would not need to include selected parent nodes for the children to be visible in the target tree.
      • Trees where leaves are of a different logical type than their parents. If a tree structure is being used to categorize data, cascading selection may be useful to allow the user to easily select all items within a category but application code may not want to include the categories as part of a MultiPickerItem's value

      This property only applies when cascadeSelection is true. If cascadeSelection is false, all selected nodes will be present in the items value regardless of their parent/child relationships.

      Parameters:
      includeSelectedParents - New includeSelectedParents value. Default value is false
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getIncludeSelectedParents

      public Boolean getIncludeSelectedParents()
      For multiPickerItems with selectionStyle:"pickTree", and canSelectFolders:true, should selected parent nodes be included in the item's value?

      When cascading selection is enabled for a tree, the selected state of parent nodes always reflects the selected state of their children, and it may not be necessary or desirable to explicitly record the parents' selected state in the item's value.

      Some specific use cases where this is the case might include:

      • Creating filter criteria for a target TreeGrid where TreeGrid.keepParentsOnFilter is true. In this case filter criteria would not need to include selected parent nodes for the children to be visible in the target tree.
      • Trees where leaves are of a different logical type than their parents. If a tree structure is being used to categorize data, cascading selection may be useful to allow the user to easily select all items within a category but application code may not want to include the categories as part of a MultiPickerItem's value

      This property only applies when cascadeSelection is true. If cascadeSelection is false, all selected nodes will be present in the items value regardless of their parent/child relationships.

      Returns:
      Current includeSelectedParents value. Default value is false
    • setInitialSort

      public MultiPickerItem setInitialSort(SortSpecifier... initialSort)
      Initial sort specifiers for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Parameters:
      initialSort - New initialSort value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getInitialSort

      public SortSpecifier[] getInitialSort()
      Initial sort specifiers for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Returns:
      Current initialSort value. Default value is null
    • setMultiple

      public MultiPickerItem setMultiple(Boolean multiple)
      MultiPickerItems always work with array values
      Overrides:
      setMultiple in class FormItem
      Parameters:
      multiple - New multiple value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
      See Also:
    • getMultiple

      public Boolean getMultiple()
      MultiPickerItems always work with array values
      Overrides:
      getMultiple in class FormItem
      Returns:
      Current multiple value. Default value is true
      See Also:
    • setOptionDataSource

      public MultiPickerItem 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:
      MultiPickerItem 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:
    • setOptionFilterContext

      public MultiPickerItem setOptionFilterContext(DSRequest optionFilterContext)
      If this item has a specified optionDataSource, and this property is not null, the context is passed to the dataSource as RPCRequest properties when performing fetch operations on the dataSource to obtain a data-value to display-value mapping, and when fetching for grid-based pickers.

      This attribute is a direct shortcut for setting fetch-request properties via item.pickerProperties.dataProperties.requestProperties.

      Parameters:
      optionFilterContext - New optionFilterContext value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getOptionFilterContext

      public DSRequest getOptionFilterContext()
      If this item has a specified optionDataSource, and this property is not null, the context is passed to the dataSource as RPCRequest properties when performing fetch operations on the dataSource to obtain a data-value to display-value mapping, and when fetching for grid-based pickers.

      This attribute is a direct shortcut for setting fetch-request properties via item.pickerProperties.dataProperties.requestProperties.

      Overrides:
      getOptionFilterContext in class FormItem
      Returns:
      Current optionFilterContext value. Default value is null
    • setOptionOperationId

      public MultiPickerItem setOptionOperationId(String optionOperationId)
      If this item has a specified optionDataSource, this attribute may be set to specify an explicit DSRequest.operationId when performing a fetch against the option dataSource to pick up display value mapping.
      Overrides:
      setOptionOperationId in class FormItem
      Parameters:
      optionOperationId - New optionOperationId value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
      See Also:
    • getOptionOperationId

      public String getOptionOperationId()
      If this item has a specified optionDataSource, this attribute may be set to specify an explicit DSRequest.operationId when performing a fetch against the option dataSource to pick up display value mapping.
      Overrides:
      getOptionOperationId in class FormItem
      Returns:
      Current optionOperationId value. Default value is null
      See Also:
    • getPickerLayout

      public VLayout getPickerLayout()
      Main dropdown picker layout containing the PickList or Shuttle.

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

      Returns:
      Current pickerLayout value. Default value is null
    • getPickerToolbar

      public HLayout getPickerToolbar()
      Toolbar autoChild containing the selectAllButton, deselectAllButton and expansionIcon.

      Shown within the pickerLayout if SelectionStyle is "pickList"

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

      Returns:
      Current pickerToolbar value. Default value is null
    • getPickList

      public ListGrid getPickList()
      The MultiPickerItem pickList is a filterable ListGrid com.smartgwt.client.types.AutoChild for viewing and selecting the list of available options when SelectionStyle is "pickList".

      It is rendered inside the pickerLayout along with the optional selectionList

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

      Returns:
      Current pickList value. Default value is null
    • setPickListFetchDelay

      public MultiPickerItem setPickListFetchDelay(Integer pickListFetchDelay)
      If filterPickListOnKeypress is true, how long to wait in ms after the last keystroke from a user before filtering the pickList.

      If not explicitly specified, the default fetchDelay will be derived from the pickList fetchDelay.

      Parameters:
      pickListFetchDelay - New pickListFetchDelay value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getPickListFetchDelay

      public Integer getPickListFetchDelay()
      If filterPickListOnKeypress is true, how long to wait in ms after the last keystroke from a user before filtering the pickList.

      If not explicitly specified, the default fetchDelay will be derived from the pickList fetchDelay.

      Returns:
      Current pickListFetchDelay value. Default value is null
    • setPickListHeight

      public MultiPickerItem setPickListHeight(Integer pickListHeight)
      Default height for the pickerLayout when SelectionStyle is "pickList".
      Parameters:
      pickListHeight - New pickListHeight value. Default value is 400
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getPickListHeight

      public Integer getPickListHeight()
      Default height for the pickerLayout when SelectionStyle is "pickList".
      Returns:
      Current pickListHeight value. Default value is 400
    • setPickListWidth

      public MultiPickerItem setPickListWidth(Integer pickListWidth)
      Default width for the pickerLayout when SelectionStyle is "pickList".
      Parameters:
      pickListWidth - New pickListWidth value. Default value is 250
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getPickListWidth

      public Integer getPickListWidth()
      Default width for the pickerLayout when SelectionStyle is "pickList".
      Returns:
      Current pickListWidth value. Default value is 250
    • getPickTree

      public TreeGrid getPickTree()
      The MultiPickerItem pickTree is a TreeGrid com.smartgwt.client.types.AutoChild for viewing and selecting a tree of available options when SelectionStyle is "pickTree".

      It is rendered inside the pickerLayout along with the optional selectionList

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

      Returns:
      Current pickTree value. Default value is null
    • getSelectAllButton

      public ToolStripButton getSelectAllButton()
      Select All button com.smartgwt.client.types.AutoChild

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

      Returns:
      Current selectAllButton value. Default value is null
    • setSelectAllButtonTitle

      public MultiPickerItem setSelectAllButtonTitle(String selectAllButtonTitle)
      Title for the selectAllButton
      Parameters:
      selectAllButtonTitle - New selectAllButtonTitle value. Default value is "Select All"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectAllButtonTitle

      public String getSelectAllButtonTitle()
      Title for the selectAllButton
      Returns:
      Current selectAllButtonTitle value. Default value is "Select All"
    • setSelectAllWhileFiltered

      public MultiPickerItem setSelectAllWhileFiltered(FilteredSelectAllAction selectAllWhileFiltered)
      If the user has filtered the set of options available in this item, how should the "Select All" and "Clear All" buttons work?

      Note : This is an advanced setting

      Parameters:
      selectAllWhileFiltered - New selectAllWhileFiltered value. Default value is "whenLoaded"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectAllWhileFiltered

      public FilteredSelectAllAction getSelectAllWhileFiltered()
      If the user has filtered the set of options available in this item, how should the "Select All" and "Clear All" buttons work?
      Returns:
      Current selectAllWhileFiltered value. Default value is "whenLoaded"
    • setSelectAllWhileFiltered_disabledPrompt

      public MultiPickerItem setSelectAllWhileFiltered_disabledPrompt(String selectAllWhileFiltered_disabledPrompt)
      Disabled prompt for the selectAllButton while filtered if selectAllWhileFiltered is set to "disable".
      Parameters:
      selectAllWhileFiltered_disabledPrompt - New selectAllWhileFiltered_disabledPrompt value. Default value is "Select All disabled while filtered"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectAllWhileFiltered_disabledPrompt

      public String getSelectAllWhileFiltered_disabledPrompt()
      Disabled prompt for the selectAllButton while filtered if selectAllWhileFiltered is set to "disable".
      Returns:
      Current selectAllWhileFiltered_disabledPrompt value. Default value is "Select All disabled while filtered"
    • setSelectAllWhileFiltered_partialCachePrompt

      public MultiPickerItem setSelectAllWhileFiltered_partialCachePrompt(String selectAllWhileFiltered_partialCachePrompt)
      Disabled prompt for the selectAllButton while filtered if selectAllWhileFiltered is set to "whenLoaded" and the PickList does not have a complete data set loaded on the client.
      Parameters:
      selectAllWhileFiltered_partialCachePrompt - New selectAllWhileFiltered_partialCachePrompt value. Default value is "Unable to Select All as the full set of options has not been fetched from the server."
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectAllWhileFiltered_partialCachePrompt

      public String getSelectAllWhileFiltered_partialCachePrompt()
      Disabled prompt for the selectAllButton while filtered if selectAllWhileFiltered is set to "whenLoaded" and the PickList does not have a complete data set loaded on the client.
      Returns:
      Current selectAllWhileFiltered_partialCachePrompt value. Default value is "Unable to Select All as the full set of options has not been fetched from the server."
    • setSelectedSelectionListTitle

      public MultiPickerItem setSelectedSelectionListTitle(String selectedSelectionListTitle)
      Default title for the selectionList.
      Parameters:
      selectedSelectionListTitle - New selectedSelectionListTitle value. Default value is "Included Items"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectedSelectionListTitle

      public String getSelectedSelectionListTitle()
      Default title for the selectionList.
      Returns:
      Current selectedSelectionListTitle value. Default value is "Included Items"
    • getSelectionList

      public ListGrid getSelectionList()
      Automatically generated ListGrid displaying the current selection for selectionStyle:"pickList".

      Has canRemoveRecords enabled as an alternative UI for deselecting records to unchecking the item in the PickList.

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

      Returns:
      Current selectionList value. Default value is null
    • getSelectionListLabel

      public Label getSelectionListLabel()
      AutoChild to show the selectedSelectionListTitle

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

      Returns:
      Current selectionListLabel value. Default value is null
    • setSelectionStyle

      public MultiPickerItem setSelectionStyle(MultiPickerSelectionStyle selectionStyle)
      Should the MultiPickerItem use a Shuttle style interface to indicate the currently selected / unselected values?

      Note : This is an advanced setting

      Parameters:
      selectionStyle - New selectionStyle value. Default value is "pickList"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSelectionStyle

      public MultiPickerSelectionStyle getSelectionStyle()
      Should the MultiPickerItem use a Shuttle style interface to indicate the currently selected / unselected values?
      Returns:
      Current selectionStyle value. Default value is "pickList"
    • setShowFilterForm

      public MultiPickerItem setShowFilterForm(boolean showFilterForm)
      Should the filterForm be shown?

      This only applies to selectionStyle "pickList".

      Parameters:
      showFilterForm - New showFilterForm value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getShowFilterForm

      public boolean getShowFilterForm()
      Should the filterForm be shown?

      This only applies to selectionStyle "pickList".

      Returns:
      Current showFilterForm value. Default value is true
    • setShowSelectionLabel

      public MultiPickerItem setShowSelectionLabel(Boolean showSelectionLabel)
      Should we show a selectionListLabel for the selectedSelectionListTitle above the selectionList.

      Will never be shown if showSelectionList is false or if selectionStyle is not "pickList".

      Parameters:
      showSelectionLabel - New showSelectionLabel value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getShowSelectionLabel

      public Boolean getShowSelectionLabel()
      Should we show a selectionListLabel for the selectedSelectionListTitle above the selectionList.

      Will never be shown if showSelectionList is false or if selectionStyle is not "pickList".

      Returns:
      Current showSelectionLabel value. Default value is true
    • setShowSelectionList

      public MultiPickerItem setShowSelectionList(Boolean showSelectionList)
      Should a list of selected items be displayed below the PickList if SelectionStyle is "pickList"?
      Parameters:
      showSelectionList - New showSelectionList value. Default value is true
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getShowSelectionList

      public Boolean getShowSelectionList()
      Should a list of selected items be displayed below the PickList if SelectionStyle is "pickList"?
      Returns:
      Current showSelectionList value. Default value is true
    • getShuttle

      public Shuttle getShuttle()
      AutoChild Shuttle shown in the pickerLayout when SelectionStyle is set to "shuttle".

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

      Returns:
      Current shuttle value. Default value is null
    • setShuttleHeight

      public MultiPickerItem setShuttleHeight(Integer shuttleHeight)
      Height for the pickerLayout when SelectionStyle is "shuttle".
      Parameters:
      shuttleHeight - New shuttleHeight value. Default value is 400
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getShuttleHeight

      public Integer getShuttleHeight()
      Height for the pickerLayout when SelectionStyle is "shuttle".
      Returns:
      Current shuttleHeight value. Default value is 400
    • setShuttleWidth

      public MultiPickerItem setShuttleWidth(Integer shuttleWidth)
      Width for the pickerLayout when SelectionStyle is "shuttle".
      Parameters:
      shuttleWidth - New shuttleWidth value. Default value is 500
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getShuttleWidth

      public Integer getShuttleWidth()
      Width for the pickerLayout when SelectionStyle is "shuttle".
      Returns:
      Current shuttleWidth value. Default value is 500
    • setSortDirection

      public MultiPickerItem setSortDirection(SortDirection sortDirection)
      Sort direction for this item's list of options. Will be applied to the +link{MultiPicke?rItem.pickList}, pickTree or shuttle depending on the selectionStyle of this item.
      Parameters:
      sortDirection - New sortDirection value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSortDirection

      public SortDirection getSortDirection()
      Sort direction for this item's list of options. Will be applied to the +link{MultiPicke?rItem.pickList}, pickTree or shuttle depending on the selectionStyle of this item.
      Returns:
      Current sortDirection value. Default value is null
    • setSortField

      public MultiPickerItem setSortField(String sortField)
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Parameters:
      sortField - New sortField value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSortField

      public String getSortField()
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Returns:
      Current sortField value. Default value is null
    • setSortField

      public MultiPickerItem setSortField(String... sortField)
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Parameters:
      sortField - New sortField value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSortFieldAsStringArray

      public String[] getSortFieldAsStringArray()
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Returns:
      Current sortField value. Default value is null
    • setSortField

      public MultiPickerItem setSortField(Integer sortField)
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Parameters:
      sortField - New sortField value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getSortFieldAsInt

      public Integer getSortFieldAsInt()
      Sort field for this item's list of options. Will be applied to the pickList, pickTree or shuttle depending on the selectionStyle of this item.
      Returns:
      Current sortField value. Default value is null
    • setTextMatchStyle

      public MultiPickerItem setTextMatchStyle(TextMatchStyle textMatchStyle)
      textMatchStyle to apply to option criteria for this item
      Parameters:
      textMatchStyle - New textMatchStyle value. Default value is "substring"
      Returns:
      MultiPickerItem instance, for chaining setter calls
    • getTextMatchStyle

      public TextMatchStyle getTextMatchStyle()
      textMatchStyle to apply to option criteria for this item
      Returns:
      Current textMatchStyle value. Default value is "substring"
    • setValueField

      public MultiPickerItem setValueField(String valueField)
      If this form item maps data values to display values by retrieving the FormItem.displayField values from an optionDataSource, this property denotes the the field to use as the underlying data value in records from the optionDataSource.
      If not explicitly supplied, the valueField name will be derived as described in FormItem.getValueFieldName().
      Overrides:
      setValueField in class FormItem
      Parameters:
      valueField - New valueField value. Default value is null
      Returns:
      MultiPickerItem instance, for chaining setter calls
      See Also:
    • getValueField

      public String getValueField()
      If this form item maps data values to display values by retrieving the FormItem.displayField values from an optionDataSource, this property denotes the the field to use as the underlying data value in records from the optionDataSource.
      If not explicitly supplied, the valueField name will be derived as described in FormItem.getValueFieldName().
      Overrides:
      getValueField in class FormItem
      Returns:
      Getter method to retrieve the FormItem.valueField for this item. For items with a specified FormItem.optionDataSource, this determines which field in that dataSource corresponds to the value for this item.

      If unset, if a foreignKey relationship exists between this field and the optionDataSource, this will be used, otherwise default behavior will return the FormItem.name of this field. Default value is null

      See Also:
    • getValueFieldName

      public String getValueFieldName()
      Getter method to retrieve the FormItem.valueField for this item. For items with a specified FormItem.optionDataSource, this determines which field in that dataSource corresponds to the value for this item.

      If unset, if a foreignKey relationship exists between this field and the optionDataSource, this will be used, otherwise default behavior will return the FormItem.name of this field.

      Overrides:
      getValueFieldName in class FormItem
      Returns:
      fieldName to use a "value field" in records from this items FormItem.optionDataSource
    • setDefaultProperties

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

      public void setOptionCriteria(Criteria optionCriteria)
      If this MultiPickerItem is deriving its options from a dataSource, this property allows developers to specify criteria for the fetch.

      Note : This is an advanced setting

      Overrides:
      setOptionCriteria in class FormItem
      Parameters:
      optionCriteria - New optionCriteria value. Default value is null
    • getOptionCriteria

      public Criteria getOptionCriteria()
      If this MultiPickerItem is deriving its options from a dataSource, this property allows developers to specify criteria for the fetch.
      Overrides:
      getOptionCriteria in class FormItem
      Returns:
      Return the derived optionCriteria for this item. Default value is null