Package com.smartgwt.client.data

# Class SimpleType

java.lang.Object
com.smartgwt.client.core.BaseClass
com.smartgwt.client.data.SimpleType

All Implemented Interfaces:
  `HasHandlers`

public class SimpleType extends BaseClass
An atomic type such as a string or number, that is generally stored, displayed and manipulated as a single value.

SimpleTypes can be `created` at any time, and subsequently referred to as a `field type` in `DataSources` and `DataBoundComponents`. This allows you to define `validation`, `formatting` and `editing` behaviors for a type to be reused across all `DataBoundComponents`.

The SimpleType class also allows data to be stored in some opaque format but treated as simple atomic values as far as Smart GWT components are concerned by implementing `getAtomicValue()` and `updateAtomicValue()` methods. For example, if some record has a field value set to a javascript object with the following properties:

      { stringValue:"A String", length: 9 }

this value could be treated as a simple string by defining a SimpleType with `inheritsFrom` set to `"text"` and a custom `getAtomicValue()` method that simply extracted the "stringValue" attribute from the data object. DataBoundComponents would then display the string value, and use it for sorting and other standard databinding features.

Note that the term "simpleType" is used in the same sense as in XML Schema, and `XMLTools.loadXMLSchema()` will create new SimpleType definitions.

When using the Smart GWT Server, SimpleTypes can be defined server-side, and should be defined server-side if validators are going to be declared so that the server will enforce validation. To define server-side SimpleTypes using Component XML you should create file {typeName}.type.xml in the following format:

        <SimpleType name="{typeName}" inheritsFrom="{otherSimpleType}"
                       editorType="{FormItemClassName}">
          <validators>
            <!-- validator definition just like DataSourceField -->
          </validators>
        </SimpleType>

.. and place this file alongside your DataSource files (.ds.xml) files - in any of folders listed in `project.datasources` property in `server.properties`.

SimpleTypes can be loaded via DataSourceLoader or `loadDS JSP tags` and should be loaded before the definitions of any DataSources that use them (so generally put all SimpleType definitions first).

Define validators in the server-side type definition, for example:

        <SimpleType name="countryCodeType" inheritsFrom="text">
          <validators>
            <validator type="lengthRange" min="2" max="2"
              errorMessage="Length of country code should be equal to 2." />
            <validator type="regexp" expression="[A-Z][A-Z]"
              errorMessage="CountryCode should have only uppercase letters." />
          </validators>
        </SimpleType>

For client-side formatters, add these to the type definition after loading it from the server, for example:

          SimpleType.getType("independenceDateType").setShortDisplayFormatter(new SimpleTypeFormatter() {
            public String format(Object value, DataClass field, DataBoundComponent component, Record record) {
              if (value == null) return null;
              return "<i>" + (((java.util.Date) value).getYear() + 1900) + "</i>";
            }
          });

Note that formatters must be added to the SimpleType definition before any DataBoundComponent binds to a DataSource that uses the SimpleType.

An example is here.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `SimpleType.SimpleTypeValueComparator`
  `static class`
  `SimpleType.SimpleTypeValueExtractor`
  `static class`
  `SimpleType.SimpleTypeValueUpdater`

