Package com.smartgwt.client.widgets.form

# Class ValuesManager

java.lang.Object
com.smartgwt.client.core.BaseClass
com.smartgwt.client.widgets.form.ValuesManager

All Implemented Interfaces:
  `HasHandlers`, `HasAsyncValidationReplyHandlers`, `HasMemberSynchronizedHandlers`, `HasHiddenValidationErrorsHandlers`

public class ValuesManager extends BaseClass implements HasAsyncValidationReplyHandlers, HasHiddenValidationErrorsHandlers, HasMemberSynchronizedHandlers
The ValuesManager manages data from multiple member forms.

If a single logical form needs to be separated into multiple DynamicForm instances for Layout purposes (for example, spanning one logical form across multiple Tabs), a ValuesManager can be used to make the forms act as one logical form, supporting all value-related APIs otherwise called on DynamicForm directly.

A ValuesManager has no visual representation - it is strictly a logical entity, and the member forms provide the user interface. You can initialize a ValuesManager with a set of member forms (by setting `members` at init) or add and remove member forms dynamically.

Calling `setValues()` on a ValuesManager will automatically route new field values to whichever member form is showing an editor for that field. Likewise, calling `validate()` will validate all member forms, and `saveData()` will initiate a save operation which aggregates values from all member forms.

Like a DynamicForm, a ValuesManager can be databound by setting `dataSource`. In this case all member forms must also be bound to the same DataSource.

In general, when working with a ValuesManager and its member forms, call APIs on the ValuesManager whenever you are dealing with values that span multiple forms, and only call APIs on member forms that are specific to that form or its fields.

Note that, just as a DynamicForm can track values that are not shown in any FormItem, a ValuesManager may track values for which there is no FormItem in any member form. However, when using a ValuesManager these extra values are only allowed on the ValuesManager itself. Member forms will not track values for which they do not have FormItems.

