org.kuali.rice.krad.uif.widget
Class Suggest

java.lang.Object
  extended by org.kuali.rice.krad.datadictionary.DictionaryBeanBase
      extended by org.kuali.rice.krad.datadictionary.uif.UifDictionaryBeanBase
          extended by org.kuali.rice.krad.uif.component.ComponentBase
              extended by org.kuali.rice.krad.uif.widget.WidgetBase
                  extended by org.kuali.rice.krad.uif.widget.Suggest
All Implemented Interfaces:
Serializable, Cloneable, DictionaryBean, UifDictionaryBean, Component, ScriptEventSupport, Widget, org.springframework.core.Ordered
Direct Known Subclasses:
LocationSuggest

public class Suggest
extends WidgetBase

Widget that provides dynamic select options to the user as they are entering the value (also known as auto-complete)

Widget is backed by an AttributeQuery that provides the configuration for executing a query server side that will retrieve the valid option values

Author:
Kuali Rice Team (rice.collab@kuali.org)
See Also:
Serialized Form

Field Summary
 
Fields inherited from interface org.kuali.rice.krad.uif.component.Ordered
INITIAL_ORDER_VALUE
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
Suggest()
           
 
Method Summary
protected
<T> void
copyProperties(T component)
          Copies the properties over for the copy method
 List<String> getAdditionalPropertiesToReturn()
          List of additional properties to return in the result objects to the plugin's success callback.
 String getLabelPropertyName()
          Name of the property on the query result object that provides the label for the suggestion.
 List<Object> getSuggestOptions()
          When isRetrieveAllSuggestions() is true, this list provides the full list of suggestions
 String getSuggestOptionsJsString()
          Returns the suggest options as a JS String (set by the framework from method invocation)
 AttributeQuery getSuggestQuery()
          Attribute query instance the will be executed to provide the suggest options
 String getValuePropertyName()
          Name of the property on the query result object that provides the options for the suggest, values from this field will be collected and sent back on the result to provide as suggest options.
 boolean isRetrieveAllSuggestions()
          Indicates whether all suggest options should be retrieved up front and provide to the suggest widget as options locally
 boolean isReturnFullQueryObject()
          When set to true the results of a query method will be sent back as-is (in translated form) with all properties intact.
 boolean isSuggestConfigured()
          Indicates whether the suggest widget has the necessary configuration to render
 void performApplyModel(View view, Object model, Component parent)
          The following updates are done here: Invoke expression evaluation on the suggestQuery
 void performFinalize(View view, Object model, Component parent)
          The following actions are performed: Adjusts the query field mappings on the query based on the binding configuration of the field TODO: determine query if render is true and query is not set
protected  void retrieveSuggestOptions(View view)
          Invokes the configured query method and sets the returned method value as the suggest options or suggest options JS string
 void setAdditionalPropertiesToReturn(List<String> additionalPropertiesToReturn)
          Set the list of additional properties to return to the plugin success callback results
 void setLabelPropertyName(String labelPropertyName)
          Set the labelPropertyName
 void setRetrieveAllSuggestions(boolean retrieveAllSuggestions)
          Setter for the retrieve all suggestions indicator
 void setReturnFullQueryObject(boolean returnFullQueryObject)
          Setter for the for returning the full object of the query
 void setSuggestOptions(List<Object> suggestOptions)
          Setter for the list of suggest options
 void setSuggestOptionsJsString(String suggestOptionsJsString)
          Sets suggest options javascript string
 void setSuggestQuery(AttributeQuery suggestQuery)
          Setter for the suggest attribute query
 void setValuePropertyName(String valuePropertyName)
          Setter for the value property name
 
Methods inherited from class org.kuali.rice.krad.uif.widget.WidgetBase
getComponentTypeName
 