- ## Field Summary

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

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SimpleType()`
  Create a new simple type.
  `SimpleType(JavaScriptObject jsObj)`
  `SimpleType(String name, SimpleType inheritsFrom)`
  Create a new simple type.
  `SimpleType(String name, FieldType inheritsFrom)`
  Create a new simple type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Object`
  `applySummaryFunction(Record[] records, ListGridField field, SummaryFunctionType summaryFunction)`
  Apply a standard `SummaryFunctionType` to a set of records and a field.
  `static Object`
  `applySummaryFunction(Record[] records, ListGridField field, String functionName)`
  Apply a registered summary function to a set of records and a field.
  `JavaScriptObject`
  `create()`
  `Boolean`
  `getCanEdit()`
  Default value for `DataSourceField.canEdit` for fields of this type.
  `Boolean`
  `getCanFilter()`
  Default value for `DataSourceField.canFilter` for fields of this type.
  `String`
  `getDefaultGroupingMode()`
  In components that support grouping, the default mode from the available `groupingModes` to use when grouping values of this type.
  `OperatorId`
  `getDefaultOperator()`
  The default `search-operator` for this data-type.
  `String`
  `getExportFormat()`
  `FormatString` used during exports for numeric or date formatting.
  `DataSourceField`
  `getFieldProperties()`
  These are properties that are essentially copied onto any DataSourceField where the property is applied.
  `String`
  `getFormat()`
  `FormatString` for numeric or date formatting.
  `Map`
  `getGroupingModes()`
  A set of key-value pairs that represent the names and titles of the grouping modes available to values of this type, for use in components that support grouping.
  `String`
  `getGroupTitle(Object value, Record record, Map field, String fieldName, Canvas component)`
  Returns a string value appropriate for the title of the group containing the passed value.
  `Object`
  `getGroupValue(Object value, Record record, Map field, String fieldName, Canvas component)`
  Returns a group value appropriate for the passed record, field and value, in the passed component.
  `String`
  `getInheritsFrom()`
  Name of another SimpleType from which this type should inherit.
  `JavaScriptObject`
  `getJsObj()`
  `String`
  `getName()`
  Name of the type, used to refer to the type from `field.type`.
  `static SimpleType`
  `getOrCreateRef(JavaScriptObject jsObj)`
  `ReadOnlyDisplayAppearance`
  `getReadOnlyDisplay()`
  Default `readOnlyDisplay` for fields of this type.
  `static Boolean`
  `getSkipConvertOpaqueValues()`
  Tells the atomic values subsystem whether to convert the incoming opaque value to a Java object when calling user getAtomicValue() and updateAtomicValue() methods.
  `static SimpleType`
  `getType(String typeName)`
  Retrieve a simpleType definition by type name
  `boolean`
  `isCreated()`
  `void`
  `register()`
  Explicitly register this SimpleType with the system so that it can be used / referenced by remote DataSources.
  `static void`
  `registerSummaryFunction(String functionName, SummaryFunction summaryFunction)`
  Registers a new SummaryFunction by name.
  `SimpleType`
  `setCanEdit(Boolean canEdit)`
  Default value for `DataSourceField.canEdit` for fields of this type.
  `SimpleType`
  `setCanFilter(Boolean canFilter)`
  Default value for `DataSourceField.canFilter` for fields of this type.
  `SimpleType`
  `setDefaultGroupingMode(String defaultGroupingMode)`
  In components that support grouping, the default mode from the available `groupingModes` to use when grouping values of this type.
  `SimpleType`
  `setDefaultOperator(OperatorId defaultOperator)`
  The default `search-operator` for this data-type.
  `static void`
  `setDefaultSummaryFunction(String typeName, SummaryFunctionType summaryFunction)`
  Set a default summary function for some field type.
  `static void`
  `setDefaultSummaryFunction(String typeName, String functionName)`
  Set a default summary function for some field type.
  `void`
  `setEditFormatter(SimpleTypeFormatter formatter)`
  Formatter for values of this type when displayed in a freeform text editor such as a `TextItem`
  `void`
  `setEditorProperties(FormItem editorProperties)`
  Default `FormItem` configuration for editing values of this type.
  `void`
  `setEditorType(FormItem editorType)`
  Deprecated.
  Renamed to `setEditorProperties(FormItem)`.
  `void`
  `setEditorType(Class<? extends FormItem> editorType)`
  Set the default `FormItem` class to be used whenever a value of this type is edited (whether in a grid, form, or other component).
  `void`
  `setEditorType(String editorType)`
  Set the default `FormItem` class to be used whenever a value of this type is edited (whether in a grid, form, or other component).
  `void`
  `setEditParser(SimpleTypeParser parser)`
  Specify a parser to convert some user-edited value to an underlying data value of this type.
  `SimpleType`
  `setExportFormat(String exportFormat)`
  `FormatString` used during exports for numeric or date formatting.
  `SimpleType`
  `setFieldProperties(DataSourceField fieldProperties)`
  These are properties that are essentially copied onto any DataSourceField where the property is applied.
  `void`
  `setFilterEditorProperties(FormItem filterEditorProperties)`
  Default `FormItem` configuration for editing values of this type in a `ListGrid` filter row or `SearchForm`.
  `void`
  `setFilterEditorType(Class<? extends FormItem> filterEditorType)`
  Set the default `FormItem` class to be used whenever a value of this type appears in a `ListGrid` filter row or `SearchForm`.
  `void`
  `setFilterEditorType(String filterEditorType)`
  Set the default `FormItem` class to be used whenever a value of this type appears in a `ListGrid` filter row or `SearchForm`.
  `SimpleType`
  `setFormat(String format)`
  `FormatString` for numeric or date formatting.
  `SimpleType`
  `setGroupingModes(Map groupingModes)`
  A set of key-value pairs that represent the names and titles of the grouping modes available to values of this type, for use in components that support grouping.
  `void`
  `setGroupTitleFunction(GroupTitleFunction titleFunction)`
  Sets customizer whose `getTitle()` method overrides the default behavior of `getGroupTitle()`.
  `void`
  `setGroupValueFunction(GroupValueFunction valueFunction)`
  Sets customizer whose `getValue()` method overrides the default behavior of `getGroupValue()`.
  `void`
  `setInheritsFrom(FieldType inheritsFrom)`
  Name of another SimpleType from which this type should inherit.
  `SimpleType`
  `setInheritsFrom(String inheritsFrom)`
  Name of another SimpleType from which this type should inherit.
  `void`
  `setJavaScriptObject(JavaScriptObject jsObj)`
  `SimpleType`
  `setName(String name)`
  Name of the type, used to refer to the type from `field.type`.
  `void`
  `setNormalDisplayFormatter(SimpleTypeFormatter formatter)`
  Normal formatter for values of this type used in a `StaticTextItem` or `DetailViewer`.
  `SimpleType`
  `setReadOnlyDisplay(ReadOnlyDisplayAppearance readOnlyDisplay)`
  Default `readOnlyDisplay` for fields of this type.
  `void`
  `setReadOnlyEditorProperties(FormItem editorProperties)`
  FormItem properties to be applied when editing values of this type in a read-only context.
  `void`
  `setReadOnlyEditorType(FormItem editorType)`
  Deprecated.
  Renamed to `setReadOnlyEditorProperties(FormItem)`.
  `void`
  `setReadOnlyEditorType(Class<? extends FormItem> editorType)`
  Set the default `FormItem` class to be used whenever a value of this type is edited in a read-only context (whether in a grid, form, or other component).
  `void`
  `setReadOnlyEditorType(String editorType)`
  Set the default `FormItem` class to be used whenever a value of this type is edited in a read-only context (whether in a grid, form, or other component).
  `void`
  `setShortDisplayFormatter(SimpleTypeFormatter formatter)`
  Formatter for values of this type when compact display is required, for example, in a `ListGrid` or `TreeGrid`.
  `void`
  `setSimpleTypeValueComparator(SimpleType.SimpleTypeValueComparator comparator)`
  Specify a custom comparator to use for this type.
  `void`
  `setSimpleTypeValueExtractor(SimpleType.SimpleTypeValueExtractor extractor)`
  Specify an extractor to extract an atomic value (such as a string or number) from some arbitrary live data value.
  `void`
  `setSimpleTypeValueUpdater(SimpleType.SimpleTypeValueUpdater updater)`
  Specify an updater to update a live data value with an edited atomic value (such as a string or number).
  `static void`
  `setSkipConvertOpaqueValues(Boolean convert)`
  Tells the atomic values subsystem whether to skip conversion of the incoming opaque value to a Java object when calling user getAtomicValue() and updateAtomicValue() methods.
  `SimpleType`
  `setValidators(Validator... validators)`
  Validators to apply to value of this type.
  `SimpleType`
  `setValidOperators(OperatorId... validOperators)`
  Set of `search-operators` valid for this `SimpleType`.
  `void`
  `setValueMap(String... valueMap)`
  List of legal values for this type, like `valueMap`.
  `void`
  `setValueMap(Map valueMap)`
  List of legal values for this type, like `valueMap`.

  ### 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, getOrCreateJsObj, getRef, getRuleScope, getScClassName, getTestInstance, hasAutoAssignedID, hasDynamicProperty, internalSetID, internalSetID, isConfigOnly, isFactoryCreated, onBind, onInit, 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, setProperty, setProperty, setProperty, setProperty, setRuleScope, setScClassName`

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

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

