/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.vaadin.smartgwt.server.data; import java.util.Map; import org.vaadin.smartgwt.client.data.fields.VDataSourceField; import org.vaadin.smartgwt.server.core.DataClass; import org.vaadin.smartgwt.server.types.DateDisplayFormat; import org.vaadin.smartgwt.server.types.FieldType; import org.vaadin.smartgwt.server.types.OperatorId; import org.vaadin.smartgwt.server.types.SummaryFunctionType; import org.vaadin.smartgwt.server.util.EnumUtil; import com.vaadin.ui.ClientWidget; // @formatter:off /** * Metadata about a DataSourceField, including its type and validators. */ @ClientWidget(value=VDataSourceField.class) public class DataSourceField extends DataClass { // public static DataSourceField getOrCreateRef(JavaScriptObject jsObj) { // if(jsObj == null) return null; // return new DataSourceField(jsObj); // } public DataSourceField(){ } // public DataSourceField(JavaScriptObject jsObj){ // super(jsObj); // } public DataSourceField(String name, FieldType type) { setName(name); setType(type); } public DataSourceField(String name, FieldType type, String title) { setName(name); setType(type); setTitle(title); } public DataSourceField(String name, FieldType type, String title, int length) { setName(name); setType(type); setTitle(title); setLength(length); } public DataSourceField(String name, FieldType type, String title, int length, boolean required) { setName(name); setType(type); setTitle(title); setLength(length); setRequired(required); } // ********************* Properties / Attributes *********************** /** * Whether this field can ever be edited by the user. If set to <code>false</code>, no DataBound component will ever try * to offer an editing interface for this field. * * @param canEdit canEdit Default value is null * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setCanEdit(Boolean canEdit) { setAttribute("canEdit", canEdit); } /** * Whether this field can ever be edited by the user. If set to <code>false</code>, no DataBound component will ever try * to offer an editing interface for this field. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public Boolean getCanEdit() { return getAttributeAsBoolean("canEdit"); } /** * Dictates whether the data in this field be exported. Explicitly setting <i>canExport</i> to false overrides the * setting on any component-fields, such as {@link com.smartgwt.client.widgets.grid.ListGridField#getCanExport ListGrid * fields}. * * @param canExport canExport Default value is null */ public void setCanExport(Boolean canExport) { setAttribute("canExport", canExport); } /** * Dictates whether the data in this field be exported. Explicitly setting <i>canExport</i> to false overrides the * setting on any component-fields, such as {@link com.smartgwt.client.widgets.grid.ListGridField#getCanExport ListGrid * fields}. * * * @return Boolean */ public Boolean getCanExport() { return getAttributeAsBoolean("canExport"); } /** * Should the user be able to filter data by this field. Affects whether this field will show up in dataBoundComponents * with UI for filtering data. * * @param canFilter canFilter Default value is null */ public void setCanFilter(Boolean canFilter) { setAttribute("canFilter", canFilter); } /** * Should the user be able to filter data by this field. Affects whether this field will show up in dataBoundComponents * with UI for filtering data. * * * @return Boolean */ public Boolean getCanFilter() { return getAttributeAsBoolean("canFilter"); } /** * Whether values in this field can be updated and saved to the dataSource. <P> If set to <code>false</code>, this field * will default to being non-editable in standard editing components ({@link com.smartgwt.client.widgets.form.DynamicForm}, * editable {@link com.smartgwt.client.widgets.grid.ListGrid}), but will be editable when displayed for filtering purposes * only (in a {@link com.smartgwt.client.widgets.form.SearchForm} or {@link * com.smartgwt.client.widgets.grid.ListGrid#getShowFilterEditor ListGrid filter editor}. <P> Note: if {@link * com.smartgwt.client.data.DataSourceField#getCanEdit canEdit} is explicitly specified it will take precedence over this * behavior. * * @param canSave canSave Default value is null * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setCanSave(Boolean canSave) { setAttribute("canSave", canSave); } /** * Whether values in this field can be updated and saved to the dataSource. <P> If set to <code>false</code>, this field * will default to being non-editable in standard editing components ({@link com.smartgwt.client.widgets.form.DynamicForm}, * editable {@link com.smartgwt.client.widgets.grid.ListGrid}), but will be editable when displayed for filtering purposes * only (in a {@link com.smartgwt.client.widgets.form.SearchForm} or {@link * com.smartgwt.client.widgets.grid.ListGrid#getShowFilterEditor ListGrid filter editor}. <P> Note: if {@link * com.smartgwt.client.data.DataSourceField#getCanEdit canEdit} is explicitly specified it will take precedence over this * behavior. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public Boolean getCanSave() { return getAttributeAsBoolean("canSave"); } /** * When true, this field can only be used for sorting if the data is entirely client-side. * * @param canSortClientOnly canSortClientOnly Default value is false */ public void setCanSortClientOnly(Boolean canSortClientOnly) { setAttribute("canSortClientOnly", canSortClientOnly); } /** * When true, this field can only be used for sorting if the data is entirely client-side. * * * @return Boolean */ public Boolean getCanSortClientOnly() { return getAttributeAsBoolean("canSortClientOnly"); } /** * If true, this property indicates that this field will hold an explicit array of child nodes for the current node. This * has the same effect as specifying {@link com.smartgwt.client.data.DataSource#getChildrenField childrenField} to this * field's name. * * @param childrenProperty childrenProperty Default value is false * @see com.smartgwt.client.data.DataSource#setChildrenField * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods * */ public void setChildrenProperty(Boolean childrenProperty) { setAttribute("childrenProperty", childrenProperty); } /** * If true, this property indicates that this field will hold an explicit array of child nodes for the current node. This * has the same effect as specifying {@link com.smartgwt.client.data.DataSource#getChildrenField childrenField} to this * field's name. * * * @return Boolean * @see com.smartgwt.client.data.DataSource#getChildrenField * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods * */ public Boolean getChildrenProperty() { return getAttributeAsBoolean("childrenProperty"); } /** * For a field that is {@link com.smartgwt.client.data.DataSourceField#getMultiple multiple:"true"}, controls the name of * the XML tag used for each subelement during {@link com.smartgwt.client.data.DataSource#xmlSerialize * DataSource.xmlSerialize}. <P> If unset, the default tag name is "value" for a field of simple type, and for a field of * DataSource type, is the tagName or ID of the DataSource (as though <code>xmlSerialize()</code> were called on the child * DataSource). * * @param childTagName childTagName Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setChildTagName(String childTagName) { setAttribute("childTagName", childTagName); } /** * For a field that is {@link com.smartgwt.client.data.DataSourceField#getMultiple multiple:"true"}, controls the name of * the XML tag used for each subelement during {@link com.smartgwt.client.data.DataSource#xmlSerialize * DataSource.xmlSerialize}. <P> If unset, the default tag name is "value" for a field of simple type, and for a field of * DataSource type, is the tagName or ID of the DataSource (as though <code>xmlSerialize()</code> were called on the child * DataSource). * * * @return String * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public String getChildTagName() { return getAttributeAsString("childTagName"); } /** * Preferred display format to use for date type values within this field. If this property is set on a field displayed in * a databound component such as a {@link com.smartgwt.client.widgets.form.DynamicForm} or {@link * com.smartgwt.client.widgets.grid.ListGrid} it will be respected (See {@link * com.smartgwt.client.widgets.form.fields.FormItem#getDateFormatter dateFormatter} and {@link * com.smartgwt.client.widgets.grid.ListGridField#getDateForamtter dateForamtter}). <P> Note that this property is also * honored when exporting directly to Excel spreadsheets (ie, when using XLS or XLSX/OOXML form, <b>not</b> CSV); "date" * and "datetime" fields with this property set will deliver real dates and formatting information to Excel, rather than * formatted strings or unformatted dates. * <p><b>Note : </b> This is an advanced setting</p> * * @param dateFormatter dateFormatter Default value is null * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public void setDateFormatter(DateDisplayFormat dateFormatter) { setAttribute("dateFormatter", dateFormatter.getValue()); } /** * Preferred display format to use for date type values within this field. If this property is set on a field displayed in * a databound component such as a {@link com.smartgwt.client.widgets.form.DynamicForm} or {@link * com.smartgwt.client.widgets.grid.ListGrid} it will be respected (See {@link * com.smartgwt.client.widgets.form.fields.FormItem#getDateFormatter dateFormatter} and {@link * com.smartgwt.client.widgets.grid.ListGridField#getDateForamtter dateForamtter}). <P> Note that this property is also * honored when exporting directly to Excel spreadsheets (ie, when using XLS or XLSX/OOXML form, <b>not</b> CSV); "date" * and "datetime" fields with this property set will deliver real dates and formatting information to Excel, rather than * formatted strings or unformatted dates. * * * @return DateDisplayFormat * @see com.smartgwt.client.docs.Appearance Appearance overview and related methods */ public DateDisplayFormat getDateFormatter() { return EnumUtil.getEnum(DateDisplayFormat.values(), getAttribute("dateFormatter")); } /** * Whether this field should be considered a "detail" field by a {@link com.smartgwt.client.widgets.DataBoundComponent}. * <P> Detail fields won't be shown by default in a DataBoundComponent where {@link * com.smartgwt.client.widgets.DataBoundComponent#getShowDetailFields showDetailFields} is false. This allows for some * DataBound components, like a {@link com.smartgwt.client.widgets.grid.ListGrid}, to show a summary view of records which * displays only the most commonly viewed fields by default, while other DataBoundComponents, like a {@link * com.smartgwt.client.widgets.viewer.DetailViewer}, show all fields by default. <P> In addition, the {@link * com.smartgwt.client.widgets.form.fields.FormItem#showIf formItem.showIf} property is supported in multiple components * for conditional visibility - see for example {@link com.smartgwt.client.widgets.grid.ListGridField#showIf * ListGridField.showIf} and {@link com.smartgwt.client.widgets.form.fields.FormItem#showIf FormItem.showIf}). * * @param detail detail Default value is false * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setDetail(Boolean detail) { setAttribute("detail", detail); } /** * Whether this field should be considered a "detail" field by a {@link com.smartgwt.client.widgets.DataBoundComponent}. * <P> Detail fields won't be shown by default in a DataBoundComponent where {@link * com.smartgwt.client.widgets.DataBoundComponent#getShowDetailFields showDetailFields} is false. This allows for some * DataBound components, like a {@link com.smartgwt.client.widgets.grid.ListGrid}, to show a summary view of records which * displays only the most commonly viewed fields by default, while other DataBoundComponents, like a {@link * com.smartgwt.client.widgets.viewer.DetailViewer}, show all fields by default. <P> In addition, the {@link * com.smartgwt.client.widgets.form.fields.FormItem#showIf formItem.showIf} property is supported in multiple components * for conditional visibility - see for example {@link com.smartgwt.client.widgets.grid.ListGridField#showIf * ListGridField.showIf} and {@link com.smartgwt.client.widgets.form.fields.FormItem#showIf FormItem.showIf}). * * * @return Boolean * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public Boolean getDetail() { return getAttributeAsBoolean("detail"); } /** * When data values are displayed in DataBound components, by default strings will be interpreted as HTML by the browser in * most cases. <P> If set, this property will be picked up by components bound to this dataSource, notifying them that any * HTML characters should be escaped when displaying values for this field. * * @param escapeHTML escapeHTML Default value is null * @see com.smartgwt.client.widgets.grid.ListGridField#setEscapeHTML */ public void setEscapeHTML(Boolean escapeHTML) { setAttribute("escapeHTML", escapeHTML); } /** * When data values are displayed in DataBound components, by default strings will be interpreted as HTML by the browser in * most cases. <P> If set, this property will be picked up by components bound to this dataSource, notifying them that any * HTML characters should be escaped when displaying values for this field. * * * @return Boolean * @see com.smartgwt.client.widgets.grid.ListGridField#getEscapeHTML */ public Boolean getEscapeHTML() { return getAttributeAsBoolean("escapeHTML"); } /** * Optional different field-title used for exports. * * @param exportTitle exportTitle Default value is null */ public void setExportTitle(String exportTitle) { setAttribute("exportTitle", exportTitle); } /** * Optional different field-title used for exports. * * * @return String */ public String getExportTitle() { return getAttributeAsString("exportTitle"); } /** * Declares that this field holds values that can be matched to values from another DataSource * field, to create a relationship between records from different DataSources or even records * within the same DataSource. * <p> * The format of <code>foreignKey</code> is * <code><dataSourceId>.<fieldName></code>.<br> * For a foreignKey within the same dataSource, you can omit the <code>dataSourceId</code> * and just specify <code><fieldName></code>.<br> * For example, to create a tree relationship within a DataSource: * <pre> * DataSource.create({ * ID:"supplyItem", * fields : [ * {name:"itemId", type:"sequence", primaryKey:true}, * {name:"parentId", type:"integer", foreignKey:"itemId"}, * ... * ] * }); * </pre> * <P> * <code>foreignKey</code> declarations also allow other automatic behaviors by * {@link com.smartgwt.client.widgets.DataBoundComponent DataBoundComponents}, such as {@link * com.smartgwt.client.widgets.grid.ListGrid#fetchRelatedData ListGrid.fetchRelatedData}. * * @param foreignKey foreignKey Default value is false * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods */ public void setForeignKey(String foreignKey) { setAttribute("foreignKey", foreignKey); } /** * Declares that this field holds values that can be matched to values from another DataSource * field, to create a relationship between records from different DataSources or even records * within the same DataSource. * <p> * The format of <code>foreignKey</code> is * <code><dataSourceId>.<fieldName></code>.<br> * For a foreignKey within the same dataSource, you can omit the <code>dataSourceId</code> * and just specify <code><fieldName></code>.<br> * For example, to create a tree relationship within a DataSource: * <pre> * DataSource.create({ * ID:"supplyItem", * fields : [ * {name:"itemId", type:"sequence", primaryKey:true}, * {name:"parentId", type:"integer", foreignKey:"itemId"}, * ... * ] * }); * </pre> * <P> * <code>foreignKey</code> declarations also allow other automatic behaviors by * {@link com.smartgwt.client.widgets.DataBoundComponent DataBoundComponents}, such as {@link * com.smartgwt.client.widgets.grid.ListGrid#fetchRelatedData ListGrid.fetchRelatedData}. * * * @return String * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods */ public String getForeignKey() { return getAttributeAsString("foreignKey"); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema}, indicates what group to place the property in when editing * in Visual Builder. * * @param group group Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setGroup(String group) { setAttribute("group", group); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema}, indicates what group to place the property in when editing * in Visual Builder. * * * @return String * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public String getGroup() { return getAttributeAsString("group"); } /** * Whether this field should be hidden from users by default within a DataBound component. This is generally used for * internal IDs and other fields not meaningful to users. <P> See {@link com.smartgwt.client.data.DataSourceField#getDetail * detail} for fields that should be hidden in a summary view such as a {@link com.smartgwt.client.widgets.grid.ListGrid}, * but still available to the user. * * @param hidden hidden Default value is false * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setHidden(Boolean hidden) { setAttribute("hidden", hidden); } /** * Whether this field should be hidden from users by default within a DataBound component. This is generally used for * internal IDs and other fields not meaningful to users. <P> See {@link com.smartgwt.client.data.DataSourceField#getDetail * detail} for fields that should be hidden in a summary view such as a {@link com.smartgwt.client.widgets.grid.ListGrid}, * but still available to the user. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public Boolean getHidden() { return getAttributeAsBoolean("hidden"); } /** * Whether this field should be completely excluded from this dataSource, as if it had never been defined. * * @param ignore ignore Default value is false * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setIgnore(Boolean ignore) { setAttribute("ignore", ignore); } /** * Whether this field should be completely excluded from this dataSource, as if it had never been defined. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public Boolean getIgnore() { return getAttributeAsBoolean("ignore"); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema}, a field {@link * com.smartgwt.client.data.DataSource#getInheritsFrom inherited} from another schema can be redeclared with this property * set in order to indicate that the property should not be used. <P> This is primarily used to influence {@link * com.smartgwt.client.docs.VisualBuilder}. For simple type properties, this avoids the property appearing in the * Component Editor. <P> For fields that hold subcomponents, this prevents inappropriate drag and drop. For example, a * custom class called <code>MyDialog</code> may automatically create a series of children, and not allow arbitrary other * children to be added. In this case, the inherited property {@link com.smartgwt.client.widgets.Canvas#getChildren * children} should be marked inapplicable in order to prevent arbitrary components being dropped onto a * <code>MyDialog</code> instance. * * @param inapplicable inapplicable Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setInapplicable(Boolean inapplicable) { setAttribute("inapplicable", inapplicable); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema}, a field {@link * com.smartgwt.client.data.DataSource#getInheritsFrom inherited} from another schema can be redeclared with this property * set in order to indicate that the property should not be used. <P> This is primarily used to influence {@link * com.smartgwt.client.docs.VisualBuilder}. For simple type properties, this avoids the property appearing in the * Component Editor. <P> For fields that hold subcomponents, this prevents inappropriate drag and drop. For example, a * custom class called <code>MyDialog</code> may automatically create a series of children, and not allow arbitrary other * children to be added. In this case, the inherited property {@link com.smartgwt.client.widgets.Canvas#getChildren * children} should be marked inapplicable in order to prevent arbitrary components being dropped onto a * <code>MyDialog</code> instance. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public Boolean getInapplicable() { return getAttributeAsBoolean("inapplicable"); } /** * For use with the Smart GWT server when populating Java Beans / POJOs based on data contained in a DSRequest, * <code>javaClass</code> specifies the fully qualified Java className to be created and passed to the setter for the Java * Bean Property with the same name as this field. <code>javaClass</code> is used both when manually calling * DataSource.setProperties() and when auto-populating POJO arguments of a {@link * com.smartgwt.client.data.DataSourceField#getDmiOverview DMI} method. <P> The Java class to create does not normally have * to be specified: Smart GWT will use Java reflection to inspect the type of argument expected by a setter method and will * attempt conversion of inbound data to that type. As described in the documentation for DataTools.setProperties(), this * works for almost all typical cases. However <code>field.javaClass</code> is useful for: <ul> <li> subobject of abstract * or interface type: in this case Java Reflection is not sufficient to discover the concrete type that should be * instantiated, and <code>javaClass</code> should be set instead.</li> <li> subobject of Collection or Map type, when Java * generics are not used or the Collection member type or Map value type is abstract. When Java generics are used (for * example the setter takes an argument is of type Collection<SomePOJO> or Map<KeyType,SomePOJO>, Smart GWT * will automatically attempt to convert inbound data to the type of the members of the Collection or values of the Map. * Without generics, <code>javaClass</code> needs to be specified. Note that <code>javaClass</code> will take precedence * over generics if both are used. Also note that {@link com.smartgwt.client.data.DataSourceField#getJavaCollectionClass * javaCollectionClass} can be specified if a particular Collection or Map type is needed, and {@link * com.smartgwt.client.data.DataSourceField#getJavaKeyClass javaKeyClass} can be specified for a field of type * <code>java.util.Map</code>.</li> </ul> * * @param javaClass javaClass Default value is null */ public void setJavaClass(String javaClass) { setAttribute("javaClass", javaClass); } /** * For use with the Smart GWT server when populating Java Beans / POJOs based on data contained in a DSRequest, * <code>javaClass</code> specifies the fully qualified Java className to be created and passed to the setter for the Java * Bean Property with the same name as this field. <code>javaClass</code> is used both when manually calling * DataSource.setProperties() and when auto-populating POJO arguments of a {@link * com.smartgwt.client.data.DataSourceField#getDmiOverview DMI} method. <P> The Java class to create does not normally have * to be specified: Smart GWT will use Java reflection to inspect the type of argument expected by a setter method and will * attempt conversion of inbound data to that type. As described in the documentation for DataTools.setProperties(), this * works for almost all typical cases. However <code>field.javaClass</code> is useful for: <ul> <li> subobject of abstract * or interface type: in this case Java Reflection is not sufficient to discover the concrete type that should be * instantiated, and <code>javaClass</code> should be set instead.</li> <li> subobject of Collection or Map type, when Java * generics are not used or the Collection member type or Map value type is abstract. When Java generics are used (for * example the setter takes an argument is of type Collection<SomePOJO> or Map<KeyType,SomePOJO>, Smart GWT * will automatically attempt to convert inbound data to the type of the members of the Collection or values of the Map. * Without generics, <code>javaClass</code> needs to be specified. Note that <code>javaClass</code> will take precedence * over generics if both are used. Also note that {@link com.smartgwt.client.data.DataSourceField#getJavaCollectionClass * javaCollectionClass} can be specified if a particular Collection or Map type is needed, and {@link * com.smartgwt.client.data.DataSourceField#getJavaKeyClass javaKeyClass} can be specified for a field of type * <code>java.util.Map</code>.</li> </ul> * * * @return String */ public String getJavaClass() { return getAttributeAsString("javaClass"); } /** * See {@link com.smartgwt.client.data.DataSourceField#getJavaClass javaClass} - when auto-populating of Java Beans / POJOs * based on inbound DSRequest data, for a field of type Collection or Map, <code>javaCollectionClass</code> can be used * to specify a particular concrete class to use. If not specified, and a concrete Collection or Map class cannot be * discovered using Java Reflection, the following concrete classes are used: <ul> <li> <code>java.util.ArrayList</code> is * used for fields of type <code>List</code> <li> <code>java.util.HashSet</code> is used for fields of type * <code>Set</code> <li> <code>java.util.LinkedList</code> is used for fields of type <code>Queue</code> <li> * <code>org.apache.commons.collections.map.LinkedMap</code> is used for fields of type <code>Map</code> <li> * <code>java.util.ArrayList</code> is used for fields that are otherwise of type <code>Collection</code> </ul> Note that * this value is used even if the target Collection or Map is declared as a concrete class. So, for example, if you set * <code>javaCollectionClass</code> to <code>java.util.LinkedList</code> but your setter method accepts a * <code>java.util.ArrayList</code>, you will get a ClassCastException. * * @param javaCollectionClass javaCollectionClass Default value is null */ public void setJavaCollectionClass(String javaCollectionClass) { setAttribute("javaCollectionClass", javaCollectionClass); } /** * See {@link com.smartgwt.client.data.DataSourceField#getJavaClass javaClass} - when auto-populating of Java Beans / POJOs * based on inbound DSRequest data, for a field of type Collection or Map, <code>javaCollectionClass</code> can be used * to specify a particular concrete class to use. If not specified, and a concrete Collection or Map class cannot be * discovered using Java Reflection, the following concrete classes are used: <ul> <li> <code>java.util.ArrayList</code> is * used for fields of type <code>List</code> <li> <code>java.util.HashSet</code> is used for fields of type * <code>Set</code> <li> <code>java.util.LinkedList</code> is used for fields of type <code>Queue</code> <li> * <code>org.apache.commons.collections.map.LinkedMap</code> is used for fields of type <code>Map</code> <li> * <code>java.util.ArrayList</code> is used for fields that are otherwise of type <code>Collection</code> </ul> Note that * this value is used even if the target Collection or Map is declared as a concrete class. So, for example, if you set * <code>javaCollectionClass</code> to <code>java.util.LinkedList</code> but your setter method accepts a * <code>java.util.ArrayList</code>, you will get a ClassCastException. * * * @return String */ public String getJavaCollectionClass() { return getAttributeAsString("javaCollectionClass"); } /** * See {@link com.smartgwt.client.data.DataSourceField#getJavaClass javaClass} - when auto-populating of Java Beans / POJOs * based on inbound DSRequest data, for a field of Map type, <code>javaKeyClass</code> can be used to specify a particular * concrete class for the map keys. If not specified, and a concrete type cannot be discovered using Java Reflection, * <code>java.lang.Object</code> is used. Note that <code>javaKeyClass</code> take precedence over generics if both are * used. * * @param javaKeyClass javaKeyClass Default value is null */ public void setJavaKeyClass(String javaKeyClass) { setAttribute("javaKeyClass", javaKeyClass); } /** * See {@link com.smartgwt.client.data.DataSourceField#getJavaClass javaClass} - when auto-populating of Java Beans / POJOs * based on inbound DSRequest data, for a field of Map type, <code>javaKeyClass</code> can be used to specify a particular * concrete class for the map keys. If not specified, and a concrete type cannot be discovered using Java Reflection, * <code>java.lang.Object</code> is used. Note that <code>javaKeyClass</code> take precedence over generics if both are * used. * * * @return String */ public String getJavaKeyClass() { return getAttributeAsString("javaKeyClass"); } /** * Maximum number of characters allowed. Applicable only to fields of text type. <P> <b>NOTE:</b> For DataSources of type * "sql", this property has a bearing on the type of column we use when the underlying table is created by a DataSource * {@link com.smartgwt.client.docs.SqlDataSource import} in the {@link com.smartgwt.client.docs.AdminConsole Admin * Console}. Below a certain length (which is database-specific, see below), we use standard <code>VARCHAR</code> * columns; above that length, we use an alternate strategy (again, database-specific). For these long fields, we * sometimes also generate different SQL for "update" and "add" operations, using JDBC "?" replacement parameters rather * than embedding values directly in the generated SQL; whether or not this is done depends entirely on what the * underlying database product and/or JDBC driver will allow. <P><br> <b>Table of field length limits for supported * databases:</b><p> <table style="font-size:10px;text-align:center;border:1px solid black;"> <tr><td * style="color:white;background-color:black;"><b>Database product</b></td> <td * style="color:white;background-color:black;"><b>VARCHAR limit *</b></td> <td * style="color:white;background-color:black;"><b>Type used above limit</b></td></tr> * <tr><td>HSQLDB</td><td>None</td><td>-</td></tr> <tr><td>IBM DB2</td><td>4000</td><td>CLOB</td></tr> <tr><td> Microsoft * SQL Server </td><td>8000</td><td>TEXT</td></tr> <tr><td>MySQL</td><td> 255 / 65535 / 16M </td><td> TEXT / MEDIUMTEXT / * LONGTEXT ** </td></tr> <tr><td>Oracle</td><td>4000</td><td>CLOB</td></tr> * <tr><td>PostgreSQL</td><td>4000</td><td>TEXT</td></tr> </table><br> <b>*</b> The "VARCHAR limit" referred to here is a * limit used by the Smart GWT Server; it is not necessarily imposed by the database. For example, DB2's VARCHAR limit is * not 4000 characters; it actually varies from about 4K to about 32K, depending on how the server has been configured.<p> * <b>**</b> MySQL has a limit of 255 characters for VARCHAR, 65,535 characters for TEXT and 16,777,215 for MEDIUMTEXT; * therefore, with that one product, we have three thresholds for a change in storage type. * * @param length length Default value is null * @see <a href="http://www.smartclient.com/smartgwt/showcase/#grid_datatypes_longtext" target="examples">Long Text Example</a> */ public void setLength(Integer length) { setAttribute("length", length); } /** * Maximum number of characters allowed. Applicable only to fields of text type. <P> <b>NOTE:</b> For DataSources of type * "sql", this property has a bearing on the type of column we use when the underlying table is created by a DataSource * {@link com.smartgwt.client.docs.SqlDataSource import} in the {@link com.smartgwt.client.docs.AdminConsole Admin * Console}. Below a certain length (which is database-specific, see below), we use standard <code>VARCHAR</code> * columns; above that length, we use an alternate strategy (again, database-specific). For these long fields, we * sometimes also generate different SQL for "update" and "add" operations, using JDBC "?" replacement parameters rather * than embedding values directly in the generated SQL; whether or not this is done depends entirely on what the * underlying database product and/or JDBC driver will allow. <P><br> <b>Table of field length limits for supported * databases:</b><p> <table style="font-size:10px;text-align:center;border:1px solid black;"> <tr><td * style="color:white;background-color:black;"><b>Database product</b></td> <td * style="color:white;background-color:black;"><b>VARCHAR limit *</b></td> <td * style="color:white;background-color:black;"><b>Type used above limit</b></td></tr> * <tr><td>HSQLDB</td><td>None</td><td>-</td></tr> <tr><td>IBM DB2</td><td>4000</td><td>CLOB</td></tr> <tr><td> Microsoft * SQL Server </td><td>8000</td><td>TEXT</td></tr> <tr><td>MySQL</td><td> 255 / 65535 / 16M </td><td> TEXT / MEDIUMTEXT / * LONGTEXT ** </td></tr> <tr><td>Oracle</td><td>4000</td><td>CLOB</td></tr> * <tr><td>PostgreSQL</td><td>4000</td><td>TEXT</td></tr> </table><br> <b>*</b> The "VARCHAR limit" referred to here is a * limit used by the Smart GWT Server; it is not necessarily imposed by the database. For example, DB2's VARCHAR limit is * not 4000 characters; it actually varies from about 4K to about 32K, depending on how the server has been configured.<p> * <b>**</b> MySQL has a limit of 255 characters for VARCHAR, 65,535 characters for TEXT and 16,777,215 for MEDIUMTEXT; * therefore, with that one product, we have three thresholds for a change in storage type. * * * @return Integer * @see <a href="http://www.smartclient.com/smartgwt/showcase/#grid_datatypes_longtext" target="examples">Long Text Example</a> */ public Integer getLength() { return getAttributeAsInt("length"); } /** * Indicates that this field should always be Array-valued. If the value derived from * {@link com.smartgwt.client.data.DataSource#getDataFormat XML or JSON data} is singular, it will be wrapped in an Array. * <P> * Specifically for XML serialization and deserialization, <code>multiple:true</code> behaves * similarly to the * <a href='http://www.google.com/search?hl=en&q=soap+array' * onclick="window.open('http://www.google.com/search?hl=en&q=soap+array');return false;">SOAP array idiom</a>, that is, * there will be a "wrapper element" named after the field name, whose contents will be several * elements of the specified {@link com.smartgwt.client.data.DataSourceField#getType field.type}. * <P> * For example, {@link com.smartgwt.client.widgets.layout.Layout#getMembers members} is declared with <code>type:"Canvas", * multiple:true</code>. The correct XML format is thus: * <pre> * <VLayout> * <members> * <Canvas ID="myCanvas" ... /> * <ListGrid ID="myGrid" .../> * <Toolstrip ID="myToolStrip" ... /> * </members> * </VLayout> * </pre> * <P> * See {@link com.smartgwt.client.data.DataSourceField#getChildTagName childTagName} for customizing the tagName used for * subelements. * * @param multiple multiple Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setMultiple(Boolean multiple) { setAttribute("multiple", multiple); } /** * Indicates that this field should always be Array-valued. If the value derived from * {@link com.smartgwt.client.data.DataSource#getDataFormat XML or JSON data} is singular, it will be wrapped in an Array. * <P> * Specifically for XML serialization and deserialization, <code>multiple:true</code> behaves * similarly to the * <a href='http://www.google.com/search?hl=en&q=soap+array' * onclick="window.open('http://www.google.com/search?hl=en&q=soap+array');return false;">SOAP array idiom</a>, that is, * there will be a "wrapper element" named after the field name, whose contents will be several * elements of the specified {@link com.smartgwt.client.data.DataSourceField#getType field.type}. * <P> * For example, {@link com.smartgwt.client.widgets.layout.Layout#getMembers members} is declared with <code>type:"Canvas", * multiple:true</code>. The correct XML format is thus: * <pre> * <VLayout> * <members> * <Canvas ID="myCanvas" ... /> * <ListGrid ID="myGrid" .../> * <Toolstrip ID="myToolStrip" ... /> * </members> * </VLayout> * </pre> * <P> * See {@link com.smartgwt.client.data.DataSourceField#getChildTagName childTagName} for customizing the tagName used for * subelements. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public Boolean getMultiple() { return getAttributeAsBoolean("multiple"); } /** * Name for this field. <p> The field name is also the property in each DataSource record which holds the value for this * field. <P> Must be unique across all fields within the DataSource. * * @param name name Default value is null * @see com.smartgwt.client.docs.Basics Basics overview and related methods */ public void setName(String name) { setAttribute("name", name); } /** * Name for this field. <p> The field name is also the property in each DataSource record which holds the value for this * field. <P> Must be unique across all fields within the DataSource. * * * @return String * @see com.smartgwt.client.docs.Basics Basics overview and related methods */ public String getName() { return getAttributeAsString("name"); } /** * Whether this field holds a value unique across all records in this DataSource. * <p> * A DataSource that can <i>only</i> perform the "fetch" operation does not require a * primaryKey. If a DataSource allows modification of DataSource records through add, update * and remove DataSource operations, exactly one field must be marked as the primary key. * <P> * Smart GWT requires a primary key value to uniquely identify records when communicating * updates or deletions to the server. There is no requirement that the primaryKey field be * mapped to an actual "primary key" in your object model, web service, or database. The only * requirement is that values of the primaryKey field be unique for a given browser instance * for the lifetime of the page. * <P> * If your underlying data model has no primaryKey or has multiple primaryKey(s), you can * generate unique values or combine multiple values into a single field that serves as a * unique key, and declare that field as the single primary key instead. For example, if your * underlying data model has two primary keys "firstName" and "lastName", you can use * {@link com.smartgwt.client.data.DataSource#transformResponse DataSource.transformResponse} to combine them to into a new * field "name_key": * <pre> * isc.DataSource.create({ * fields:[ * {name:"name_key", primaryKey:true}, * {name:"firstName"}, * {name:"lastName"}, * ... other fields ... * ], * transformResponse : function (dsResponse) { * var data = dsResponse.data; * for (var i = 0 ; i < data.length; i++) { * data[i].name_key = data[i].firstName + ":" + * data[i].lastName; * } * } * }); * </pre> * <P> * Here it is assumed that ":" is not a legal character in either the firstName or lastName * field. Updates to records from this DataSource will then be sent with name_key as the * primary key value, and the server can split the value to obtain the separate key values. * <P> * If using ISC's {@link com.smartgwt.client.docs.SqlDataSource SQL engine} and generating SQL tables using the * "Databases" tab of the Developer Console, the table column generated from a primaryKey field * will have a unique constraint applied in the database table. * * @param primaryKey primaryKey Default value is false * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods */ public void setPrimaryKey(Boolean primaryKey) { setAttribute("primaryKey", primaryKey); } /** * Whether this field holds a value unique across all records in this DataSource. * <p> * A DataSource that can <i>only</i> perform the "fetch" operation does not require a * primaryKey. If a DataSource allows modification of DataSource records through add, update * and remove DataSource operations, exactly one field must be marked as the primary key. * <P> * Smart GWT requires a primary key value to uniquely identify records when communicating * updates or deletions to the server. There is no requirement that the primaryKey field be * mapped to an actual "primary key" in your object model, web service, or database. The only * requirement is that values of the primaryKey field be unique for a given browser instance * for the lifetime of the page. * <P> * If your underlying data model has no primaryKey or has multiple primaryKey(s), you can * generate unique values or combine multiple values into a single field that serves as a * unique key, and declare that field as the single primary key instead. For example, if your * underlying data model has two primary keys "firstName" and "lastName", you can use * {@link com.smartgwt.client.data.DataSource#transformResponse DataSource.transformResponse} to combine them to into a new * field "name_key": * <pre> * isc.DataSource.create({ * fields:[ * {name:"name_key", primaryKey:true}, * {name:"firstName"}, * {name:"lastName"}, * ... other fields ... * ], * transformResponse : function (dsResponse) { * var data = dsResponse.data; * for (var i = 0 ; i < data.length; i++) { * data[i].name_key = data[i].firstName + ":" + * data[i].lastName; * } * } * }); * </pre> * <P> * Here it is assumed that ":" is not a legal character in either the firstName or lastName * field. Updates to records from this DataSource will then be sent with name_key as the * primary key value, and the server can split the value to obtain the separate key values. * <P> * If using ISC's {@link com.smartgwt.client.docs.SqlDataSource SQL engine} and generating SQL tables using the * "Databases" tab of the Developer Console, the table column generated from a primaryKey field * will have a unique constraint applied in the database table. * * * @return Boolean * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods */ public Boolean getPrimaryKey() { return getAttributeAsBoolean("primaryKey"); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema} for fields that contain other components, this flag * suppresses auto-construction for subcomponents that appear under this field. * <P> * For example, the {@link com.smartgwt.client.widgets.layout.VLayout} schema sets this for its {@link * com.smartgwt.client.widgets.layout.Layout#getMembers members} * property, so that when a VLayout is constructed via XML as follows: * <pre> * <VLayout> * <members> * <ListGrid ID="myGrid" .../> * <Toolstrip ID="myToolStrip" ... /> * </members> * </VLayout> * </pre> * The ListGrid and ToolStrip do not construct themselves automatically. Instead, the VLayout * receives the properties of the ListGrid and ToolStrip as ordinary JavaScript Objects, with * the special property <code>_constructor</code> set to the name of the class that should be * constructed. * * @param propertiesOnly propertiesOnly Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setPropertiesOnly(Boolean propertiesOnly) { setAttribute("propertiesOnly", propertiesOnly); } /** * For use in {@link com.smartgwt.client.docs.ComponentSchema} for fields that contain other components, this flag * suppresses auto-construction for subcomponents that appear under this field. * <P> * For example, the {@link com.smartgwt.client.widgets.layout.VLayout} schema sets this for its {@link * com.smartgwt.client.widgets.layout.Layout#getMembers members} * property, so that when a VLayout is constructed via XML as follows: * <pre> * <VLayout> * <members> * <ListGrid ID="myGrid" .../> * <Toolstrip ID="myToolStrip" ... /> * </members> * </VLayout> * </pre> * The ListGrid and ToolStrip do not construct themselves automatically. Instead, the VLayout * receives the properties of the ListGrid and ToolStrip as ordinary JavaScript Objects, with * the special property <code>_constructor</code> set to the name of the class that should be * constructed. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public Boolean getPropertiesOnly() { return getAttributeAsBoolean("propertiesOnly"); } /** * Indicates this field must be non-null in order for a record to pass validation. <P> Note that <code>required</code> * should not be set for a server-generated field, such as a sequence, or validation will fail on the client. * * @param required required Default value is null */ public void setRequired(Boolean required) { setAttribute("required", required); } /** * Indicates this field must be non-null in order for a record to pass validation. <P> Note that <code>required</code> * should not be set for a server-generated field, such as a sequence, or validation will fail on the client. * * * @return Boolean */ public Boolean getRequired() { return getAttributeAsBoolean("required"); } /** * For a field that is a foreignKey establishing a tree relationship, what value indicates a root-level node. Defaults to * null. <P> Note that the rootValue may be overridden on a specific ResultTree instance by setting rootNode, or if the * ResultTree is auto-generated by a {@link com.smartgwt.client.widgets.tree.TreeGrid}, by setting {@link * com.smartgwt.client.widgets.tree.TreeGrid#getTreeRootValue treeRootValue}. This allows a component to navigate a subtree * of the hierarchical data from this dataSource starting at a particular node. * * @param rootValue rootValue Default value is null * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods * */ public void setRootValue(Object rootValue) { setAttribute("rootValue", rootValue); } /** * For a field that is a foreignKey establishing a tree relationship, what value indicates a root-level node. Defaults to * null. <P> Note that the rootValue may be overridden on a specific ResultTree instance by setting rootNode, or if the * ResultTree is auto-generated by a {@link com.smartgwt.client.widgets.tree.TreeGrid}, by setting {@link * com.smartgwt.client.widgets.tree.TreeGrid#getTreeRootValue treeRootValue}. This allows a component to navigate a subtree * of the hierarchical data from this dataSource starting at a particular node. * * * @return Object * @see com.smartgwt.client.docs.DataSourceRelations DataSourceRelations overview and related methods * */ public Object getRootValue() { return getAttributeAsObject("rootValue"); } /** * For a DataSource with {@link com.smartgwt.client.docs.serverds.DataSource#serverType serverType:"sql"} with a field of * type "sequence", the name of the SQL sequence that should be used when inserting new records into this table. <P> Note * that this is never required for SQL tables that are generated from Smart GWT DataSources (a default sequence name of * tableName + "_" + columnName is chosen), and is never required for databases where inserting null into a sequence * column is sufficient (MySQL, SQL Server, DB2 and others). <P> You would only need to set sequenceName if you are * integrating with a pre-existing table stored in a database where the sequence must be named for insertion to work * (Oracle, Postgres) OR you are trying to use the same sequence across multiple DataSources. * * @param sequenceName sequenceName Default value is null * @see com.smartgwt.client.docs.SqlDataSource SqlDataSource overview and related methods */ public void setSequenceName(String sequenceName) { setAttribute("sequenceName", sequenceName); } /** * For a DataSource with {@link com.smartgwt.client.docs.serverds.DataSource#serverType serverType:"sql"} with a field of * type "sequence", the name of the SQL sequence that should be used when inserting new records into this table. <P> Note * that this is never required for SQL tables that are generated from Smart GWT DataSources (a default sequence name of * tableName + "_" + columnName is chosen), and is never required for databases where inserting null into a sequence * column is sufficient (MySQL, SQL Server, DB2 and others). <P> You would only need to set sequenceName if you are * integrating with a pre-existing table stored in a database where the sequence must be named for insertion to work * (Oracle, Postgres) OR you are trying to use the same sequence across multiple DataSources. * * * @return String * @see com.smartgwt.client.docs.SqlDataSource SqlDataSource overview and related methods */ public String getSequenceName() { return getAttributeAsString("sequenceName"); } /** * For a field of type:"imageFile", indicates whether to stream the image and display it inline or to display the View and * Download icons. * * @param showFileInline showFileInline Default value is null */ public void setShowFileInline(Boolean showFileInline) { setAttribute("showFileInline", showFileInline); } /** * For a field of type:"imageFile", indicates whether to stream the image and display it inline or to display the View and * Download icons. * * * @return Boolean */ public Boolean getShowFileInline() { return getAttributeAsBoolean("showFileInline"); } /** * Title to show in a Summary of type "title" for this field. If unspecified <code>title</code> summaries will show the * {@link com.smartgwt.client.data.DataSourceField#getTitle title} for the field. * * @param summaryValueTitle summaryValueTitle Default value is null */ public void setSummaryValueTitle(String summaryValueTitle) { setAttribute("summaryValueTitle", summaryValueTitle); } /** * Title to show in a Summary of type "title" for this field. If unspecified <code>title</code> summaries will show the * {@link com.smartgwt.client.data.DataSourceField#getTitle title} for the field. * * * @return String */ public String getSummaryValueTitle() { return getAttributeAsString("summaryValueTitle"); } /** * Default user-visible title for this field. <p> This will be picked up by DataBound components and other views over this * DataSource. <p> Note this property frequently does not need to be set since {@link * com.smartgwt.client.data.DataSource#getAutoDeriveTitles autoDeriveTitles} (on by default) usually picks an appropriate * user-visible title if you have a reasonable naming convention for your field names. * * @param title title Default value is null * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public void setTitle(String title) { setAttribute("title", title); } /** * Default user-visible title for this field. <p> This will be picked up by DataBound components and other views over this * DataSource. <p> Note this property frequently does not need to be set since {@link * com.smartgwt.client.data.DataSource#getAutoDeriveTitles autoDeriveTitles} (on by default) usually picks an appropriate * user-visible title if you have a reasonable naming convention for your field names. * * * @return String * @see com.smartgwt.client.docs.ComponentBinding ComponentBinding overview and related methods */ public String getTitle() { return getAttributeAsString("title"); } /** * Type of this field. Required for all DataSource fields. <P> Field type may imply automatic validators (for example, an * integer field cannot accept the value "foo"). Field type also affects the default behaviors of DataBound components, * for example, if a field is declared as type "date", components that edit that field will automatically choose a * date-editing interface with pop-up date picker. * * @param type type Default value is null * @see com.smartgwt.client.docs.Basics Basics overview and related methods */ public void setType(FieldType type) { setAttribute("type", type.getValue()); } /** * Type of this field. Required for all DataSource fields. <P> Field type may imply automatic validators (for example, an * integer field cannot accept the value "foo"). Field type also affects the default behaviors of DataBound components, * for example, if a field is declared as type "date", components that edit that field will automatically choose a * date-editing interface with pop-up date picker. * * * @return FieldType * @see com.smartgwt.client.docs.Basics Basics overview and related methods */ public FieldType getType() { return EnumUtil.getEnum(FieldType.values(), getAttribute("type")); } /** * Validators to be applied to this field. <p> Validators are applied whenever there is an attempt to save changes to a * field. <p> For the available set of built-in validators, and how to define a custom validator, see the {@link * com.smartgwt.client.widgets.form.validator.Validator} class. * * @param validators validators Default value is null * @see com.smartgwt.client.widgets.form.validator.Validator * @see com.smartgwt.client.docs.Validation Validation overview and related methods */ // public void setValidators(Validator... validators) { // setAttribute("validators", validators); // } /** * Validators to be applied to this field. <p> Validators are applied whenever there is an attempt to save changes to a * field. <p> For the available set of built-in validators, and how to define a custom validator, see the {@link * com.smartgwt.client.widgets.form.validator.Validator} class. * * * @return Validator * @see com.smartgwt.client.widgets.form.validator.Validator * @see com.smartgwt.client.docs.Validation Validation overview and related methods */ // public Validator[] getValidators() { // return Validator.convertToValidatorArray(getAttributeAsJavaScriptObject("validators")); // } /** * List of operators valid on this field. <P> If not specified, all operators that are valid for the field type are * allowed. * * @param validOperators validOperators Default value is null */ public void setValidOperators(OperatorId... validOperators) { setAttribute("validOperators", validOperators); } /** * List of operators valid on this field. <P> If not specified, all operators that are valid for the field type are * allowed. * * * @return OperatorId */ public OperatorId[] getValidOperators() { return (OperatorId[]) EnumUtil.getEnums(OperatorId.values(), getAttributeAsStringArray("validOperators")); } /** * A ValueMap is a set of legal values for a field. * <p> * The valueMap can be specified as either an Array of legal values, or as an * Object where each property maps a stored value to a user-displayable value. * <p> * To enforce that a field should be constrained to only the values in the valueMap, either * declare {@link com.smartgwt.client.data.DataSourceField#getType field.type} as "enum", or use a * {@link com.smartgwt.client.types.ValidatorType} of "isOneOf" with explicitly listed values. Otherwise, * although a normal {@link com.smartgwt.client.widgets.form.fields.SelectItem} control will only allow values from the * valueMap to be * entered, other controls such as a {@link com.smartgwt.client.widgets.form.fields.ComboBoxItem ComboBox} will allow other * values * to be entered. * <p> * In XML, a valueMap that specifies only a list of legal values is specified as follows: * <pre> * <valueMap> * <value>Pens & Pencils</value> * <value>Stationery</value> * <value>Computer Products</value> * <value>Furniture</value> * <value>Misc</value> * </valueMap> * </pre> * A ValueMap that specifies stored values mapped to user-visible values is specified as * follows: * <pre> * <valueMap> * <value ID="1">Pens & Pencils</value> * <value ID="2">Stationery</value> * <value ID="3">Computer Products</value> * <value ID="4">Furniture</value> * <value ID="5">Misc</value> * </valueMap> * </pre> * * @param valueMap valueMap Default value is null */ public void setValueMap(Map valueMap) { setAttribute("valueMap", valueMap); } /** * A ValueMap is a set of legal values for a field. * <p> * The valueMap can be specified as either an Array of legal values, or as an * Object where each property maps a stored value to a user-displayable value. * <p> * To enforce that a field should be constrained to only the values in the valueMap, either * declare {@link com.smartgwt.client.data.DataSourceField#getType field.type} as "enum", or use a * {@link com.smartgwt.client.types.ValidatorType} of "isOneOf" with explicitly listed values. Otherwise, * although a normal {@link com.smartgwt.client.widgets.form.fields.SelectItem} control will only allow values from the * valueMap to be * entered, other controls such as a {@link com.smartgwt.client.widgets.form.fields.ComboBoxItem ComboBox} will allow other * values * to be entered. * <p> * In XML, a valueMap that specifies only a list of legal values is specified as follows: * <pre> * <valueMap> * <value>Pens & Pencils</value> * <value>Stationery</value> * <value>Computer Products</value> * <value>Furniture</value> * <value>Misc</value> * </valueMap> * </pre> * A ValueMap that specifies stored values mapped to user-visible values is specified as * follows: * <pre> * <valueMap> * <value ID="1">Pens & Pencils</value> * <value ID="2">Stationery</value> * <value ID="3">Computer Products</value> * <value ID="4">Furniture</value> * <value ID="5">Misc</value> * </valueMap> * </pre> * * * @return Map */ public Map getValueMap() { return getAttributeAsMap("valueMap"); } /** * XPath expression used to retrieve the field's value. * <P> * This XPath expression will be evaluated in the scope of the record objects selected by * the {@link com.smartgwt.client.data.DataSource#getRecordXPath recordXPath}. For XML data * ({@link com.smartgwt.client.data.DataSource#getDataFormat dataFormat:"xml"}) this means a call to * {@link com.smartgwt.client.data.XMLTools#selectString XMLTools.selectString} passing the selected XML element. For JSON * data * ({@link com.smartgwt.client.data.DataSource#getDataFormat dataFormat:"json"}), this means a call to * {@link com.smartgwt.client.data.XMLTools#selectObjects XMLTools.selectObjects} passing the selected JSON object. * <P> * In the absence of a <code>valueXPath</code>, for JSON data the value for the field will * be the value of the same-named property in the record object selected by * {@link com.smartgwt.client.data.DataSource#getRecordXPath recordXPath}. * <P> * For XML data, the value will be the attribute or subelement named after the field name. * For example, for a field "author" on a record element <book>, the following structures * require no valueXPath: * <pre> * <book author="Mark Jones"/> * * <book> * <author>Mark Jones</author> * </book> * </pre> * <P> * If <code>valueXPath</code> is not required for your field because of the default handling * described above, don't specify it, as it's slightly slower. * <p> * To learn about XPath, try the following search: * <a href="http://www.google.com/search?q=xpath+tutorial" target="_blank" * >http://www.google.com/search?q=xpath+tutorial</a> * <P> * <B>Using valueXPath with the Smart GWT server</B> * <p> * If you're using the Smart GWT server to return data via the DSResponse object (or * indirectly doing so using DataSource DMI), the valueXPath you specify on the DataSource * fields will be applied to the data you return via the * <a href='http://jakarta.apache.org/commons/jxpath/' * onclick="window.open('http://jakarta.apache.org/commons/jxpath/');return false;">JXPath</a> library. * <P> * If you are returning Java Beans as your DSResponse data, normally each dataSource field * receives the value of the same-named Java Bean property, that is, a field "zipCode" is * populated by looking for "getZipCode()" on the objects passed as DSResponse data. You can * use <code>valueXPath</code> to retrieve properties from subobjects, so long as a chain of * getter methods exists that corresponds to the valueXPath. For example, a valueXPath of * "address/zipCode" expects to call "getAddress()" on the bean(s) passed to * DSResponse.setData(), followed by "getZipCode()" on whatever object "getAddress()" returns. * <P> * When you are saving data, the inbound DSRequest values, available as a Java Map, will use * just dataSource field names as Map keys, not the valueXPath used to derive them. However, * to achieve bidirectional valueXPath binding, you can use the server-side method * dataSource.setProperties() to use the valueXPath when setting properties on your server * object model. When applied as a setter, an XPath like "address/zipCode" attempts * "getAddress()" followed by "setZipCode()" on the returned object. JXPath also has some * ability to auto-create intervening objects if they are missing, such as auto-creating an * "address" subobject when applying "address/zipCode" as a valueXPath. * <P> * See the * <a href='http://jakarta.apache.org/commons/jxpath/' * onclick="window.open('http://jakarta.apache.org/commons/jxpath/');return false;">JXPath</a> library documentation for * complete details, including other types of server object models supported, such as * server-side XML. * * @param valueXPath valueXPath Default value is null * @see com.smartgwt.client.docs.ClientDataIntegration ClientDataIntegration overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#xpath_xml_integration_category" target="examples">XPath Binding Example</a> */ public void setValueXPath(String valueXPath) { setAttribute("valueXPath", valueXPath); } /** * XPath expression used to retrieve the field's value. * <P> * This XPath expression will be evaluated in the scope of the record objects selected by * the {@link com.smartgwt.client.data.DataSource#getRecordXPath recordXPath}. For XML data * ({@link com.smartgwt.client.data.DataSource#getDataFormat dataFormat:"xml"}) this means a call to * {@link com.smartgwt.client.data.XMLTools#selectString XMLTools.selectString} passing the selected XML element. For JSON * data * ({@link com.smartgwt.client.data.DataSource#getDataFormat dataFormat:"json"}), this means a call to * {@link com.smartgwt.client.data.XMLTools#selectObjects XMLTools.selectObjects} passing the selected JSON object. * <P> * In the absence of a <code>valueXPath</code>, for JSON data the value for the field will * be the value of the same-named property in the record object selected by * {@link com.smartgwt.client.data.DataSource#getRecordXPath recordXPath}. * <P> * For XML data, the value will be the attribute or subelement named after the field name. * For example, for a field "author" on a record element <book>, the following structures * require no valueXPath: * <pre> * <book author="Mark Jones"/> * * <book> * <author>Mark Jones</author> * </book> * </pre> * <P> * If <code>valueXPath</code> is not required for your field because of the default handling * described above, don't specify it, as it's slightly slower. * <p> * To learn about XPath, try the following search: * <a href="http://www.google.com/search?q=xpath+tutorial" target="_blank" * >http://www.google.com/search?q=xpath+tutorial</a> * <P> * <B>Using valueXPath with the Smart GWT server</B> * <p> * If you're using the Smart GWT server to return data via the DSResponse object (or * indirectly doing so using DataSource DMI), the valueXPath you specify on the DataSource * fields will be applied to the data you return via the * <a href='http://jakarta.apache.org/commons/jxpath/' * onclick="window.open('http://jakarta.apache.org/commons/jxpath/');return false;">JXPath</a> library. * <P> * If you are returning Java Beans as your DSResponse data, normally each dataSource field * receives the value of the same-named Java Bean property, that is, a field "zipCode" is * populated by looking for "getZipCode()" on the objects passed as DSResponse data. You can * use <code>valueXPath</code> to retrieve properties from subobjects, so long as a chain of * getter methods exists that corresponds to the valueXPath. For example, a valueXPath of * "address/zipCode" expects to call "getAddress()" on the bean(s) passed to * DSResponse.setData(), followed by "getZipCode()" on whatever object "getAddress()" returns. * <P> * When you are saving data, the inbound DSRequest values, available as a Java Map, will use * just dataSource field names as Map keys, not the valueXPath used to derive them. However, * to achieve bidirectional valueXPath binding, you can use the server-side method * dataSource.setProperties() to use the valueXPath when setting properties on your server * object model. When applied as a setter, an XPath like "address/zipCode" attempts * "getAddress()" followed by "setZipCode()" on the returned object. JXPath also has some * ability to auto-create intervening objects if they are missing, such as auto-creating an * "address" subobject when applying "address/zipCode" as a valueXPath. * <P> * See the * <a href='http://jakarta.apache.org/commons/jxpath/' * onclick="window.open('http://jakarta.apache.org/commons/jxpath/');return false;">JXPath</a> library documentation for * complete details, including other types of server object models supported, such as * server-side XML. * * * @return String * @see com.smartgwt.client.docs.ClientDataIntegration ClientDataIntegration overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#xpath_xml_integration_category" target="examples">XPath Binding Example</a> */ public String getValueXPath() { return getAttributeAsString("valueXPath"); } /** * Indicates that {@link com.smartgwt.client.data.DataSource#xmlSerialize DataSource.xmlSerialize} should serialize this * value as an XML attribute. <P> Note this does not need to be declared in order for DataSource records to be derived from * XML data: a field will be populated with either an attribute or subelement with matching name. * * @param xmlAttribute xmlAttribute Default value is null * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public void setXmlAttribute(Boolean xmlAttribute) { setAttribute("xmlAttribute", xmlAttribute); } /** * Indicates that {@link com.smartgwt.client.data.DataSource#xmlSerialize DataSource.xmlSerialize} should serialize this * value as an XML attribute. <P> Note this does not need to be declared in order for DataSource records to be derived from * XML data: a field will be populated with either an attribute or subelement with matching name. * * * @return Boolean * @see com.smartgwt.client.docs.ComponentSchema ComponentSchema overview and related methods */ public Boolean getXmlAttribute() { return getAttributeAsBoolean("xmlAttribute"); } // ********************* Methods *********************** // ********************* Static Methods *********************** // *********************************************************** /** * Set the plural title. * * @param pluralTitle the plural title */ public void setPluralTitle(String pluralTitle) { setAttribute("pluralTitle", pluralTitle); } /** * Return the plural title. * * * @return String */ public String getPluralTitle() { return getAttributeAsString("pluralTitle"); } /** * Set the type directly to a defined SimpleType. * * @param type the SimpleType */ public void setType(SimpleType type) { //ensure that the simple type is created and registered type.getOrCreateJsObj(); setAttribute("type", type.getName()); } /** * A ValueMap is a set of legal values for a field. <p> The valueMap can be specified as either an Array of legal * values, or as an Object where each property maps a stored value to a user-displayable value. <p> To * enforce that a field should be constrained to only the values in the valueMap, either declare {@link * com.smartgwt.client.data.DataSourceField#getType field.type} as "enum", or use a {@link * com.smartgwt.client.types.ValidatorType} of "isOneOf" with explicitly listed values. Otherwise, although a normal * {@link com.smartgwt.client.widgets.form.fields.SelectItem} control will only allow values from the valueMap to be * entered, other controls such as a {@link com.smartgwt.client.widgets.form.fields.ComboBoxItem ComboBox} will allow other * values to be entered. <p> In XML, a valueMap that specifies only a list of legal values is specified as * follows: <pre> <valueMap> <value>Pens & Pencils</value> * <value>Stationery</value> <value>Computer Products</value> * <value>Furniture</value> <value>Misc</value> </valueMap> </pre> A * ValueMap that specifies stored values mapped to user-visible values is specified as follows: <pre> * <valueMap> <value ID="1">Pens & Pencils</value> <value * ID="2">Stationery</value> <value ID="3">Computer Products</value> <value * ID="4">Furniture</value> <value ID="5">Misc</value> </valueMap> </pre> * * @param valueMap valueMap Default value is null */ public void setValueMap(String... valueMap) { setAttribute("valueMap", valueMap); } // /** // * Sets the default FormItem to be used whenever this field is edited (whether in a grid, form, or other component). // * <P> If unset, a FormItem will be automatically chosen based on the type of the field. // * <p><br> // * Note: the FormItem passed to setEditorType() is used as a "template" to create a FormItem whenever // * a DataBoundComponent needs to show an interface for editing this field. This means you need to // * follow special rules: // * <ol> // * <li>In event handler code, you must obtain the current FormItem instance from the provided // * Event object via getItem(). You cannot make method calls via "this" or via implicit instance // * scope: both "clearValue()" and "this.clearValue()" need to be written as "item.clearValue()" // * instead (where "item" is the result of event.getItem()).</li> // * <li>To store custom instance variables, you must use FormItem.getAttribute()/setAttribute() // * (or their type-specific variants). You cannot store and retrieve instance variables // * via "this" - "this.someVariable = 5" will not work.</li> // * <li>You may not override superclass methods - your behaviors have to be implemented via event handlers</li> // * <li>If you create a custom subclass, the FormItem you receive in an event handler will be of a generic // * type and must be converted before you can call custom methods. Conversion is done via // * <code>new MyCustomItem(item.getJsObj());</code> (complete code sample below).<br> // * Note that this conversion does not actually cause creation or rendering of a new // * widget and is comparable in cost to a typecast.</li> // * </ol> // * Example code demonstrating using an eventHandler to call a method on custom subclass of TextItem: // * <pre> // * class MyCustomItem extends TextItem { // * MyCustomItem (JavaScriptObject config) { // * } // * // * MyCustomItem(String name) { // * setInitHandler(new FormItemInitHandler() { // * public void onInit(FormItem item) { // * // correct // * new MyCustomItem(item.getJsObj()).customMethod(); // * // * // incorrect, will throw an error // * // ((MyCustomItem)item).customMethod(); // * } // * } // * } // * // * void customMethod() { ... } // * } // * // * ... // * // * myDataSource.setEditorType(new MyCustomItem("field1")); // * </pre> // * // * @param editorType editorType Default value is null // */ // public void setEditorType(FormItem editorType) { // //only set the editorType attribute if the passed editorType is a concrete subclass of FormItem // if(!editorType.getClass().getName().equals(FormItem.class.getName())) { // String fiEditorType = editorType.getAttribute("editorType"); // //fallback to type if editorType is not specified // if(fiEditorType == null) fiEditorType = editorType.getType(); // if (fiEditorType != null) setAttribute("editorType", fiEditorType); // } // JavaScriptObject editorConfig = editorType.getConfig(); // setAttribute("editorProperties", editorConfig); // } // // /** // * // * Sets the default FormItem to be used if this field is marked as // * {@link #setCanEdit,canEdit false} and displayed in an editor component such as a DynamicForm. // * <P> // * This property may also be specified at the type level by specifying // * {@link SimpleType.setReadOnlyEditorType()}. // * // * @param editorType editorType Default value is null // */ // public void setReadOnlyEditorType(FormItem editorType) { // //only set the editorType attribute if the passed editorType is a concrete subclass of FormItem // if(!editorType.getClass().getName().equals(FormItem.class.getName())) { // String fiEditorType = editorType.getAttribute("editorType"); // //fallback to type if editorType is not specified // if(fiEditorType == null) fiEditorType = editorType.getType(); // if (fiEditorType != null) setAttribute("readOnlyEditorType", fiEditorType); // } // JavaScriptObject editorConfig = editorType.getConfig(); // setAttribute("readOnlyEditorProperties", editorConfig); // } /** * For a field that is a foreignKey establishing a tree relationship, what value indicates a root-level node. * Defaults to null. * * @param rootValue rootValue Default value is null */ public void setRootValue(String rootValue) { setAttribute("rootValue", rootValue); } /** * For a field that is a foreignKey establishing a tree relationship, what value indicates a root-level node. * Defaults to null. * * @param rootValue rootValue Default value is null */ public void setRootValue(Integer rootValue) { setAttribute("rootValue", rootValue); } /** * For a field that is a foreignKey establishing a tree relationship, what value indicates a root-level node. * Defaults to null. * * @param rootValue rootValue Default value is null */ public void setRootValue(Float rootValue) { setAttribute("rootValue", rootValue); } // /** // * Function to retrieve the field's value from the XML element or JSON record returned // * from a web service. <P> This is an advanced API for use when a {@link com.smartgwt.client.data.DataSourceField#getValueXPath // * valueXPath} setting is insufficient to derive a field's value, yet an implementation of {@link // * com.smartgwt.client.data.DataSource#transformResponse} is overkill. // * // * @param extractor the field value extractor // */ // public native void setFieldValueExtractor(FieldValueExtractor extractor) /*-{ // var self = this.@com.smartgwt.client.core.DataClass::getJsObj()(); // self.getFieldValue = $debox($entry(function(record, value, field, fieldName) { // var valueJ = $wnd.SmartGWT.convertToJavaType(value); // var fieldJ = @com.smartgwt.client.data.DataSourceField::new(Lcom/google/gwt/core/client/JavaScriptObject;)(field); // // var extractedVal = extractor.@com.smartgwt.client.data.FieldValueExtractor::execute(Ljava/lang/Object;Ljava/lang/Object;Lcom/smartgwt/client/data/DataSourceField;Ljava/lang/String;)(record, valueJ, fieldJ, fieldName); // return $wnd.SmartGWT.convertToPrimitiveType(extractedVal); // // })); // }-*/; // // /** // * The type can also be the another DataSource, which allows you to model nested structures such as XML documents (in fact, XMLTools.loadXMLSchema() // * models XML schema in this way). Nested DataSource declarations affect how XML and JSON data is deserialized into JavaScript objects in the // * client-side integration pipeline, so that you can load complex XML documents and have them deserialized into a correctly typed JavaScript object model. // * // * @param dataSource the data source // * @deprecated use #setTypeAsDataSource // */ // public void setType(DataSource dataSource) { // dataSource.getOrCreateJsObj(); // setAttribute("type", dataSource.getID()); // } // // /** // * The type can also be the another DataSource, which allows you to model nested structures such as XML documents (in fact, XMLTools.loadXMLSchema() // * models XML schema in this way). Nested DataSource declarations affect how XML and JSON data is deserialized into JavaScript objects in the // * client-side integration pipeline, so that you can load complex XML documents and have them deserialized into a correctly typed JavaScript object model. // * // * @param dataSource the data source // */ // public void setTypeAsDataSource(DataSource dataSource) { // dataSource.getOrCreateJsObj(); // setAttribute("type", dataSource.getID()); // } // // /** // * Return the type of the assigned DataSource // * // * @return the DataSource // */ // public DataSource getTypeAsDataSource() { // return DataSource.get(getAttribute("type")); // } // public static DataSourceField[] convertToDataSourceFieldArray(JavaScriptObject nativeArray) { // if (nativeArray == null) { // return new DataSourceField[]{}; // } // if (JSOHelper.isArray(nativeArray)) { // JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray); // DataSourceField[] objects = new DataSourceField[componentsj.length]; // for (int i = 0; i < componentsj.length; i++) { // JavaScriptObject componentJS = componentsj[i]; // objects[i] = DataSourceField.getOrCreateRef(componentJS); // } // return objects; // } else { // DataSourceField[] ret = new DataSourceField[1]; // ret[0] = DataSourceField.getOrCreateRef(nativeArray); // return ret; // } // } /** * If {@link com.smartgwt.client.widgets.grid.ListGrid#getShowGridSummary showGridSummary} or {@link * com.smartgwt.client.widgets.grid.ListGrid#getShowGroupSummary showGroupSummary} is true, this attribute can be used to * specify an explicit {@link com.smartgwt.client.widgets.grid.SummaryFunction} for calculating the summary value to display. * * @param summaryFunction summaryFunction Default value is null */ public void setSummaryFunction(SummaryFunctionType summaryFunction) { setAttribute("summaryFunction", summaryFunction); } /** * If {@link com.smartgwt.client.widgets.grid.ListGrid#getShowGridSummary showGridSummary} or {@link * com.smartgwt.client.widgets.grid.ListGrid#getShowGroupSummary showGroupSummary} is true, this attribute can be used to * specify an summary function registered via {@link com.smartgwt.client.data.SimpleType#registerSummaryFunction()} * for calculating the summary value to display. * @param summaryFunction summaryFunction Default value is null */ public void setSummaryFunction(String summaryFunction) { setAttribute("summaryFunction", summaryFunction); } /** * If {@link com.smartgwt.client.widgets.grid.ListGrid#getShowGridSummary showGridSummary} or {@link * com.smartgwt.client.widgets.grid.ListGrid#getShowGroupSummary showGroupSummary} is true, this attribute can be used to * specify an explicit {@link com.smartgwt.client.widgets.grid.SummaryFunction} for calculating the summary value to display. * * * @return SummaryFunctionType */ public SummaryFunctionType getSummaryFunction() { return EnumUtil.getEnum(SummaryFunctionType.values(), getAttribute("summaryFunction")); } // /** // * If {@link com.smartgwt.client.widgets.grid.ListGrid#getShowGridSummary showGridSummary} or {@link // * com.smartgwt.client.widgets.grid.ListGrid#getShowGroupSummary showGroupSummary} is true, this attribute can be used to // * specify an explicit {@link com.smartgwt.client.widgets.grid.SummaryFunction} for calculating the summary value to display. // * // * @param summaryFunction summaryFunction Default value is null // */ // public native void setSummaryFunction(SummaryFunction summaryFunction) /*-{ // var self = this.@com.smartgwt.client.core.DataClass::getJsObj()(); // self.summaryFunction = $entry(function(records, field) { // var recordsJ = @com.smartgwt.client.data.Record::convertToRecordArray(Lcom/google/gwt/core/client/JavaScriptObject;)(records); // var fieldJ = @com.smartgwt.client.widgets.grid.ListGridField::getOrCreateRef(Lcom/google/gwt/core/client/JavaScriptObject;)(field); // var val = summaryFunction.@com.smartgwt.client.widgets.grid.SummaryFunction::getSummaryValue([Lcom/smartgwt/client/data/Record;Lcom/smartgwt/client/widgets/grid/ListGridField;)(recordsJ, fieldJ); // return $wnd.SmartGWT.convertToPrimitiveType(val); // }); // }-*/; // // private static boolean isDataSourceField(JavaScriptObject jsObj) { // Object ref = JSOHelper.getAttributeAsObject(jsObj, SC.REF); // return ref != null && ref instanceof DataSourceField; // } /** * Height of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageHeight. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageHeight imageHeight Default value is null */ public void setImageHeight(Integer imageHeight) { setAttribute("imageHeight", imageHeight); } /** * Height of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageHeight. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return Integer */ public Integer getImageHeight() { return getAttributeAsInt("imageHeight"); } /** * Height of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageHeight. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageHeight imageHeight Default value is null */ public void setImageHeight(String imageHeight) { setAttribute("imageHeight", imageHeight); } /** * Height of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageHeight. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return String */ public String getImageHeightAsString() { return getAttributeAsString("imageHeight"); } /** * Width and height of the image-content of this field. If set as a string, represents the name of another field in the * record that holds the imageSize. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageSize imageSize Default value is null */ public void setImageSize(Integer imageSize) { setAttribute("imageSize", imageSize); } /** * Width and height of the image-content of this field. If set as a string, represents the name of another field in the * record that holds the imageSize. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return Integer */ public Integer getImageSize() { return getAttributeAsInt("imageSize"); } /** * Width and height of the image-content of this field. If set as a string, represents the name of another field in the * record that holds the imageSize. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageSize imageSize Default value is null */ public void setImageSize(String imageSize) { setAttribute("imageSize", imageSize); } /** * Width and height of the image-content of this field. If set as a string, represents the name of another field in the * record that holds the imageSize. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return String */ public String getImageSizeAsString() { return getAttributeAsString("imageSize"); } /** * Width of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageWidth. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageWidth imageWidth Default value is null */ public void setImageWidth(Integer imageWidth) { setAttribute("imageWidth", imageWidth); } /** * Width of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageWidth. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return Integer */ public Integer getImageWidth() { return getAttributeAsInt("imageWidth"); } /** * Width of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageWidth. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * @param imageWidth imageWidth Default value is null */ public void setImageWidth(String imageWidth) { setAttribute("imageWidth", imageWidth); } /** * Width of the image-content of this field. If set as a string, represents the name of another field in the record that * holds the imageWidth. Applicable only to fields of image type or fields that use a {@link * com.smartgwt.client.widgets.form.fields.ViewFileItem ViewFileItem} as an editor. * * * @return String */ public String getImageWidthAsString() { return getAttributeAsString("imageWidth"); } /** * Causes a tooltip hover to appear on the header generated for this data source field (effectively sets {@link * com.smartgwt.client.widgets.Canvas#getPrompt prompt} for the header). * * @param prompt prompt Default value is null */ public void setPrompt(String prompt) { setAttribute("prompt", prompt); } /** * Causes a tooltip hover to appear on the header generated for this field (effectively sets {@link * com.smartgwt.client.widgets.Canvas#getPrompt prompt} for the header). * * @return String */ public String getPrompt() { return getAttributeAsString("prompt"); } }