Methods inherited from class org.kuali.rice.krad.uif.component.ComponentBase
addCellCssClass, addDataAttribute, addDataAttributeIfNonEmpty, addStyleClass, appendToStyle, completeValidation, copy, getAdditionalComponentsToRefresh, getAdditionalComponentsToRefreshJs, getAdditionalCssClasses, getAlign, getBaseId, getCellCssClasses, getCellStyle, getCellStyleClassesAsString, getCellWidth, getColSpan, getComponentModifiers, getComponentPrototypes, getComponentSecurity, getComponentSecurityClass, getComponentsForLifecycle, getConditionalRefresh, getConditionalRefreshConditionJs, getConditionalRefreshControlNames, getContext, getCssClasses, getDataAttributes, getEventHandlerScript, getFinalizeMethodAdditionalArguments, getFinalizeMethodInvoker, getFinalizeMethodToCall, getId, getLibraryCssClasses, getMethodToCallOnRefresh, getOnBlurScript, getOnChangeScript, getOnClickScript, getOnCloseScript, getOnDblClickScript, getOnDocumentReadyScript, getOnFocusScript, getOnKeyDownScript, getOnKeyPressScript, getOnKeyUpScript, getOnLoadScript, getOnMouseDownScript, getOnMouseMoveScript, getOnMouseOutScript, getOnMouseOverScript, getOnMouseUpScript, getOnSubmitScript, getOnUnloadScript, getOrder, getPostRenderContent, getPreRenderContent, getProgressiveDisclosureConditionJs, getProgressiveDisclosureControlNames, getProgressiveRender, getPropertyReplacerComponents, getPropertyReplacers, getRefreshTimer, getRefreshWhenChangedPropertyNames, getRenderedHtmlOutput, getRequired, getRowSpan, getSimpleDataAttributes, getStyle, getStyleClassesAsString, getTemplate, getTemplateName, getTemplateOptions, getTemplateOptionsJSString, getTitle, getToolTip, getValign, getWidth, isDisableSessionPersistence, isDisclosedByAction, isForceSessionPersistence, isHidden, isProgressiveRenderAndRefresh, isProgressiveRenderViaAJAX, isReadOnly, isRefreshedByAction, isRender, isResetDataOnRefresh, isRetrieveViaAjax, isSelfRendered, isSkipInTabOrder, performInitialization, pushAllToContext, pushObjectToContext, pushToPropertyReplacerContext, setAdditionalComponentsToRefresh, setAdditionalCssClasses, setAlign, setBaseId, setCellCssClasses, setCellStyle, setCellWidth, setColSpan, setComponentModifiers, setComponentSecurity, setConditionalRefresh, setContext, setCssClasses, setDataAttributes, setDisableSessionPersistence, setDisclosedByAction, setFinalizeMethodAdditionalArguments, setFinalizeMethodInvoker, setFinalizeMethodToCall, setForceSessionPersistence, setHidden, setId, setLibraryCssClasses, setMethodToCallOnRefresh, setOnBlurScript, setOnChangeScript, setOnClickScript, setOnCloseScript, setOnDblClickScript, setOnDocumentReadyScript, setOnFocusScript, setOnKeyDownScript, setOnKeyPressScript, setOnKeyUpScript, setOnLoadScript, setOnMouseDownScript, setOnMouseMoveScript, setOnMouseOutScript, setOnMouseOverScript, setOnMouseUpScript, setOnSubmitScript, setOnUnloadScript, setOrder, setPostRenderContent, setPreRenderContent, setProgressiveRender, setProgressiveRenderAndRefresh, setProgressiveRenderViaAJAX, setPropertyReplacers, setReadOnly, setRefreshedByAction, setRefreshTimer, setRefreshWhenChangedPropertyNames, setRender, setRenderedHtmlOutput, setRequired, setResetDataOnRefresh, setRetrieveViaAjax, setRowSpan, setSelfRendered, setSkipInTabOrder, setStyle, setTemplate, setTemplateName, setTemplateOptions, setTemplateOptionsJSString, setTitle, setToolTip, setValign, setWidth
 
Methods inherited from class org.kuali.rice.krad.datadictionary.uif.UifDictionaryBeanBase
getExpressionGraph, getPropertyExpression, getPropertyExpressions, getRefreshExpressionGraph, setExpressionGraph, setPropertyExpressions, setRefreshExpressionGraph
 