- ## Field Summary

  ### Fields inherited from class com.smartgwt.client.core.BaseClass

  `config, configOnly, factoryCreated, factoryProperties, id, scClassName`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ValuesManager()`
  `ValuesManager(JavaScriptObject jsObj)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `HandlerRegistration`
  `addAsyncValidationReplyHandler(AsyncValidationReplyHandler handler)`
  Add a asyncValidationReply handler.
  `HandlerRegistration`
  `addHiddenValidationErrorsHandler(HiddenValidationErrorsHandler handler)`
  Add a hiddenValidationErrors handler.
  `void`
  `addMember(Canvas member)`
  `void`
  `addMember(DynamicForm member)`
  Add a new member to this valuesManager.
  `void`
  `addMember(String member)`
  Add a new member to this valuesManager.
  `HandlerRegistration`
  `addMemberSynchronizedHandler(MemberSynchronizedHandler handler)`
  Add a memberSynchronized handler.
  `HandlerRegistration`
  `addSubmitValuesHandler(SubmitValuesHandler handler)`
  Add a submitValues handler.
  `void`
  `cancel(DSRequest requestProperties)`
  Deprecated.
  As of Smartclient version 13.0, due to the removal of Apache Struts.
  `Map`
  `checkForValidationErrors(ValidationStatusCallback callback)`
  Performs silent validation of the value manager values, like `valuesAreValid()`.
  `Map`
  `checkForValidationErrors(ValidationStatusCallback callback, boolean skipServerValidation)`
  Performs silent validation of the value manager values, like `valuesAreValid()`.
  `void`
  `clearErrors(boolean showErrors)`
  Clears all errors from member forms.
  `void`
  `clearFieldErrors(String fieldName, boolean show)`
  Clear all validation errors associated with some field in this form
  `void`
  `clearValue(String fieldName)`
  Clear the value for some field.
  `void`
  `clearValues()`
  Clear out all the values managed by this values manager.
  `JavaScriptObject`
  `create()`
  `void`
  `editNewRecord()`
  Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
  `void`
  `editNewRecord(Record initialValues)`
  Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
  `void`
  `editNewRecord(Map initialValues)`
  Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
  `void`
  `editRecord(Record record)`
  Edit an existing record.
  `void`
  `editSelectedData(ListGrid selectionComponent)`
  Edit the record selected in the specified selection component (typically a `ListGrid`).
  `void`
  `fetchData()`
  Retrieve data that matches the provided criteria, and edit the first record returned
  `void`
  `fetchData(Criteria criteria)`
  `void`
  `fetchData(Criteria criteria, DSCallback callback)`
  `void`
  `fetchData(Criteria criteria, DSCallback callback, DSRequest requestProperties)`
  Retrieve data that matches the provided criteria, and edit the first record returned
  `void`
  `filterData()`
  Retrieve data that matches the provided criteria, and edit the first record returned.
  Differs from `DynamicForm.fetchData()` in that a case insensitive substring match will be performed against the criteria to retrieve the data.
  `void`
  `filterData(Criteria criteria)`
  `void`
  `filterData(Criteria criteria, DSCallback callback)`
  `void`
  `filterData(Criteria criteria, DSCallback callback, DSRequest requestProperties)`
  Retrieve data that matches the provided criteria, and edit the first record returned.
  Differs from `DynamicForm.fetchData()` in that a case insensitive substring match will be performed against the criteria to retrieve the data.
  `String`
  `getAddOperation()`
  `operationId` to use when performing add operations.
  `Boolean`
  `getAutoSynchronize()`
  If explicitly set to false, prevents the ValuesManager from automatically propagating data value changes to its members.
  `static ValuesManager`
  `getById(String ID)`
  Retrieve a ValuesManager by it's global `ID`.
  `Map`
  `getChangedValues()`
  Returns all values within this DynamicForm that have changed since `DynamicForm.rememberValues()` last ran.
  `DataSource`
  `getDataSource()`
  The DataSource that this component should bind to for default fields and for performing `DSRequest`.
  `Boolean`
  `getDeepCloneNonFieldValuesOnEdit()`
  When editing values in this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of values that are not associated with a field (ie, attributes on the record that do not map to a component field either directly by name, or by `FormItem.dataPath`.
  `Boolean`
  `getDeepCloneOnEdit()`
  Before we start editing the values of this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of the underlying values.
  `Boolean`
  `getDisableValidation()`
  If set to true, client-side validators will not run on the form when validate() is called.
  `Map`
  `getErrors()`
  Returns the set of errors for this valuesManager.
  `String`
  `getFetchOperation()`
  `operationId` to use when performing fetch operations.
  `String[]`
  `getFieldErrors(String fieldName)`
  Returns any validation errors for some field in this valuesManager.
  `FormItem`
  `getItem(String itemID)`
  Retrieve a `FormItem` from this ValuesManager.
  `Canvas[]`
  `getMemberCanvases()`
  Returns the members of this ValuesManager as an array of Canvas objects.
  `Canvas`
  `getMemberForField(String fieldName)`
  Given a fieldName or dataPath, this method will find the member responsible for interacting with that field's value.
  `DynamicForm[]`
  `getMembers()`
  Returns an array of members in this ValuesManager.
  `Map`
  `getOldValues()`
  Returns the set of values last stored by `DynamicForm.rememberValues()`.
  `OperatorId`
  `getOperator()`
  What operator should be used to combine sub-criteria from member forms when `getValuesAsCriteria()` is called?
  `static ValuesManager`
  `getOrCreateRef(JavaScriptObject jsObj)`
  `Map`
  `getPaletteDefaults()`
  This method returns a Map of config properties suitable for use as the "defaults" attribute of a `PaletteNode`.
  `String`
  `getRemoveOperation()`
  `operationId` to use when performing remove operations.
  `DSOperationType`
  `getSaveOperationType()`
  Default `DSOperationType` to be performed when `DynamicForm.saveData()` is called.
  `Boolean`
  `getSuppressValidationErrorCallback()`
  When calling `saveData()` on a form or valuesManager, by default if the server returns an error code, any callback passed into saveData() will not be fired.
  `String`
  `getUpdateOperation()`
  `operationId` to use when performing update operations.
  `Object`
  `getValue(String fieldName)`
  Return the value of the field.
  `String`
  `getValueAsString(String fieldName)`
  Return the value as String
  `Map`
  `getValues()`
  Returns the current set of values for the values manager instance.
  `AdvancedCriteria`
  `getValuesAsAdvancedCriteria()`
  Return an AdvancedCriteria object based on the current set of values within memberForms.
  `AdvancedCriteria`
  `getValuesAsAdvancedCriteria(TextMatchStyle textMatchStyle)`
  Return an AdvancedCriteria object based on the current set of values within memberForms.
  `Criteria`
  `getValuesAsCriteria()`
  Retrieves the combined {@link com.smartgwt.client.widgets.form.DynamicForm#getValuesAsCriteria(),criteria values} for all member forms.
  `Record`
  `getValuesAsRecord()`
  Returns the current set of values for the values manager instance.
  `Boolean`
  `hasErrors()`
  Are there any errors associated with any fields in this valuesManager?
  `Boolean`
  `hasFieldErrors(String fieldName)`
  Are there any errors associated with a field in this valuesManager?
  `Boolean`
  `isNewRecord()`
  Returns true if `saveOperationType` is currently "add".
  `Boolean`
  `isPendingAsyncValidation()`
  Is this `ValuesManager` waiting for an asynchronous validation to complete? This method will return true after `validate()` is called on a component with server-side validators for some field(s), until the server responds.
  `void`
  `itemChanged(FormItem item, Object newValue)`
  Handler fired whenever a change to a FormItem fires itemChanged() on one of the member forms.
  `protected void`
  `onInit()`
  `protected void`
  `onInit_ValuesManager()`
  `JavaScriptObject`
  `rememberValues()`
  Make a snapshot of the current set of values, so we can reset to them later.
  `void`
  `removeMember(Canvas member)`
  `void`
  `removeMember(DynamicForm member)`
  Remove a member form from this valuesManager, so its values are no longer managed by this instance.
  `void`
  `removeMember(String formID)`
  Remove a member form from this valuesManager, so its values are no longer managed by this instance.
  `void`
  `removeMembers(DynamicForm... members)`
  Remove multiple member forms from this valuesManager.
  `void`
  `resetValues()`
  Same as `DynamicForm.reset()`.
  `void`
  `saveData()`
  Validate and then save the form's current values to the `DataSource` this form is bound to.
  `void`
  `saveData(DSCallback callback)`
  `void`
  `saveData(DSCallback callback, DSRequest requestProperties)`
  Validate and then save the form's current values to the `DataSource` this form is bound to.
  `ValuesManager`
  `setAddOperation(String addOperation)`
  `operationId` to use when performing add operations.
  `ValuesManager`
  `setAutoSynchronize(Boolean autoSynchronize)`
  If explicitly set to false, prevents the ValuesManager from automatically propagating data value changes to its members.
  `void`
  `setDataSource(DataSource dataSource)`
  The DataSource that this component should bind to for default fields and for performing&#010 DataSource requests
  `ValuesManager`
  `setDeepCloneNonFieldValuesOnEdit(Boolean deepCloneNonFieldValuesOnEdit)`
  When editing values in this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of values that are not associated with a field (ie, attributes on the record that do not map to a component field either directly by name, or by `FormItem.dataPath`.
  `ValuesManager`
  `setDeepCloneOnEdit(Boolean deepCloneOnEdit)`
  Before we start editing the values of this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of the underlying values.
  `ValuesManager`
  `setDisableValidation(Boolean disableValidation)`
  If set to true, client-side validators will not run on the form when validate() is called.
  `void`
  `setErrors(Map errors, boolean showErrors)`
  Setter for validation errors on this form.
  `ValuesManager`
  `setFetchOperation(String fetchOperation)`
  `operationId` to use when performing fetch operations.
  `void`
  `setFieldErrors(String fieldName, String[] errors, boolean showErrors)`
  Set field validation errors for some field.
  `void`
  `setFieldErrors(String fieldName, String error, boolean showErrors)`
  Set field validation error for some field.
  `ValuesManager`
  `setOperator(OperatorId operator)`
  What operator should be used to combine sub-criteria from member forms when `getValuesAsCriteria()` is called?
  `ValuesManager`
  `setRemoveOperation(String removeOperation)`
  `operationId` to use when performing remove operations.
  `ValuesManager`
  `setSaveOperationType(DSOperationType saveOperationType)`
  Default `DSOperationType` to be performed when `DynamicForm.saveData()` is called.
  `ValuesManager`
  `setSuppressValidationErrorCallback(Boolean suppressValidationErrorCallback)`
  When calling `saveData()` on a form or valuesManager, by default if the server returns an error code, any callback passed into saveData() will not be fired.
  `ValuesManager`
  `setUpdateOperation(String updateOperation)`
  `operationId` to use when performing update operations.
  `void`
  `setValue(String fieldName, boolean value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, double value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, JavaScriptObject value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, DataClass value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, DataClass[] value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, Record value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, Record[] value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, String value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, Date value)`
  Set the value for some field.
  `void`
  `setValue(String fieldName, Map value)`
  Set the value for some field.
  `void`
  `setValues(Map values)`
  Replaces the current values of the ValuesManager and all member components with the values passed in.
  `void`
  `showErrors()`
  If this form has any outstanding validation errors, show them now.
  &#010 This method is called when the set of errors are changed by `DynamicForm.setErrors(java.util.Map, boolean)` or&#010 `DynamicForm.validate()`.
  `void`
  `showFieldErrors()`
  Method to explicitly show the latest set of validation errors present on some field within this ValuesManager.
  If the field in question is present as a visible item in a member form, the form item will be redrawn to display the error message(s).
  `void`
  `submit()`
  `submit()` is automatically called when a `SubmitItem` in a member form is clicked, or if `saveOnEnter` is set for some member form, when the "Enter" key is pressed in a text input.
  `void`
  `submit(DSCallback callback)`
  `void`
  `submit(DSCallback callback, DSRequest requestProperties)`
  `submit()` is automatically called when a `SubmitItem` in a member form is clicked, or if `saveOnEnter` is set for some member form, when the "Enter" key is pressed in a text input.
  `void`
  `synchronizeMember(Canvas member)`
  Update the parameter ValuesManager member to reflect the current values held by the ValuesManager.
  `void`
  `synchronizeMembers()`
  Update all of this ValuesManager's members to reflect the current values held by the ValuesManager.
  `void`
  `synchronizeMembersOnDataPath(String dataPath)`
  Update just those of this ValuesManager's members that have the parameter `dataPath`, to reflect the current values held by the ValuesManager.
  `Boolean`
  `validate()`
  Validate the current set of values for this values manager against validators defined in the member forms.
  `boolean`
  `valuesAreValid()`
  Method to determine whether the current set of values for this values manager would pass validation by the validators defined in the member forms.
  `Boolean`
  `valuesHaveChanged()`
  Compares the current set of values with the values stored by the call to the `DynamicForm.rememberValues()` method.

  ### Methods inherited from class com.smartgwt.client.core.BaseClass

  `addDynamicProperty, addDynamicProperty, addDynamicProperty, addDynamicProperty, applyFactoryProperties, asSGWTComponent, clearDynamicProperty, createJsObj, destroy, doAddHandler, doInit, error, error, errorIfNotCreated, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsElement, getAttributeAsFloat, getAttributeAsInt, getAttributeAsJavaScriptObject, getAttributeAsMap, getAttributeAsString, getAttributeAsStringArray, getClassName, getConfig, getHandlerCount, getID, getJsObj, getOrCreateJsObj, getRef, getRuleScope, getScClassName, getTestInstance, hasAutoAssignedID, hasDynamicProperty, internalSetID, internalSetID, isConfigOnly, isCreated, isFactoryCreated, onBind, registerID, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setConfig, setConfigOnly, setFactoryCreated, setID, setJavaScriptObject, setProperty, setProperty, setProperty, setProperty, setRuleScope, setScClassName`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface com.google.gwt.event.shared.HasHandlers

  `fireEvent`

- ## Constructor Details

  - ### ValuesManager

    public ValuesManager()

  - ### ValuesManager

    public ValuesManager(JavaScriptObject jsObj)

- ## Method Details

  - ### getOrCreateRef

    public static ValuesManager getOrCreateRef(JavaScriptObject jsObj)

  - ### getPaletteDefaults

    public Map getPaletteDefaults()
    This method returns a Map of config properties suitable for use as the "defaults" attribute of a `PaletteNode`. Use it when you need to work with PaletteNodes indirectly, such when setting up `TileRecord`s that will be used in a `TilePalette`. See `the dev tools overview` for examples of how to assemble and acquire a suitable defaults object when you are creating a PaletteNode indirectly

  - ### create

    public JavaScriptObject create()
    Specified by:
      `create` in class `BaseClass`

  - ### setAddOperation

    public ValuesManager setAddOperation(String addOperation)
    `operationId` to use when performing add operations.
    Parameters:
      `addOperation` - New addOperation value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Operations Overview`

  - ### getAddOperation

    public String getAddOperation()
    `operationId` to use when performing add operations.
    Returns:
      Current addOperation value. Default value is null
    See Also:
      - `Operations Overview`

  - ### setAutoSynchronize

    public ValuesManager setAutoSynchronize(Boolean autoSynchronize)
    If explicitly set to false, prevents the ValuesManager from automatically propagating data value changes to its members. You can manually synchronize member data values at any time with a call to `synchronizeMembers()`.

    Note : This is an advanced setting

    Parameters:
      `autoSynchronize` - New autoSynchronize value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls

  - ### getAutoSynchronize

    public Boolean getAutoSynchronize()
    If explicitly set to false, prevents the ValuesManager from automatically propagating data value changes to its members. You can manually synchronize member data values at any time with a call to `synchronizeMembers()`.
    Returns:
      Current autoSynchronize value. Default value is null

  - ### setDeepCloneNonFieldValuesOnEdit

    public ValuesManager setDeepCloneNonFieldValuesOnEdit(Boolean deepCloneNonFieldValuesOnEdit)
    When editing values in this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of values that are not associated with a field (ie, attributes on the record that do not map to a component field either directly by name, or by `FormItem.dataPath`. If this value is not explicitly set, it defaults to the value of `DataSource.deepCloneNonFieldValuesOnEdit` if there is a dataSource, or to the value of the static `deepCloneNonFieldValuesOnEdit` if there is no dataSource.

    Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays.

    Note : This is an advanced setting

    Parameters:
      `deepCloneNonFieldValuesOnEdit` - New deepCloneNonFieldValuesOnEdit value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Canvas.setDataPath(java.lang.String)`
      - `FormItem.setDataPath(java.lang.String)`
      - `DataSourceField.setDeepCloneOnEdit(java.lang.Boolean)`
      - `DataSource.setDeepCloneOnEdit(java.lang.Boolean)`

  - ### getDeepCloneNonFieldValuesOnEdit

    public Boolean getDeepCloneNonFieldValuesOnEdit()
    When editing values in this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of values that are not associated with a field (ie, attributes on the record that do not map to a component field either directly by name, or by `FormItem.dataPath`. If this value is not explicitly set, it defaults to the value of `DataSource.deepCloneNonFieldValuesOnEdit` if there is a dataSource, or to the value of the static `deepCloneNonFieldValuesOnEdit` if there is no dataSource.

    Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays.

    Returns:
      Current deepCloneNonFieldValuesOnEdit value. Default value is null
    See Also:
      - `Canvas.getDataPath()`
      - `FormItem.getDataPath()`
      - `DataSourceField.getDeepCloneOnEdit()`
      - `DataSource.getDeepCloneOnEdit()`

  - ### setDeepCloneOnEdit

    public ValuesManager setDeepCloneOnEdit(Boolean deepCloneOnEdit)
    Before we start editing the values of this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of the underlying values. See `DataSource.deepCloneOnEdit` for details of what this means.

    If this value is not explicitly set, it defaults to the value of `DataSource.deepCloneOnEdit`. This value can be overridden per-field with `DataSourceField.deepCloneOnEdit`.

    Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays, using `dataPath`s.

    Note : This is an advanced setting

    Parameters:
      `deepCloneOnEdit` - New deepCloneOnEdit value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Canvas.setDataPath(java.lang.String)`
      - `FormItem.setDataPath(java.lang.String)`
      - `DataSourceField.setDeepCloneOnEdit(java.lang.Boolean)`
      - `DataSource.setDeepCloneOnEdit(java.lang.Boolean)`

  - ### getDeepCloneOnEdit

    public Boolean getDeepCloneOnEdit()
    Before we start editing the values of this ValuesManager in one or more DataBoundComponents, should we perform a deep clone of the underlying values. See `DataSource.deepCloneOnEdit` for details of what this means.

    If this value is not explicitly set, it defaults to the value of `DataSource.deepCloneOnEdit`. This value can be overridden per-field with `DataSourceField.deepCloneOnEdit`.

    Like the other `deepCloneOnEdit` settings, this flag only has an effect if you are editing a values object that contains nested objects or arrays, using `dataPath`s.

    Returns:
      Current deepCloneOnEdit value. Default value is null
    See Also:
      - `Canvas.getDataPath()`
      - `FormItem.getDataPath()`
      - `DataSourceField.getDeepCloneOnEdit()`
      - `DataSource.getDeepCloneOnEdit()`

  - ### setDisableValidation

    public ValuesManager setDisableValidation(Boolean disableValidation)
    If set to true, client-side validators will not run on the form when validate() is called. Server-side validators (if any) will still run on attempted save.

    Note : This is an advanced setting

    Parameters:
      `disableValidation` - New disableValidation value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `DynamicForm.saveData()`
      - `DynamicForm.submit()`
      - `Validation overview and related methods`

  - ### getDisableValidation

    public Boolean getDisableValidation()
    If set to true, client-side validators will not run on the form when validate() is called. Server-side validators (if any) will still run on attempted save.
    Returns:
      Current disableValidation value. Default value is null
    See Also:
      - `DynamicForm.saveData()`
      - `DynamicForm.submit()`
      - `Validation overview and related methods`

  - ### setFetchOperation

    public ValuesManager setFetchOperation(String fetchOperation)
    `operationId` to use when performing fetch operations.
    Parameters:
      `fetchOperation` - New fetchOperation value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Operations Overview`

  - ### getFetchOperation

    public String getFetchOperation()
    `operationId` to use when performing fetch operations.
    Returns:
      Current fetchOperation value. Default value is null
    See Also:
      - `Operations Overview`

  - ### setOperator

    public ValuesManager setOperator(OperatorId operator) throws IllegalStateException
    What operator should be used to combine sub-criteria from member forms when `getValuesAsCriteria()` is called?
    Parameters:
      `operator` - New operator value. Default value is "and"
    Returns:
      `ValuesManager` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getOperator

    public OperatorId getOperator()
    What operator should be used to combine sub-criteria from member forms when `getValuesAsCriteria()` is called?
    Returns:
      Current operator value. Default value is "and"

  - ### setRemoveOperation

    public ValuesManager setRemoveOperation(String removeOperation)
    `operationId` to use when performing remove operations.
    Parameters:
      `removeOperation` - New removeOperation value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Operations Overview`

  - ### getRemoveOperation

    public String getRemoveOperation()
    `operationId` to use when performing remove operations.
    Returns:
      Current removeOperation value. Default value is null
    See Also:
      - `Operations Overview`

  - ### setSaveOperationType

    public ValuesManager setSaveOperationType(DSOperationType saveOperationType)
    Default `DSOperationType` to be performed when `DynamicForm.saveData()` is called. This property is automatically set on a call to `DynamicForm.editRecord()` or `DynamicForm.editNewRecord()`, or may be set directly via `DynamicForm.setSaveOperationType()`.

    If `saveOperationType` is unset, the form will heuristically determine whether an "add" or "update" operation is intended based on whether the primaryKey field is present and editable.
    If this method is called after the component has been drawn/initialized: Setter for the default `DSOperationType` when `DynamicForm.saveData()` is called. Note that this property can also be set by calling `DynamicForm.editRecord()` or `DynamicForm.editNewRecord()`

    Parameters:
      `saveOperationType` - Operation type to use as a default. Valid values are `"add"` or `"update"`. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls

  - ### getSaveOperationType

    public DSOperationType getSaveOperationType()
    Default `DSOperationType` to be performed when `DynamicForm.saveData()` is called. This property is automatically set on a call to `DynamicForm.editRecord()` or `DynamicForm.editNewRecord()`, or may be set directly via `DynamicForm.setSaveOperationType()`.

    If `saveOperationType` is unset, the form will heuristically determine whether an "add" or "update" operation is intended based on whether the primaryKey field is present and editable.

    Returns:
      Returns the `DSOperationType` to be performed when `DynamicForm.saveData()` or `saveData()` is called.
      Valid options are `"add"` or `"update"`.

      If a `DSRequest` configuration object is passed in containing an explicit operationType this will be returned. Otherwise `this.saveOperationType` will be returned if set. Note that `saveOperationType` is automatically set via calls to data binding methods such as `DynamicForm.editNewRecord()`, or it may be `set explicitly`.

      If no explicit saveOperationType is present, the system will use the following heuristic to determine the save operationType:

      - If the form has no value for the `primaryKey field` this method will return "add". The assumption is that this is a new record, and the field will be populated when the record is created, (as with a "sequence" type field).
      - If, `when the form's values were populated`, the form had value for the `primaryKey field` but it has subsequently be changed, this method will return "add". In this case the value has been changed, either by the user or programmatically so a different (new) record is assumed. This is determined by looking at the `oldValues` for the form.
      - If the `primaryKey field` is editable and a value is now present for the primary key field, but was not present in the `oldValues` for the form, this method will return "add". In this case either no initial values were provided, or a 'sparse' set of values for a new record (with no primary key) were provided to the form and the user has subsequently explicitly entered a new primaryKey field value.
      - Otherwise this method will return "update". Either the primaryKey field is non editable, or the user has not changed it from its initial value.
      . Default value is null

  - ### setSuppressValidationErrorCallback

    public ValuesManager setSuppressValidationErrorCallback(Boolean suppressValidationErrorCallback)
    When calling `saveData()` on a form or valuesManager, by default if the server returns an error code, any callback passed into saveData() will not be fired. If the error code returned by the server indicates a validation error, it will be displayed to the user by updating the form items to show the error messages, and firing any specified hiddenValidationErrors handler, otherwise the standard RPCManager error handling logic would be invoked.

    Developers who want to handle errors themselves can override this default by specifying `dsRequest.willHandleError` on the DSRequest. In this case the callback passed in will be fired even if the server returns an error status code.

    If `suppressValidationErrorCallback` is set to true, if a save attempt returns a validation error code, the user-specified callback will not be fired even if `willHandleError:true` was specified on the dsRequest - though for other error codes, the callback would be fired if willHandleError is specified on the request. Note that this is the historical behavior for SmartGWT builds 4.0 and earlier

    Note : This is an advanced setting

    Parameters:
      `suppressValidationErrorCallback` - New suppressValidationErrorCallback value. Default value is false
    Returns:
      `ValuesManager` instance, for chaining setter calls

  - ### getSuppressValidationErrorCallback

    public Boolean getSuppressValidationErrorCallback()
    When calling `saveData()` on a form or valuesManager, by default if the server returns an error code, any callback passed into saveData() will not be fired. If the error code returned by the server indicates a validation error, it will be displayed to the user by updating the form items to show the error messages, and firing any specified hiddenValidationErrors handler, otherwise the standard RPCManager error handling logic would be invoked.

    Developers who want to handle errors themselves can override this default by specifying `dsRequest.willHandleError` on the DSRequest. In this case the callback passed in will be fired even if the server returns an error status code.

    If `suppressValidationErrorCallback` is set to true, if a save attempt returns a validation error code, the user-specified callback will not be fired even if `willHandleError:true` was specified on the dsRequest - though for other error codes, the callback would be fired if willHandleError is specified on the request. Note that this is the historical behavior for SmartGWT builds 4.0 and earlier

    Returns:
      Current suppressValidationErrorCallback value. Default value is false

  - ### setUpdateOperation

    public ValuesManager setUpdateOperation(String updateOperation)
    `operationId` to use when performing update operations.
    Parameters:
      `updateOperation` - New updateOperation value. Default value is null
    Returns:
      `ValuesManager` instance, for chaining setter calls
    See Also:
      - `Operations Overview`

  - ### getUpdateOperation

    public String getUpdateOperation()
    `operationId` to use when performing update operations.
    Returns:
      Current updateOperation value. Default value is null
    See Also:
      - `Operations Overview`

  - ### addMember

    public void addMember(DynamicForm member)
    Add a new member to this valuesManager. Any `Canvas` can be a member of a valuesManager, even components like `Layout` or `TabSet` that do not actually have any values to manage. When "valueless" components like these bind to a ValuesManager, it is in order to provide their own child components with a shared valuesManager so that complex data can be displayed and edited - see `DataPath` for more details.

    For components like `DynamicForm` and `ListGrid`, which do have a set of values to manage, the component's values will subsequently be available through this valuesManager.

    Note on pre-existent values when the member component is a `DynamicForm`:
    If the valuesManager has a value specified for some field, for which the member form has an item, this value will be applied to the member form. This is true whether the item has a value or not.
    However if the member form has a value for some field, and the ValuesManager does not have a specified value for the same field, we allow the valuesManager to pick up the value from the member form.

    Caution: If a DynamicForm without a `DataSource` is passed to this method, `DataBoundComponent.setDataSource()` will be called on that form, recreating the items from copies of the item configuration stored at the time the form was created. This means that any properties or handlers added to the items after form creation will be lost. When in doubt, set the DataSource in the form as soon as possible.

    Parameters:
      `member` - component (or ID of component) to add to this valuesManager as a member.
    See Also:
      - `com.smartgwt.client.widgets.form.ValuesManager#addMembers`

  - ### cancel

    public void cancel(DSRequest requestProperties)
    Deprecated.
    As of Smartclient version 13.0, due to the removal of Apache Struts.
    This method exists for clean integration with existing server frameworks that have a 'cancel' feature which typically clears session state associated with the form. When this method is called, an RPC is sent to the server. You must pass the appropriate params property in the request properties as required by your server framework.

    For example:

          DSRequest requestProperties = new DSRequest();
          Map params = new HashMap();
          params.put("CANCEL", "cancel");
          requestProperties.setParams(params);

    Note that no other form data is sent. By default the current top-level page is replaced with the reply. If you wish to ignore the server reply instead, include the following request properties:

          DSRequest requestProperties = new DSRequest();
          // other request property settings ...
          requestProperties.setIgnoreTimeout(true);
          requestProperties.setAttribute("target", null);

    Parameters:
      `requestProperties` - additional properties to set on the RPCRequest that will be issued
    See Also:
      - `DynamicForm.cancelEditing()`
      - `Submitting overview and related methods`

  - ### checkForValidationErrors

    public Map checkForValidationErrors(ValidationStatusCallback callback)
    Performs silent validation of the value manager values, like `valuesAreValid()`. In contrast to `valuesAreValid()`, this method allows checking for server-side errors, and finding out what the errors are.

    The callback must be passed unless server-side validation is being skipped, and If passed, it always fires, errors or not, firing synchronously if server validation is skipped.

    Parameters:
      `callback` - callback to invoke after validation is complete
    Returns:
      null if server-side validation is required, or no errors are present; otherwise, a Map of field names to the associated errors, for those fields that failed validation.
    See Also:
      - `Validation overview and related methods`

  - ### checkForValidationErrors

    public Map checkForValidationErrors(ValidationStatusCallback callback, boolean skipServerValidation)
    Performs silent validation of the value manager values, like `valuesAreValid()`. In contrast to `valuesAreValid()`, this method allows checking for server-side errors, and finding out what the errors are.

    The callback must be passed unless server-side validation is being skipped, and If passed, it always fires, errors or not, firing synchronously if server validation is skipped.

    Parameters:
      `callback` - callback to invoke after validation is complete
      `skipServerValidation` - whether to skip doing server-side validation
    Returns:
      null if server-side validation is required, or no errors are present; otherwise, a Map of field names to the associated errors, for those fields that failed validation.
    See Also:
      - `Validation overview and related methods`

  - ### clearErrors

    public void clearErrors(boolean showErrors)
    Clears all errors from member forms.
    Parameters:
      `showErrors` - If true, clear any visible error messages.
    See Also:
      - `Errors overview and related methods`

  - ### clearFieldErrors

    public void clearFieldErrors(String fieldName, boolean show)
    Clear all validation errors associated with some field in this form
    Parameters:
      `fieldName` - field for which errors should be cleared
      `show` - if true, and the field is present in one of our member forms, redraw it to clear any currently visible validation errors
    See Also:
      - `Errors overview and related methods`

  - ### clearValue

    public void clearValue(String fieldName)
    Clear the value for some field.
    Parameters:
      `fieldName` - Which field to set the value for

  - ### clearValues

    public void clearValues()
    Clear out all the values managed by this values manager.

  - ### editNewRecord

    public void editNewRecord()
    Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
    This method will also call `DynamicForm.setSaveOperationType()` to ensure subsequent calls to `saveData()` will use an `add` rather than an `update` operation.
    See Also:
      - `DynamicForm.saveData()`
      - `DataBound Component Methods`

  - ### editNewRecord

    public void editNewRecord(Record initialValues)
    Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
    This method will also call `DynamicForm.setSaveOperationType()` to ensure subsequent calls to `saveData()` will use an `add` rather than an `update` operation.
    Parameters:
      `initialValues` - initial set of values for the editor as a map of field names to their corresponding values
    See Also:
      - `DynamicForm.saveData()`
      - `DataBound Component Methods`

  - ### editNewRecord

    public void editNewRecord(Map initialValues)
    Prepare to edit a new record by clearing the current set of values (or replacing them with initialValues if specified).
    This method will also call `DynamicForm.setSaveOperationType()` to ensure subsequent calls to `saveData()` will use an `add` rather than an `update` operation.
    Parameters:
      `initialValues` - initial set of values for the editor as a map of field names to their corresponding values
    See Also:
      - `DynamicForm.saveData()`
      - `DataBound Component Methods`

  - ### editRecord

    public void editRecord(Record record)
    Edit an existing record. Updates this editors values to match the values of the record passed in, via `setValues()`.

    This method will also call `DynamicForm.setSaveOperationType()` to ensure subsequent calls to `saveData()` will use an `update` rather than an `add` operation.

    Parameters:
      `record` - the record to be edited as a map of field names to their corresponding values
    See Also:
      - `DynamicForm.saveData()`
      - `DataBound Component Methods`

  - ### fetchData

    public void fetchData()
    Retrieve data that matches the provided criteria, and edit the first record returned
    See Also:
      - `DataBound Component Methods`

  - ### fetchData

    public void fetchData(Criteria criteria)
    See Also:
      - `fetchData()`

  - ### fetchData

    public void fetchData(Criteria criteria, DSCallback callback)
    See Also:
      - `fetchData()`

  - ### fetchData

    public void fetchData(Criteria criteria, DSCallback callback, DSRequest requestProperties)
    Retrieve data that matches the provided criteria, and edit the first record returned
    Parameters:
      `criteria` - search criteria
      `callback` - callback to invoke on completion
      `requestProperties` - additional properties to set on the DSRequest that will be issued
    See Also:
      - `DataBound Component Methods`

  - ### filterData

    public void filterData()
    Retrieve data that matches the provided criteria, and edit the first record returned.
    Differs from `DynamicForm.fetchData()` in that a case insensitive substring match will be performed against the criteria to retrieve the data.
    See Also:
      - `DataBound Component Methods`

  - ### filterData

    public void filterData(Criteria criteria)
    See Also:
      - `filterData()`

  - ### filterData

    public void filterData(Criteria criteria, DSCallback callback)
    See Also:
      - `filterData()`

  - ### filterData

    public void filterData(Criteria criteria, DSCallback callback, DSRequest requestProperties)
    Retrieve data that matches the provided criteria, and edit the first record returned.
    Differs from `DynamicForm.fetchData()` in that a case insensitive substring match will be performed against the criteria to retrieve the data.
    Parameters:
      `criteria` - search criteria
      `callback` - callback to invoke on completion
      `requestProperties` - additional properties to set on the DSRequest that will be issued
    See Also:
      - `DataBound Component Methods`

  - ### getChangedValues

    public Map getChangedValues()
    Returns all values within this DynamicForm that have changed since `DynamicForm.rememberValues()` last ran. Note that `DynamicForm.rememberValues()` runs on dynamicForm initialization, and with every call to `DynamicForm.setValues()` so this will typically contain all values the user has explicitly edited since then.
    Returns:
      changed values in the form
    See Also:
      - `getOldValues()`

  - ### getErrors

    public Map getErrors()
    Returns the set of errors for this valuesManager. Errors will be returned as an object of the format
    `{field1:errors, field2:errors}`
    Where each errors object is either a single error message or an array of error message strings.
    Returns:
      Object containing mapping from field names to error strings. Returns null if there are no errors for this valuesManager.
    See Also:
      - `Errors overview and related methods`

  - ### getMemberForField

    public Canvas getMemberForField(String fieldName)
    Given a fieldName or dataPath, this method will find the member responsible for interacting with that field's value. If no form is found, returns null.
    Parameters:
      `fieldName` - fieldName or dataPath to check
    Returns:
      member responsible for displaying this field (may be null).

  - ### getOldValues

    public Map getOldValues()
    Returns the set of values last stored by `DynamicForm.rememberValues()`. Note that `rememberValues()` is called automatically by `DynamicForm.setValues()`, and on form initialization, so this typically contains all values as they were before the user edited them.
    Returns:
      old values in the form
    See Also:
      - `getChangedValues()`

  - ### getValues

    public Map getValues()
    Returns the current set of values for the values manager instance. This includes the values from any form managed by this manager, as well as any values explicitly applied via `setValues()`.

    Note that modifying the returned object is not a supported way of adding or modifying values. Instead use `setValue()` or `setValues()`.

    Returns:
      a map of the values for this manager
    See Also:
      - `DynamicForm.getValues()`

  - ### getValuesAsAdvancedCriteria

    public AdvancedCriteria getValuesAsAdvancedCriteria()
    Return an AdvancedCriteria object based on the current set of values within memberForms.

    Similar to `getValuesAsCriteria()`, except the returned criteria object is guaranteed to be an AdvancedCriteria object, even if none of the form's fields has a specified `FormItem.operator`

    Returns:
      a `AdvancedCriteria` based on the form's current values
    See Also:
      - `Criteria Editing`

  - ### getValuesAsAdvancedCriteria

    public AdvancedCriteria getValuesAsAdvancedCriteria(TextMatchStyle textMatchStyle)
    Return an AdvancedCriteria object based on the current set of values within memberForms.

    Similar to `getValuesAsCriteria()`, except the returned criteria object is guaranteed to be an AdvancedCriteria object, even if none of the form's fields has a specified `FormItem.operator`

    Parameters:
      `textMatchStyle` - If specified the text match style will be used to generate the appropriate `operator` for per field criteria.
    Returns:
      a `AdvancedCriteria` based on the form's current values
    See Also:
      - `Criteria Editing`

  - ### addAsyncValidationReplyHandler

    public HandlerRegistration addAsyncValidationReplyHandler(AsyncValidationReplyHandler handler)
    Add a asyncValidationReply handler.

    Notification fired when an asynchronous validation completes.

    Specified by:
      `addAsyncValidationReplyHandler` in interface `HasAsyncValidationReplyHandlers`
    Parameters:
      `handler` - the asyncValidationReply handler
    Returns:
      `HandlerRegistration` used to remove this handler

  - ### addHiddenValidationErrorsHandler

    public HandlerRegistration addHiddenValidationErrorsHandler(HiddenValidationErrorsHandler handler)
    Add a hiddenValidationErrors handler.

    Method to display validation error messages for a valuesManager when there is not currently visible form item displaying the errors. This will be called when validation fails for
    - a field in a hidden or undrawn member form
    - a hidden field in a visible member form
    - for databound ValuesManagers, a datasource field with specified validators, but not associated item in any member.
    Implement this to provide custom validation error handling for these fields.
    By default hidden validation errors will be logged as warnings in the developerConsole. Call `HiddenValidationErrorsEvent.cancel()` from within `HiddenValidationErrorsHandler.onHiddenValidationErrors(com.smartgwt.client.widgets.form.events.HiddenValidationErrorsEvent)` from this method to suppress that behavior.

    Specified by:
      `addHiddenValidationErrorsHandler` in interface `HasHiddenValidationErrorsHandlers`
    Parameters:
      `handler` - the hiddenValidationErrors handler
    Returns:
      `HandlerRegistration` used to remove this handler

  - ### hasErrors

    public Boolean hasErrors()
    Are there any errors associated with any fields in this valuesManager?
    Returns:
      returns true if there are any outstanding validation errors, false otherwise.
    See Also:
      - `Errors overview and related methods`

  - ### hasFieldErrors

    public Boolean hasFieldErrors(String fieldName)
    Are there any errors associated with a field in this valuesManager?
    Parameters:
      `fieldName` - field to check for errors
    Returns:
      returns true if there are any outstanding validation errors, false otherwise.
    See Also:
      - `Errors overview and related methods`

  - ### isNewRecord

    public Boolean isNewRecord()
    Returns true if `saveOperationType` is currently "add". See `saveOperationType`.
    Returns:
      whether this form will use an "add" operation when saving

  - ### isPendingAsyncValidation

    public Boolean isPendingAsyncValidation()
    Is this `ValuesManager` waiting for an asynchronous validation to complete? This method will return true after `validate()` is called on a component with server-side validators for some field(s), until the server responds.

    Note that the notification method `ValuesManager.asyncValidationReply()` will be fired when validation completes.

    Returns:
      true if this widget has pending asynchronous validations in process

  - ### itemChanged

    public void itemChanged(FormItem item, Object newValue)
    Handler fired whenever a change to a FormItem fires itemChanged() on one of the member forms. Fires after that event.
    Parameters:
      `item` - the FormItem where the change event occurred
      `newValue` - new value for the FormItem

  - ### addMemberSynchronizedHandler

    public HandlerRegistration addMemberSynchronizedHandler(MemberSynchronizedHandler handler)
    Add a memberSynchronized handler.

    Fires after a member component's values have been synchronized from the ValuesManager's values, upon completion of the `ValuesManager.synchronizeMember()` call.

    Specified by:
      `addMemberSynchronizedHandler` in interface `HasMemberSynchronizedHandlers`
    Parameters:
      `handler` - the memberSynchronized handler
    Returns:
      `HandlerRegistration` used to remove this handler

  - ### removeMember

    public void removeMember(DynamicForm member)
    Remove a member form from this valuesManager, so its values are no longer managed by this instance. This does not clear the values associated with the form from the valuesManager - they will still be available via `valuesManager.getValues()`, but will not be updated as the form is manipulated.
    Parameters:
      `member` - form (or ID of form) to remove from this valuesManager
    See Also:
      - `removeMembers(com.smartgwt.client.widgets.form.DynamicForm...)`

  - ### removeMembers

    public void removeMembers(DynamicForm... members)
    Remove multiple member forms from this valuesManager.
    Parameters:
      `members` - array of forms to remove
    See Also:
      - `removeMember(com.smartgwt.client.widgets.form.DynamicForm)`

  - ### resetValues

    public void resetValues()
    Same as `DynamicForm.reset()`.

  - ### saveData

    public void saveData()
    Validate and then save the form's current values to the `DataSource` this form is bound to.

    If client-side validators are defined, they are executed first, and if any errors are found the save is aborted and the form will show the errors.

    If client-side validation passes, a `DSRequest` will be sent, exactly as though `DataSource.addData()` or `DataSource.updateData()` had been called with `the form's values` as data. The `DSRequest.operationType` will be either "update" or "add", depending on the current `DynamicForm.saveOperationType`.

    On either a client-side or server-side validation failure, validation errors will be displayed in the form. Visible items within a DynamicForm will be redrawn to display errors. Validation failure occurring on hidden items, or DataSource fields with no associated form items may be handled via `DynamicForm.hiddenValidationErrors()` or `ValuesManager.hiddenValidationErrors()`.

    In the case of a validation error, the callback will not be called by default since the form has already handled the failed save by displaying the validation errors to the user. If you need to do something additional in this case, you can set `RPCRequest.willHandleError` via the `requestProperties` parameter to force your callback to be invoked. However, first consider:

    - if you are trying to customize display of validation errors, there are several `built-in modes` and `DynamicForm.showErrors()` may be a better place to put customizations.
    - for unrecoverable general errors (eg server is down), `central error handling` in invoked, so consider placing customizations there unless an unrecoverable error should be handled specially by this specific form.
    Note: If a form is to be cleared after saving data, we recommend clearing the form from the callback rather than calling saveData() and then synchronously clearing the form. This gives users a chance to view and respond to any validation errors returned by the server. It is also required to ensure forms containing an `upload field`, have a chance to upload the file to the server.
    See Also:
      - `DataBound Component Methods`
      - Add Example

  - ### saveData

    public void saveData(DSCallback callback)
    See Also:
      - `saveData()`

  - ### saveData

    public void saveData(DSCallback callback, DSRequest requestProperties)
    Validate and then save the form's current values to the `DataSource` this form is bound to.

    If client-side validators are defined, they are executed first, and if any errors are found the save is aborted and the form will show the errors.

    If client-side validation passes, a `DSRequest` will be sent, exactly as though `DataSource.addData()` or `DataSource.updateData()` had been called with `the form's values` as data. The `DSRequest.operationType` will be either "update" or "add", depending on the current `DynamicForm.saveOperationType`.

    On either a client-side or server-side validation failure, validation errors will be displayed in the form. Visible items within a DynamicForm will be redrawn to display errors. Validation failure occurring on hidden items, or DataSource fields with no associated form items may be handled via `DynamicForm.hiddenValidationErrors()` or `ValuesManager.hiddenValidationErrors()`.

    In the case of a validation error, the callback will not be called by default since the form has already handled the failed save by displaying the validation errors to the user. If you need to do something additional in this case, you can set `RPCRequest.willHandleError` via the `requestProperties` parameter to force your callback to be invoked. However, first consider:

    - if you are trying to customize display of validation errors, there are several `built-in modes` and `DynamicForm.showErrors()` may be a better place to put customizations.
    - for unrecoverable general errors (eg server is down), `central error handling` in invoked, so consider placing customizations there unless an unrecoverable error should be handled specially by this specific form.
    Note: If a form is to be cleared after saving data, we recommend clearing the form from the callback rather than calling saveData() and then synchronously clearing the form. This gives users a chance to view and respond to any validation errors returned by the server. It is also required to ensure forms containing an `upload field`, have a chance to upload the file to the server.
    Parameters:
      `callback` - callback to invoke on completion
      `requestProperties` - additional properties to set on the DSRequest that will be issued
    See Also:
      - `DataBound Component Methods`
      - Add Example

  - ### setValues

    public void setValues(Map values)
    Replaces the current values of the ValuesManager and all member components with the values passed in.

    Values should be provided as an Object containing the new values as properties, where each propertyName is the name of a `form item` in one of the member forms, and each property value is the value to apply to that form item via `FormItem.setValue()`.

    Values with no corresponding form item may also be passed, will be tracked by the valuesManager and returned by subsequent calls to `getValues()`.

    Any `FormItem` for which a value is not provided will revert to its `defaultValue`. To cause all FormItems to revert to default values, pass null.

    This method also calls `rememberValues()` so that a subsequent later call to `resetValues()` will revert to the passed values.

    Parameters:
      `values` - new set of values for this values manager.

  - ### showFieldErrors

    public void showFieldErrors()
    Method to explicitly show the latest set of validation errors present on some field within this ValuesManager.
    If the field in question is present as a visible item in a member form, the form item will be redrawn to display the error message(s). Otherwise `ValuesManager.hiddenValidationErrors()` will be fired to allow custom handling of hidden errors.
    See Also:
      - `Errors overview and related methods`

  - ### submit

    public void submit()
    `submit()` is automatically called when a `SubmitItem` in a member form is clicked, or if `saveOnEnter` is set for some member form, when the "Enter" key is pressed in a text input. Submit can also be manually called.

    If `valuesManager.submitValues()` exists, it will be called, and no further action will be taken.

    Otherwise, `saveData()` will be called to handle saving via Smart GWT databinding.

    The parameters to `submit()` apply only if `submit()` will be calling `saveData()`. If you override `submit()`, you can safely ignore the parameters as Smart GWT framework code does not pass them.

    See Also:
      - `com.smartgwt.client.widgets.form.ValuesManager#submitValues`
      - `DataBound Component Methods`

  - ### submit

    public void submit(DSCallback callback)
    See Also:
      - `submit()`

  - ### submit

    public void submit(DSCallback callback, DSRequest requestProperties)
    `submit()` is automatically called when a `SubmitItem` in a member form is clicked, or if `saveOnEnter` is set for some member form, when the "Enter" key is pressed in a text input. Submit can also be manually called.

    If `valuesManager.submitValues()` exists, it will be called, and no further action will be taken.

    Otherwise, `saveData()` will be called to handle saving via Smart GWT databinding.

    The parameters to `submit()` apply only if `submit()` will be calling `saveData()`. If you override `submit()`, you can safely ignore the parameters as Smart GWT framework code does not pass them.

    Parameters:
      `callback` - callback to invoke on completion.
      `requestProperties` - additional properties to set on the DSRequest that will be issued
    See Also:
      - `com.smartgwt.client.widgets.form.ValuesManager#submitValues`
      - `DataBound Component Methods`

  - ### synchronizeMember

    public void synchronizeMember(Canvas member)
    Update the parameter ValuesManager member to reflect the current values held by the ValuesManager. Note, it is not normally necessary to manually synchronize members
    Parameters:
      `member` - Member component to synchronize
    See Also:
      - `synchronizeMembers()`
      - `synchronizeMembersOnDataPath(java.lang.String)`

  - ### synchronizeMembers

    public void synchronizeMembers()
    Update all of this ValuesManager's members to reflect the current values held by the ValuesManager. It is not normally necessary to manually synchronize members, but you will need to do so if you switch off `automatic synchronization`.
    See Also:
      - `synchronizeMember(com.smartgwt.client.widgets.Canvas)`
      - `synchronizeMembersOnDataPath(java.lang.String)`

  - ### synchronizeMembersOnDataPath

    public void synchronizeMembersOnDataPath(String dataPath)
    Update just those of this ValuesManager's members that have the parameter `dataPath`, to reflect the current values held by the ValuesManager. Note, it is not normally necessary to manually synchronize members
    Parameters:
      `dataPath` - dataPath to synchronize
    See Also:
      - `synchronizeMember(com.smartgwt.client.widgets.Canvas)`
      - `synchronizeMembers()`

  - ### validate

    public Boolean validate()
    Validate the current set of values for this values manager against validators defined in the member forms. For databound valuesManagers, also perform validation against any validators defined on datasource fields.

    Note that if validation errors occur for a value that is not shown in any member forms, those errors will cause a warning and `ValuesManager.hiddenValidationErrors()` will be called. This can occur if:
    - A datasource field has no corresponding item in any member form
    - The item in question is hidden
    - The member form containing the item is hidden.

    If this form has any fields which require server-side validation (see `Validator.serverCondition`) this will also be initialized. Such validation will occur asynchronously. Developers can use `isPendingAsyncValidation()` and `ValuesManager.asyncValidationReply()` to detect and respond to asynchronous validation.

    Note that for silent validation, `valuesAreValid()` (client-side) and `checkForValidationErrors()` (client and server-side) can be used instead.

    Returns:
      true if all validation passed
    See Also:
      - `DynamicForm.validate()`
      - Splitting Example

  - ### valuesAreValid

    public boolean valuesAreValid()
    Method to determine whether the current set of values for this values manager would pass validation by the validators defined in the member forms. This method operates client-side, without contacting the server, running validators on the forms' values and returning a value indicating whether validation was successful.

    Note that, like `validate()`, this method will perform value validation even if:

    - A datasource field has no corresponding item in any member form
    - The item in question is hidden
    - The member form containing the item is hidden

    Unlike `validate()` this method will not store the errors on the forms or display them to the user.

    Returns:
      Boolean value indicating validation success, or if `returnErrors` was specified, a map of field names to the associated errors, for those fields that failed validation, or null if validation succeeded.
    See Also:
      - `Validation overview and related methods`

  - ### valuesHaveChanged

    public Boolean valuesHaveChanged()
    Compares the current set of values with the values stored by the call to the `DynamicForm.rememberValues()` method. `rememberValues()` runs when the form is initialized and on every call to `DynamicForm.setValues()`. Returns true if the values have changed, and false otherwise.
    Returns:
      true if current values do not match remembered values
    See Also:
      - `getChangedValues()`
      - `getOldValues()`

  - ### getById

    public static ValuesManager getById(String ID)
    Retrieve a ValuesManager by it's global `ID`.
    Parameters:
      `ID` - global ID of the ValuesManager
    Returns:
      the ValuesManager, or null if not found

  - ### onInit

    protected void onInit()
    Overrides:
      `onInit` in class `BaseClass`

  - ### onInit_ValuesManager

    protected void onInit_ValuesManager()

  - ### showErrors

    public void showErrors()
    If this form has any outstanding validation errors, show them now.
    &#010 This method is called when the set of errors are changed by `DynamicForm.setErrors(java.util.Map, boolean)` or&#010 `DynamicForm.validate()`.
    &#010 Default implementation will redraw the form to display error messages and call&#010 `com.smartgwt.client.widgets.form.DynamicForm#handleHiddenValidationErrors` to&#010 display errors with no visible field.

    Note: This is an override point.&#010 This method may be overridden to perform custom display of validation errors.

  - ### setDataSource

    public void setDataSource(DataSource dataSource)
    The DataSource that this component should bind to for default fields and for performing&#010 DataSource requests

    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

  - ### setValue

    public void setValue(String fieldName, String value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, double value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, boolean value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, Date value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, JavaScriptObject value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, Map value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, Record value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, DataClass value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, Record[] value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### setValue

    public void setValue(String fieldName, DataClass[] value)
    Set the value for some field.
    Parameters:
      `fieldName` - Name of the field being updated
      `value` - New value.

  - ### getValueAsString

    public String getValueAsString(String fieldName)
    Return the value as String
    Parameters:
      `fieldName` - the field name
    Returns:
      the value

  - ### getValue

    public Object getValue(String fieldName)
    Return the value of the field.
    Parameters:
      `fieldName` - the field name
    Returns:
      the value

  - ### editSelectedData

    public void editSelectedData(ListGrid selectionComponent)
    Edit the record selected in the specified selection component (typically a `ListGrid`).

    Updates the values of this editor to match the selected record's values.

    If this form has a dataSource, then saving via `saveData()` will use the "update" operation type.

    Parameters:
      `selectionComponent` - the ListGrid or ID of a `ListGrid` whose currently selected record(s) is/are to be edited

  - ### getMembers

    public DynamicForm[] getMembers()
    Returns an array of members in this ValuesManager. Note that this is a convenience method: it returns an array of DynamicForm, and so can only be validly used if all the ValuesManager's members are DynamicForms (a ValuesManager's members are traditionally DynamicForms, but they can be any kind of Canvas). See `getMemberCanvases()`
    Returns:
      the members

  - ### getMemberCanvases

    public Canvas[] getMemberCanvases()
    Returns the members of this ValuesManager as an array of Canvas objects. See also `getMembers()`
    Returns:
      the members

  - ### removeMember

    public void removeMember(String formID)
    Remove a member form from this valuesManager, so its values are no longer managed by this instance. This does not clear the values associated with the form from the valuesManager - they will still be available via valuesManager.getValues(), but will not be updated as the form is manipulated.
    Parameters:
      `formID` - ID of the form to remove from this valuesManager

  - ### removeMember

    public void removeMember(Canvas member)

  - ### addMember

    public void addMember(String member)
    Add a new member to this valuesManager. Any `Canvas` can be a member of a valuesManager, even components like `Layout` or `TabSet` that do not actually have any values to manage. When "valueless" components like these bind to a ValuesManager, it is in order to provide their own child components with a shared valuesManager so that complex data can be displayed and edited - see `DataPath` for more details.

    For components like `DynamicForm` and `ListGrid`, which do have a set of values to manage, the component's values will subsequently be available through this valuesManager.

    Note on pre-existent values when the member component is a `DynamicForm`:
    If the valuesManager has a value specified for some field, for which the member form has an item, this value will be applied to the member form. This is true whether the item has a value or not.
    However if the member form has a value for some field, and the ValuesManager does not have a specified value for the same field, we allow the valuesManager to pick up the value from the member form.

    Parameters:
      `member` - component (or ID of component) to add to this valuesManager as a member.
    See Also:
      - `com.smartgwt.client.widgets.form.ValuesManager#addMembers`

  - ### addMember

    public void addMember(Canvas member)

  - ### rememberValues

    public JavaScriptObject rememberValues()
    Make a snapshot of the current set of values, so we can reset to them later. Creates a new object, then adds all non-method properties of values to the new object. Use resetValues() to revert to these values. Note that this method is automatically called when the values for this form are set programmatically via a call to DynamicForm.setValues().
    Returns:
      copy of current form values

  - ### setErrors

    public void setErrors(Map errors, boolean showErrors)
    Setter for validation errors on this form. Errors passed in should be a Map in the format {fieldName1:errors, fieldName2:errors}

    Where the errors value may be either a string (single error message) or an array of strings (if multiple errors should be applied to the field in question).
    Parameters:
      `errors` - list of errors as a map with the field names as keys
      `showErrors` - If true redraw form to display errors now. Otherwise errors can be displayed by calling `showErrors()` Note: When the errors are shown, handleHiddenValidationErrors() will be fired for errors on hidden fields, or with no associated formItem.

  - ### setFieldErrors

    public void setFieldErrors(String fieldName, String error, boolean showErrors)
    Set field validation error for some field. The showErrors parameter allows the errors to be displayed immediately. Alternatively, an explicit call to `DynamicForm.showFieldErrors(java.lang.String)` will display the errors for this field.
    Parameters:
      `fieldName` - field to apply the new errors to
      `error` - error to apply to the field in question
      `showErrors` - If true this method will fall through to DynamicForm.showFieldErrors() to update the display

  - ### setFieldErrors

    public void setFieldErrors(String fieldName, String[] errors, boolean showErrors)
    Set field validation errors for some field. The showErrors parameter allows the errors to be displayed immediately. Alternatively, an explicit call to `DynamicForm.showFieldErrors(java.lang.String)` will display the errors for this field.
    Parameters:
      `fieldName` - field to apply the new errors to
      `errors` - errors to apply to the field in question
      `showErrors` - If true this method will fall through to DynamicForm.showFieldErrors() to update the display

  - ### getFieldErrors

    public String[] getFieldErrors(String fieldName)
    Returns any validation errors for some field in this valuesManager. If no errors are present, will return null.
    Parameters:
      `fieldName` - the field name
    Returns:
      error messages for the field.

  - ### getItem

    public FormItem getItem(String itemID)
    Retrieve a `FormItem` from this ValuesManager.

    Takes a field `'name'` or `DataType`, and searches through the members of this valuesManager for an editor for that field. If found the appropriate formItem will be returned. Note that if a dataPath is passed in, it should be the full data path for the item, including any canvas level `'dataPath'` specified on the member form containing this form item.
    Note: Unlike the `DynamicForm` class, this method will not return an item by index

    Parameters:
      `itemID` - item fieldName or dataPath identifier
    Returns:
      form item for editing/displaying the appropriate field, or null if no formItem can be found for the field.

  - ### addSubmitValuesHandler

    public HandlerRegistration addSubmitValuesHandler(SubmitValuesHandler handler)
    Add a submitValues handler.

    Triggered when a `submit()` is called on this valuesManager (or any form included in this valuesManager).

    Parameters:
      `handler` - the submitValues handler
    Returns:
      `HandlerRegistration` used to remove this handler

  - ### getValuesAsCriteria

    public Criteria getValuesAsCriteria()
    Retrieves the combined {@link com.smartgwt.client.widgets.form.DynamicForm#getValuesAsCriteria(),criteria values} for all member forms.

    As with the DynamicForm getValuesAsCriteria, this method may return AdvancedCriteria or simple Criteria depending on whether the {@link com.smartgwt.client.widgets.form.ValuesManager#setOperator,operator} is set to `"or"` rather than `"and"`, and whether any member forms return AdvancedCriteria.

    Note that developers can also use `DataSource.combineCriteria(com.smartgwt.client.data.Criteria, com.smartgwt.client.data.Criteria)` to combine sub-criteria from various sources, including member forms of a ValuesManager, into a combined criteria object.

    Returns:
      the criteria

  - ### getValuesAsRecord

    public Record getValuesAsRecord()
    Returns the current set of values for the values manager instance.
    Returns:
      a Record object containing the values for this manager