- ## Constructor Details

  - ### SimpleType

    public SimpleType(JavaScriptObject jsObj)

  - ### SimpleType

    public SimpleType()
    Create a new simple type.
    Parameters:
      `name` - the name of the simple type
      `inheritsFrom` - the type it inherits from

  - ### SimpleType

    public SimpleType(String name, FieldType inheritsFrom)
    Create a new simple type.
    Parameters:
      `name` - the name of the simple type
      `inheritsFrom` - the type it inherits from

  - ### SimpleType

    public SimpleType(String name, SimpleType inheritsFrom)
    Create a new simple type.
    Parameters:
      `name` - the name of the simple type
      `inheritsFrom` - the type it inherits from

- ## Method Details

  - ### getOrCreateRef

    public static SimpleType getOrCreateRef(JavaScriptObject jsObj)

  - ### setJavaScriptObject

    public void setJavaScriptObject(JavaScriptObject jsObj)
    Overrides:
      `setJavaScriptObject` in class `BaseClass`

  - ### create

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

  - ### setCanEdit

    public SimpleType setCanEdit(Boolean canEdit) throws IllegalStateException
    Default value for `DataSourceField.canEdit` for fields of this type.

    This impacts client-side behavior only and is a way to simply disallow editing of this field type by default within `editors`.

    This property is set to false for the "sequence" SimpleType by default.

    Parameters:
      `canEdit` - New canEdit value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getCanEdit

    public Boolean getCanEdit()
    Default value for `DataSourceField.canEdit` for fields of this type.

    This impacts client-side behavior only and is a way to simply disallow editing of this field type by default within `editors`.

    This property is set to false for the "sequence" SimpleType by default.

    Returns:
      Current canEdit value. Default value is null

  - ### setCanFilter

    public SimpleType setCanFilter(Boolean canFilter) throws IllegalStateException
    Default value for `DataSourceField.canFilter` for fields of this type.

    This impacts client-side behavior only and may be used to explicitly enable editing in filter interfaces, even if `editing is disabled`.

    This property is set to true for the "sequence" SimpleType by default.

    Parameters:
      `canFilter` - New canFilter value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getCanFilter

    public Boolean getCanFilter()
    Default value for `DataSourceField.canFilter` for fields of this type.

    This impacts client-side behavior only and may be used to explicitly enable editing in filter interfaces, even if `editing is disabled`.

    This property is set to true for the "sequence" SimpleType by default.

    Returns:
      Current canFilter value. Default value is null

  - ### setDefaultGroupingMode

    public SimpleType setDefaultGroupingMode(String defaultGroupingMode)
    In components that support grouping, the default mode from the available `groupingModes` to use when grouping values of this type.
    Parameters:
      `defaultGroupingMode` - New defaultGroupingMode value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls

  - ### getDefaultGroupingMode

    public String getDefaultGroupingMode()
    In components that support grouping, the default mode from the available `groupingModes` to use when grouping values of this type.
    Returns:
      Current defaultGroupingMode value. Default value is null

  - ### setDefaultOperator

    public SimpleType setDefaultOperator(OperatorId defaultOperator) throws IllegalStateException
    The default `search-operator` for this data-type.
    Parameters:
      `defaultOperator` - New defaultOperator value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `Advanced Filtering`

  - ### getDefaultOperator

    public OperatorId getDefaultOperator()
    The default `search-operator` for this data-type.
    Returns:
      Current defaultOperator value. Default value is null
    See Also:
      - `Advanced Filtering`

  - ### setExportFormat

    public SimpleType setExportFormat(String exportFormat) throws IllegalStateException
    `FormatString` used during exports for numeric or date formatting. See `DataSourceField.exportFormat`.
    Parameters:
      `exportFormat` - New exportFormat value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `FormatString`
      - `Exports & Formatting`

  - ### getExportFormat

    public String getExportFormat()
    `FormatString` used during exports for numeric or date formatting. See `DataSourceField.exportFormat`.
    Returns:
      Current exportFormat value. Default value is null
    See Also:
      - `FormatString`
      - `Exports & Formatting`

  - ### setFieldProperties

    public SimpleType setFieldProperties(DataSourceField fieldProperties) throws IllegalStateException
    These are properties that are essentially copied onto any DataSourceField where the property is applied. The supported properties are only client-side properties.
    Parameters:
      `fieldProperties` - New fieldProperties value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getFieldProperties

    public DataSourceField getFieldProperties()
    These are properties that are essentially copied onto any DataSourceField where the property is applied. The supported properties are only client-side properties.
    Returns:
      Current fieldProperties value. Default value is null

  - ### setFormat

    public SimpleType setFormat(String format) throws IllegalStateException
    `FormatString` for numeric or date formatting. See `DataSourceField.format`.
    Parameters:
      `format` - New format value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `FormatString`
      - `Exports & Formatting`

  - ### getFormat

    public String getFormat()
    `FormatString` for numeric or date formatting. See `DataSourceField.format`.
    Returns:
      Current format value. Default value is null
    See Also:
      - `FormatString`
      - `Exports & Formatting`

  - ### setGroupingModes

    public SimpleType setGroupingModes(Map groupingModes)
    A set of key-value pairs that represent the names and titles of the grouping modes available to values of this type, for use in components that support grouping.

    Some types provide a set of builtin groupingModes, as covered `here`.

    Use `setGroupValueFunction()` and `setGroupTitleFunction()` to implement custom grouping logic for each of the grouping modes you provide.

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

  - ### getGroupingModes

    public Map getGroupingModes()
    A set of key-value pairs that represent the names and titles of the grouping modes available to values of this type, for use in components that support grouping.

    Some types provide a set of builtin groupingModes, as covered `here`.

    Use `setGroupValueFunction()` and `setGroupTitleFunction()` to implement custom grouping logic for each of the grouping modes you provide.

    Returns:
      Returns the set of `grouping modes` available for values of this type in components that support grouping. Default value is null

  - ### setInheritsFrom

    public SimpleType setInheritsFrom(String inheritsFrom) throws IllegalStateException
    Name of another SimpleType from which this type should inherit.

    Validators, if any, will be combined. All other SimpleType properties default to the inherited type's value.

    Parameters:
      `inheritsFrom` - New inheritsFrom value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `Identifier`
      - DataType Reuse Example

  - ### getInheritsFrom

    public String getInheritsFrom()
    Name of another SimpleType from which this type should inherit.

    Validators, if any, will be combined. All other SimpleType properties default to the inherited type's value.

    Returns:
      Current inheritsFrom value. Default value is null
    See Also:
      - `Identifier`
      - DataType Reuse Example

  - ### setName

    public SimpleType setName(String name) throws IllegalStateException
    Name of the type, used to refer to the type from `field.type`.
    Parameters:
      `name` - New name value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `Identifier`

  - ### getName

    public String getName()
    Name of the type, used to refer to the type from `field.type`.
    Returns:
      Current name value. Default value is null
    See Also:
      - `Identifier`

  - ### setReadOnlyDisplay

    public SimpleType setReadOnlyDisplay(ReadOnlyDisplayAppearance readOnlyDisplay) throws IllegalStateException
    Default `readOnlyDisplay` for fields of this type.

    For more sophisticated management of read-only behavior, see `readOnlyEditorType`.

    Parameters:
      `readOnlyDisplay` - New readOnlyDisplay value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### getReadOnlyDisplay

    public ReadOnlyDisplayAppearance getReadOnlyDisplay()
    Default `readOnlyDisplay` for fields of this type.

    For more sophisticated management of read-only behavior, see `readOnlyEditorType`.

    Returns:
      Current readOnlyDisplay value. Default value is null

  - ### setValidators

    public SimpleType setValidators(Validator... validators) throws IllegalStateException
    Validators to apply to value of this type.
    Parameters:
      `validators` - New validators value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `Validation overview and related methods`

  - ### setValidOperators

    public SimpleType setValidOperators(OperatorId... validOperators) throws IllegalStateException
    Set of `search-operators` valid for this `SimpleType`.

    If not specified, the `inherited` type's operators will be used, finally defaulting to the default operators for the basic types (eg, integer).

    Parameters:
      `validOperators` - New validOperators value. Default value is null
    Returns:
      `SimpleType` instance, for chaining setter calls
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `Advanced Filtering`

  - ### getGroupTitle

    public String getGroupTitle(Object value, Record record, Map field, String fieldName, Canvas component)
    Returns a string value appropriate for the title of the group containing the passed value.
    Parameters:
      `value` - the record value to return a group title for
      `record` - the record containing the passed group value
      `field` - the field relating to the value to be processed
      `fieldName` - the name of the field relating to the value to be processed
      `component` - the component, usually a `ListGrid`, containing the passed record
    Returns:
      the group title for the passed parameters

  - ### getGroupValue

    public Object getGroupValue(Object value, Record record, Map field, String fieldName, Canvas component)
    Returns a group value appropriate for the passed record, field and value, in the passed component.
    Parameters:
      `value` - the record value to return a group value for
      `record` - the record containing the passed value
      `field` - the field relating to the value to be processed
      `fieldName` - the name of the field relating to the value to be processed
      `component` - the component, usually a `ListGrid`, containing the passed record
    Returns:
      the group value for the passed parameters

  - ### getType

    public static SimpleType getType(String typeName)
    Retrieve a simpleType definition by type name
    Parameters:
      `typeName` - the `name` of the simpleType to return
    Returns:
      simple type object

  - ### register

    public void register()
    Explicitly register this SimpleType with the system so that it can be used / referenced by remote DataSources.

  - ### setValueMap

    public void setValueMap(String... valueMap) throws IllegalStateException
    List of legal values for this type, like `valueMap`.
    Parameters:
      `valueMap` - valueMap Default value is null
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### setValueMap

    public void setValueMap(Map valueMap) throws IllegalStateException
    List of legal values for this type, like `valueMap`.
    Parameters:
      `valueMap` - valueMap Default value is null
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### setEditorProperties

    public void setEditorProperties(FormItem editorProperties) throws IllegalStateException
    Default `FormItem` configuration for editing values of this type.

    You can create a simple custom FormItem by adding default `icons` that launch custom value picking dialogs (an example is in the QuickStart Guide, Chapter 9, Extending Smart GWT).

    Note: The FormItem passed to `setEditorProperties()` is used as a "template" to create a FormItem.

    For an overview of the template rules, reflection requirements when trying to assign an edit Formitem by type, and an understanding of how the various `setEditorProperties()` calls on different classes relate to each other in determining what configuration ultimately gets applied to the edit FormItem, see `DataSourceField.setEditorProperties(FormItem)`.

    Parameters:
      `editorProperties` - FormItem with default properties to use when editing
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `setEditorType(String)`
      - `setEditorType(Class)`

  - ### setEditorType

    public void setEditorType(FormItem editorType) throws IllegalStateException
    Deprecated.
    Renamed to `setEditorProperties(FormItem)`. You can also consider using `setEditorType(Class)` or `setEditorType(String)` instead.
    Synonym for `setEditorProperties(FormItem)`.
    Parameters:
      `editorType` - FormItem with default properties to be applied when editing
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### setEditorType

    public void setEditorType(String editorType)
    Set the default `FormItem` class to be used whenever a value of this type is edited (whether in a grid, form, or other component).

    If unset, a FormItem will be automatically chosen.

    Note: The editorType must be registered for use with the `reflection mechanism`. By doing so, you avoid the limitations of `setEditorProperties(FormItem)`. If the editorType cannot be resolved via reflection, this method will still work if editorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `editorType` - the fully-qualified class name of a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the editorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setEditorType

    public void setEditorType(Class<? extends FormItem> editorType)
    Set the default `FormItem` class to be used whenever a value of this type is edited (whether in a grid, form, or other component).

    If unset, a FormItem will be automatically chosen.

    Note: The editorType must be registered for use with the `reflection mechanism`. By doing so, you avoid the limitations of `setEditorProperties(FormItem)`. If the editorType cannot be resolved via reflection, this method will still work if editorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `editorType` - a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the editorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setReadOnlyEditorProperties

    public void setReadOnlyEditorProperties(FormItem editorProperties) throws IllegalStateException
    FormItem properties to be applied when editing values of this type in a read-only context.

    Note: The FormItem passed to setReadOnlyEditorProperties() is used as a "template" to create a FormItem whenever a `DataBoundComponent` needs to show an interface for editing this field (and the field is marked read-only).

    For an overview of the template rules, reflection requirements when trying to assign an edit Formitem by type, and an understanding of how the various `setReadOnlyEditorProperties()` calls on different classes relate to each other in determining what configuration ultimately gets applied to the edit FormItem, see `DataSourceField.setEditorProperties(FormItem)`.

    Parameters:
      `editorProperties` - FormItem with properties to be applied when editing values of this type in a read-only context.
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `setReadOnlyEditorType(String)`
      - `setReadOnlyEditorType(Class)`

  - ### setReadOnlyEditorType

    public void setReadOnlyEditorType(FormItem editorType)
    Deprecated.
    Renamed to `setReadOnlyEditorProperties(FormItem)`. You can also consider using `setReadOnlyEditorType(Class)` or `setReadOnlyEditorType(String)` instead.
    Synonym for `setReadOnlyEditorProperties(FormItem)`.
    Parameters:
      `editorType` - FormItem with default properties to be applied when editing

  - ### setReadOnlyEditorType

    public void setReadOnlyEditorType(String editorType)
    Set the default `FormItem` class to be used whenever a value of this type is edited in a read-only context (whether in a grid, form, or other component).

    If unset, a FormItem will be automatically chosen.

    By using the `reflection mechanism`, this method avoids the limitations described in `setReadOnlyEditorProperties(FormItem)`. If the editorType cannot be resolved via reflection, this method will still work if editorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `editorType` - the fully-qualified class name of a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the editorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setReadOnlyEditorType

    public void setReadOnlyEditorType(Class<? extends FormItem> editorType)
    Set the default `FormItem` class to be used whenever a value of this type is edited in a read-only context (whether in a grid, form, or other component).

    If unset, a FormItem will be automatically chosen.

    By using the `reflection mechanism`, this method avoids the limitations described in `setReadOnlyEditorProperties(FormItem)`. If the editorType cannot be resolved via reflection, this method will still work if editorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `editorType` - a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the editorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setFilterEditorProperties

    public void setFilterEditorProperties(FormItem filterEditorProperties) throws IllegalStateException
    Default `FormItem` configuration for editing values of this type in a `ListGrid` filter row or `SearchForm`.

    You can create a simple custom FormItem by adding default `icons` that launch custom value picking dialogs (an example is in the QuickStart Guide, Chapter 9, Extending Smart GWT).

    Note: The FormItem passed to setFilterEditorProperties() is used as a "template" to create a FormItem whenever filter rows or search forms need to show an interface for editing a field of this type.

    For an overview of the template rules, reflection requirements when trying to assign an edit Formitem by type, and an understanding of how the various `setFilterEditorProperties()` calls on different classes relate to each other in determining what configuration ultimately gets applied to the edit FormItem, see `DataSourceField.setEditorProperties(FormItem)`.

    Parameters:
      `filterEditorProperties` - FormItem with default properties to use when editing
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created
    See Also:
      - `setFilterEditorType(String)`
      - `setFilterEditorType(Class)`

  - ### setFilterEditorType

    public void setFilterEditorType(String filterEditorType)
    Set the default `FormItem` class to be used whenever a value of this type appears in a `ListGrid` filter row or `SearchForm`.

    If unset, a FormItem will be automatically chosen.

    Note: The filterEditorType must be registered for use with the `reflection mechanism`. By doing so, you avoid the limitations of `setFilterEditorProperties(FormItem)`. If the filterEditorType cannot be resolved via reflection, this method will still work if filterEditorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `filterEditorType` - the fully-qualified class name of a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the filterEditorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setFilterEditorType

    public void setFilterEditorType(Class<? extends FormItem> filterEditorType)
    Set the default `FormItem` class to be used whenever a value of this type appears in a `ListGrid` filter row or `SearchForm`.

    If unset, a FormItem will be automatically chosen.

    Note: The filterEditorType must be registered for use with the `reflection mechanism`. By doing so, you avoid the limitations of `setFilterEditorProperties(FormItem)`. If the filterEditorType cannot be resolved via reflection, this method will still work if filterEditorType refers to a built-in SmartGWT framework class, such as `SetFilterItem`.

    Parameters:
      `filterEditorType` - a `FormItem` subclass, which must have been registered with the `reflection mechanism` (except for built-in framework classes).
    Throws:
      `IllegalArgumentException` - if the filterEditorType class has not been registered for use with the `reflection mechanism`, and it is not a built-in framework class, or if it does not inherit from `FormItem`.

  - ### setInheritsFrom

    public void setInheritsFrom(FieldType inheritsFrom) throws IllegalStateException
    Name of another SimpleType from which this type should inherit.

    Validators, if any, will be combined. All other SimpleType properties default to the inherited type's value.

    Parameters:
      `inheritsFrom` - inheritsFrom Default value is null
    Throws:
      `IllegalStateException` - this property cannot be changed after the underlying component has been created

  - ### setNormalDisplayFormatter

    public void setNormalDisplayFormatter(SimpleTypeFormatter formatter)
    Normal formatter for values of this type used in a `StaticTextItem` or `DetailViewer`.

    A formatter can make itself configurable on a per-component or per-field basis by checking properties on the component or field. For example, a formatter for account IDs may want to omit a prefix in views where it is redundant, and could check a flag detailViewer.omitAccountIdPrefix for this purpose.

    Parameters:
      `formatter` - the formatter

  - ### setShortDisplayFormatter

    public void setShortDisplayFormatter(SimpleTypeFormatter formatter)
    Formatter for values of this type when compact display is required, for example, in a `ListGrid` or `TreeGrid`.

    A formatter can make itself configurable on a per-component or per-field basis by checking properties on the component or field. For example, a formatter for account IDs may want to omit a prefix in views where it is redundant, and could check a flag listGridField.omitAccountIdPrefix for this purpose.

    Parameters:
      `formatter` - the formatter

  - ### setEditFormatter

    public void setEditFormatter(SimpleTypeFormatter formatter)
    Formatter for values of this type when displayed in a freeform text editor such as a `TextItem`

    See also `#parseInput` for parsing an edited text value back to a data value.

    Parameters:
      `formatter` - the formatter

  - ### setEditParser

    public void setEditParser(SimpleTypeParser parser)
    Specify a parser to convert some user-edited value to an underlying data value of this type. This parser is called when storing out values edited in a freeform editor such as a `TextItem`. Typically this will convert from the format produced by `#editFormatter` back to a data value.
    Parameters:
      `parser` - the parser

  - ### setSkipConvertOpaqueValues

    public static void setSkipConvertOpaqueValues(Boolean convert)
    Tells the atomic values subsystem whether to skip conversion of the incoming opaque value to a Java object when calling user getAtomicValue() and updateAtomicValue() methods. By default, we do convert the opaque value, and your methods will be passed a Java object - typically a Map of native Java types. Passing true to this method switches off conversion, and your methods will be passed a JavaScriptObject
    Parameters:
      `convert` - Whether the atomic values subsystem should skip conversion of opaque values to native Java types

  - ### getSkipConvertOpaqueValues

    public static Boolean getSkipConvertOpaqueValues()
    Tells the atomic values subsystem whether to convert the incoming opaque value to a Java object when calling user getAtomicValue() and updateAtomicValue() methods. By default, we do convert the opaque value, and your methods will be passed a Java object - typically a Map of native Java types. Passing false to this mehtod switches off conversion, and your methods will be passed a JavaScriptObject
    Returns:
      Boolean indicating whether the atomic values subsystem will convert opaque values to native Java types

  - ### setSimpleTypeValueExtractor

    public void setSimpleTypeValueExtractor(SimpleType.SimpleTypeValueExtractor extractor)
    Specify an extractor to extract an atomic value (such as a string or number) from some arbitrary live data value. If defined this method will be called for every field value of the specified type in order to convert from the raw data value to an atomic type to be used for standard DataBinding features such as sorting and editing.
    Parameters:
      `extractor` - the extractor

  - ### setSimpleTypeValueUpdater

    public void setSimpleTypeValueUpdater(SimpleType.SimpleTypeValueUpdater updater)
    Specify an updater to update a live data value with an edited atomic value (such as a string or number). If defined this updater's updateAtomicValue method will be called when the user edits data in a field of this type, allowing the developer to convert from the atomic type to a raw data value for storage.
    Parameters:
      `extractor` - the updater

  - ### setSimpleTypeValueComparator

    public void setSimpleTypeValueComparator(SimpleType.SimpleTypeValueComparator comparator)
    Specify a custom comparator to use for this type.

    If defined, this comparator's compareValues() method will be called when the framework needs to compares values of this type for equality.

    Parameters:
      `comparator` - the comparator

  - ### isCreated

    public boolean isCreated()
    Overrides:
      `isCreated` in class `BaseClass`

  - ### getJsObj

    public JavaScriptObject getJsObj()
    Overrides:
      `getJsObj` in class `BaseClass`

  - ### registerSummaryFunction

    public static void registerSummaryFunction(String functionName, SummaryFunction summaryFunction)
    Registers a new SummaryFunction by name. After calling this method, developers may specify the name passed in as a standard summaryFunction (for example in ListGridField.setSummaryFunction()). Note that if the specified name conflicts with one of the built in SummaryFunctionType values, a RuntimeException will be thrown.
    Parameters:
      `functionName` - name for the SummaryFunction
      `summaryFunction` - new SummaryFunction implementation

  - ### applySummaryFunction

    public static Object applySummaryFunction(Record[] records, ListGridField field, SummaryFunctionType summaryFunction)
    Apply a standard `SummaryFunctionType` to a set of records and a field.
    Parameters:
      `records` - records to obtain the summary value for
      `field` - field on which the summary function is being run
      `summaryFunction` - standard summary function identifier
    Returns:
      result of the summary function.

  - ### applySummaryFunction

    public static Object applySummaryFunction(Record[] records, ListGridField field, String functionName)
    Apply a registered summary function to a set of records and a field.
    Parameters:
      `records` - records to obtain the summary value for
      `field` - field on which the summary function is being run
      `functionName` - name under which the summary function is registered. See `registerSummaryFunction(String, SummaryFunction)`
    Returns:
      result of the summary function.

  - ### setDefaultSummaryFunction

    public static void setDefaultSummaryFunction(String typeName, SummaryFunctionType summaryFunction)
    Set a default summary function for some field type.
    Parameters:
      `typeName` - name of the field type. If this is the name of a custom SimpleType, the developer may need to ensure the type is `registered`.
      `summaryFunction` - standard summary function type for this data type

  - ### setDefaultSummaryFunction

    public static void setDefaultSummaryFunction(String typeName, String functionName)
    Set a default summary function for some field type.
    Parameters:
      `typeName` - name of the field type. If this is the name of a custom SimpleType, the developer may need to ensure the type is `registered`.
      `summaryFunction` - name under which the summary function is registered. See `registerSummaryFunction(String, SummaryFunction)`

  - ### setGroupTitleFunction

    public void setGroupTitleFunction(GroupTitleFunction titleFunction)
    Sets customizer whose `getTitle()` method overrides the default behavior of `getGroupTitle()`. Pass null to clear the override.

  - ### setGroupValueFunction

    public void setGroupValueFunction(GroupValueFunction valueFunction)
    Sets customizer whose `getValue()` method overrides the default behavior of `getGroupValue()`. Pass null to clear the override.