Methods inherited from class org.kuali.rice.krad.datadictionary.DictionaryBeanBase
getComponentCode, getNamespaceCode, setComponentCode, setNamespaceCode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.kuali.rice.krad.uif.component.Component
addCellCssClass, addDataAttribute, addStyleClass, appendToStyle, completeValidation, copy, getAdditionalComponentsToRefresh, getAdditionalComponentsToRefreshJs, getAdditionalCssClasses, getAlign, getBaseId, getCellCssClasses, getCellStyle, getCellWidth, getColSpan, getComponentModifiers, getComponentPrototypes, getComponentSecurity, getComponentsForLifecycle, getConditionalRefresh, getConditionalRefreshConditionJs, getConditionalRefreshControlNames, getContext, getCssClasses, getDataAttributes, getEventHandlerScript, getFinalizeMethodAdditionalArguments, getFinalizeMethodInvoker, getFinalizeMethodToCall, getId, getLibraryCssClasses, getOrder, getPostRenderContent, getPreRenderContent, getProgressiveDisclosureConditionJs, getProgressiveDisclosureControlNames, getProgressiveRender, getPropertyReplacerComponents, getPropertyReplacers, getRefreshTimer, getRefreshWhenChangedPropertyNames, getRenderedHtmlOutput, getRequired, getRowSpan, getSimpleDataAttributes, getStyle, getTemplate, getTemplateName, getTemplateOptions, getTemplateOptionsJSString, getTitle, getToolTip, getValign, getWidth, isDisableSessionPersistence, isDisclosedByAction, isForceSessionPersistence, isHidden, isProgressiveRenderAndRefresh, isProgressiveRenderViaAJAX, isReadOnly, isRefreshedByAction, isRender, isResetDataOnRefresh, isRetrieveViaAjax, isSelfRendered, performInitialization, pushAllToContext, pushObjectToContext, setAdditionalComponentsToRefresh, setAdditionalCssClasses, setAlign, setBaseId, setCellCssClasses, setCellStyle, setCellWidth, setColSpan, setComponentModifiers, setComponentSecurity, setConditionalRefresh, setContext, setCssClasses, setDataAttributes, setDisableSessionPersistence, setDisclosedByAction, setForceSessionPersistence, setHidden, setId, setLibraryCssClasses, setOrder, setPostRenderContent, setPreRenderContent, setProgressiveRender, setProgressiveRenderAndRefresh, setProgressiveRenderViaAJAX, setPropertyReplacers, setReadOnly, setRefreshedByAction, setRefreshTimer, setRefreshWhenChangedPropertyNames, setRender, setRenderedHtmlOutput, setRequired, setResetDataOnRefresh, setRetrieveViaAjax, setRowSpan, setSelfRendered, setStyle, setTemplate, setTemplateName, setTemplateOptions, setTemplateOptionsJSString, setTitle, setToolTip, setValign, setWidth
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.uif.UifDictionaryBean
getExpressionGraph, getPropertyExpression, getPropertyExpressions, getRefreshExpressionGraph, setExpressionGraph, setPropertyExpressions, setRefreshExpressionGraph
 
Methods inherited from interface org.kuali.rice.krad.datadictionary.DictionaryBean
getComponentCode, getNamespaceCode
 
Methods inherited from interface org.kuali.rice.krad.uif.component.ScriptEventSupport
getOnBlurScript, getOnChangeScript, getOnClickScript, getOnCloseScript, getOnDblClickScript, getOnDocumentReadyScript, getOnFocusScript, getOnKeyDownScript, getOnKeyPressScript, getOnKeyUpScript, getOnLoadScript, getOnMouseDownScript, getOnMouseMoveScript, getOnMouseOutScript, getOnMouseOverScript, getOnMouseUpScript, getOnSubmitScript, getOnUnloadScript, setOnBlurScript, setOnChangeScript, setOnClickScript, setOnCloseScript, setOnDblClickScript, setOnDocumentReadyScript, setOnFocusScript, setOnKeyDownScript, setOnKeyPressScript, setOnKeyUpScript, setOnLoadScript, setOnMouseDownScript, setOnMouseMoveScript, setOnMouseOutScript, setOnMouseOverScript, setOnMouseUpScript, setOnSubmitScript, setOnUnloadScript
 

Constructor Detail

Suggest

public Suggest()
Method Detail

performApplyModel

public void performApplyModel(View view,
                              Object model,
                              Component parent)
The following updates are done here:

Specified by:
performApplyModel in interface Component
Overrides:
performApplyModel in class ComponentBase
Parameters:
view - - view instance to which the component belongs
model - - Top level object containing the data (could be the form or a top level business object, dto)
See Also:
Component.performApplyModel(org.kuali.rice.krad.uif.view.View, java.lang.Object, org.kuali.rice.krad.uif.component.Component)

performFinalize

public void performFinalize(View view,
                            Object model,
                            Component parent)
The following actions are performed:

Specified by:
performFinalize in interface Component
Overrides:
performFinalize in class ComponentBase
Parameters:
view - - view instance that should be finalized for rendering
model - - top level object containing the data
parent - - parent component
See Also:
ComponentBase.performFinalize(org.kuali.rice.krad.uif.view.View, java.lang.Object, org.kuali.rice.krad.uif.component.Component)

isSuggestConfigured

public boolean isSuggestConfigured()
Indicates whether the suggest widget has the necessary configuration to render

Returns:
true if the necessary configuration is present, false if not

retrieveSuggestOptions

protected void retrieveSuggestOptions(View view)
Invokes the configured query method and sets the returned method value as the suggest options or suggest options JS string

Parameters:
view - view instance the suggest belongs to, used to get the view helper service if needed

getSuggestQuery

public AttributeQuery getSuggestQuery()
Attribute query instance the will be executed to provide the suggest options

Returns:
AttributeQuery

setSuggestQuery

public void setSuggestQuery(AttributeQuery suggestQuery)
Setter for the suggest attribute query

Parameters:
suggestQuery -

getValuePropertyName

public String getValuePropertyName()
Name of the property on the query result object that provides the options for the suggest, values from this field will be collected and sent back on the result to provide as suggest options.

If a labelPropertyName is also set, the property specified by it will be used as the label the user selects (the suggestion), but the value will be the value retrieved by this property. If only one of labelPropertyName or valuePropertyName is set, the property's value on the object will be used for both the value inserted on selection and the suggestion text (most default cases only a valuePropertyName would be set).

Returns:
source property name

setValuePropertyName

public void setValuePropertyName(String valuePropertyName)
Setter for the value property name

Parameters:
valuePropertyName -

getLabelPropertyName

public String getLabelPropertyName()
Name of the property on the query result object that provides the label for the suggestion.

This should be set when the label that the user selects is different from the value that is inserted when a user selects a suggestion. If only one of labelPropertyName or valuePropertyName is set, the property's value on the object will be used for both the value inserted on selection and the suggestion text (most default cases only a valuePropertyName would be set).

Returns:
labelPropertyName representing the property to use for the suggestion label of the item

setLabelPropertyName

public void setLabelPropertyName(String labelPropertyName)
Set the labelPropertyName

Parameters:
labelPropertyName -

getAdditionalPropertiesToReturn

public List<String> getAdditionalPropertiesToReturn()
List of additional properties to return in the result objects to the plugin's success callback.

In most cases, this should not be set. The main use case of setting this list is to use additional properties in the select function on the plugin's options, so it is only recommended that this property be set when doing heavy customization to the select function. This list is not used if the full result object is already being returned.

Returns:
the list of additional properties to send back

setAdditionalPropertiesToReturn

public void setAdditionalPropertiesToReturn(List<String> additionalPropertiesToReturn)
Set the list of additional properties to return to the plugin success callback results

Parameters:
additionalPropertiesToReturn -

isReturnFullQueryObject

public boolean isReturnFullQueryObject()
When set to true the results of a query method will be sent back as-is (in translated form) with all properties intact.

Note this is not supported for highly complex objects (ie, most auto-query objects - will throw exception). Intended usage of this flag is with custom query methods which return simple data objects. The query method can return a list of Strings which will be used for the suggestions, a list of objects with 'label' and 'value' properties, or a custom object. In the case of using a customObject labelPropertyName or valuePropertyName MUST be specified (or both) OR the custom object must contain a property named "label" or "value" (or both) for the suggestions to appear. In cases where this is not used, the data sent back represents a slim subset of the properties on the object.

Returns:
true if the query method results should be used as the suggestions, false to assume objects are returned and suggestions are formed using the source property name

setReturnFullQueryObject

public void setReturnFullQueryObject(boolean returnFullQueryObject)
Setter for the for returning the full object of the query

Parameters:
returnFullQueryObject -

isRetrieveAllSuggestions

public boolean isRetrieveAllSuggestions()
Indicates whether all suggest options should be retrieved up front and provide to the suggest widget as options locally

Use this for a small list of options to improve performance. The query will be performed on the client to filter the provider options based on the users input instead of doing a query each time

When a query method is configured and this option set to true the method will be invoked to set the options. The query method should not take any arguments and should return the suggestion options List or the JS String as a result. If a query method is not configured the suggest options can be set through configuration or a view helper method (for example a component finalize method)

Returns:
true to provide the suggest options initially, false to use ajax retrieval based on the user's input

setRetrieveAllSuggestions

public void setRetrieveAllSuggestions(boolean retrieveAllSuggestions)
Setter for the retrieve all suggestions indicator

Parameters:
retrieveAllSuggestions -

getSuggestOptions

public List<Object> getSuggestOptions()
When isRetrieveAllSuggestions() is true, this list provides the full list of suggestions

If a query method is configured that method will be invoked to populate this list, otherwise the list should be populated through configuration or the view helper

The suggest options can either be a list of Strings, in which case the strings will be the suggested values. Or a list of objects. If the object does not have 'label' and 'value' properties, a custom render and select method must be provided

Returns:
list of suggest options

setSuggestOptions

public void setSuggestOptions(List<Object> suggestOptions)
Setter for the list of suggest options

Parameters:
suggestOptions -

getSuggestOptionsJsString

public String getSuggestOptionsJsString()
Returns the suggest options as a JS String (set by the framework from method invocation)

Returns:
suggest options JS string

setSuggestOptionsJsString

public void setSuggestOptionsJsString(String suggestOptionsJsString)
Sets suggest options javascript string

Parameters:
suggestOptionsJsString -

copyProperties

protected <T> void copyProperties(T component)
Description copied from class: ComponentBase
Copies the properties over for the copy method

Overrides:
copyProperties in class WidgetBase
Parameters:
component - base bean
See Also:
ComponentBase.copy()


Copyright © 2005-2014 The Kuali Foundation. All Rights Reserved.