/* * 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 com.smartgwt.client.widgets.form.fields; import com.smartgwt.client.event.*; import com.smartgwt.client.core.*; import com.smartgwt.client.types.*; import com.smartgwt.client.data.*; import com.smartgwt.client.data.events.*; import com.smartgwt.client.rpc.*; import com.smartgwt.client.widgets.*; import com.smartgwt.client.widgets.events.*; import com.smartgwt.client.widgets.form.*; import com.smartgwt.client.widgets.form.validator.*; import com.smartgwt.client.widgets.form.fields.*; import com.smartgwt.client.widgets.tile.*; import com.smartgwt.client.widgets.tile.events.*; import com.smartgwt.client.widgets.grid.*; import com.smartgwt.client.widgets.grid.events.*; import com.smartgwt.client.widgets.chart.*; import com.smartgwt.client.widgets.layout.*; import com.smartgwt.client.widgets.layout.events.*; import com.smartgwt.client.widgets.menu.*; import com.smartgwt.client.widgets.tab.*; import com.smartgwt.client.widgets.toolbar.*; import com.smartgwt.client.widgets.tree.*; import com.smartgwt.client.widgets.tree.events.*; import com.smartgwt.client.widgets.viewer.*; import com.smartgwt.client.widgets.calendar.*; import com.smartgwt.client.widgets.calendar.events.*; import com.smartgwt.client.widgets.cube.*; import java.util.Date; import java.util.List; import java.util.Map; import java.util.HashMap; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.user.client.Element; import com.smartgwt.client.util.*; import com.google.gwt.event.shared.*; import com.google.gwt.event.shared.HasHandlers; /** * Form item icon descriptor objects used by Form Items to specify the appearance and behavior of icons displayed after * the item in the page flow. * @see com.smartgwt.client.widgets.form.fields.FormItem#getIcons */ public class FormItemIcon extends DataClass implements com.smartgwt.client.widgets.form.fields.events.HasFormItemClickHandlers { public static FormItemIcon getOrCreateRef(JavaScriptObject jsObj) { if(jsObj == null) return null; return new FormItemIcon(jsObj); } public FormItemIcon(){ } public FormItemIcon(JavaScriptObject jsObj){ super(jsObj); } // ********************* Properties / Attributes *********************** /** * If set, this property determines the height of this icon in px. If unset the form item's <code>iconHeight</code> * property will be used instead. * * @param height height Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setIconHeight */ public void setHeight(Integer height) { setAttribute("height", height); } /** * If set, this property determines the height of this icon in px. If unset the form item's <code>iconHeight</code> * property will be used instead. * * * @return Integer * @see com.smartgwt.client.widgets.form.fields.FormItem#getIconHeight */ public Integer getHeight() { return getAttributeAsInt("height"); } /** * Identifier for this form item icon. This identifier (if set) should be unique within this form item and may be used to * get a pointer to the icon object via {@link com.smartgwt.client.widgets.form.fields.FormItem#getIcon FormItem.getIcon}. * * @param name name Default value is null */ public void setName(String name) { setAttribute("name", name); } /** * Identifier for this form item icon. This identifier (if set) should be unique within this form item and may be used to * get a pointer to the icon object via {@link com.smartgwt.client.widgets.form.fields.FormItem#getIcon FormItem.getIcon}. * * * @return String */ public String getName() { return getAttributeAsString("name"); } /** * If <code>icon.neverDisable</code> is true, when this form item is disabled, the icon will remain enabled. Note that * disabling the entire form will disable all items, together with their icons including those marked as neverDisable - * this property only has an effect if the form is enabled and a specific item is disabled within it. * <p><b>Note : </b> This is an advanced setting</p> * * @param neverDisable neverDisable Default value is null */ public void setNeverDisable(Boolean neverDisable) { setAttribute("neverDisable", neverDisable); } /** * If <code>icon.neverDisable</code> is true, when this form item is disabled, the icon will remain enabled. Note that * disabling the entire form will disable all items, together with their icons including those marked as neverDisable - * this property only has an effect if the form is enabled and a specific item is disabled within it. * * * @return Boolean */ public Boolean getNeverDisable() { return getAttributeAsBoolean("neverDisable"); } /** * If set, this property will be displayed as a prompt (and tooltip text) for this form item icon. <P> If unset the form * item's <code>iconPrompt</code> property will be used instead. * <p><b>Note : </b> This is an advanced setting</p> * * @param prompt prompt Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setIconPrompt */ public void setPrompt(String prompt) { setAttribute("prompt", prompt); } /** * If set, this property will be displayed as a prompt (and tooltip text) for this form item icon. <P> If unset the form * item's <code>iconPrompt</code> property will be used instead. * * * @return String * @see com.smartgwt.client.widgets.form.fields.FormItem#getIconPrompt */ public String getPrompt() { return getAttributeAsString("prompt"); } /** * Should this icon's image switch to the appropriate "focused" source when the user puts focus on the form item or icon? * <p><b>Note : </b> This is an advanced setting</p> * * @param showFocused showFocused Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setShowFocusedIcons * @see com.smartgwt.client.widgets.form.fields.FormItemIcon#setShowFocusedWithItem */ public void setShowFocused(Boolean showFocused) { setAttribute("showFocused", showFocused); } /** * Should this icon's image switch to the appropriate "focused" source when the user puts focus on the form item or icon? * * * @return Boolean * @see com.smartgwt.client.widgets.form.fields.FormItem#getShowFocusedIcons * @see com.smartgwt.client.widgets.form.fields.FormItemIcon#getShowFocusedWithItem */ public Boolean getShowFocused() { return getAttributeAsBoolean("showFocused"); } /** * If this icon will be updated to show focus (see {@link * com.smartgwt.client.widgets.form.fields.FormItemIcon#getShowFocused showFocused}, {@link * com.smartgwt.client.widgets.form.fields.FormItem#getShowFocusedIcons showFocusedIcons}), this property governs whether * the focused state should be shown when the item as a whole receives focus or just if the icon receives focus. If this * property is unset, default behavior is to show focused state when the item receives focus. * <p><b>Note : </b> This is an advanced setting</p> * * @param showFocusedWithItem showFocusedWithItem Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setShowFocusedIcons * @see com.smartgwt.client.widgets.form.fields.FormItemIcon#setShowFocused */ public void setShowFocusedWithItem(Boolean showFocusedWithItem) { setAttribute("showFocusedWithItem", showFocusedWithItem); } /** * If this icon will be updated to show focus (see {@link * com.smartgwt.client.widgets.form.fields.FormItemIcon#getShowFocused showFocused}, {@link * com.smartgwt.client.widgets.form.fields.FormItem#getShowFocusedIcons showFocusedIcons}), this property governs whether * the focused state should be shown when the item as a whole receives focus or just if the icon receives focus. If this * property is unset, default behavior is to show focused state when the item receives focus. * * * @return Boolean * @see com.smartgwt.client.widgets.form.fields.FormItem#getShowFocusedIcons * @see com.smartgwt.client.widgets.form.fields.FormItemIcon#getShowFocused */ public Boolean getShowFocusedWithItem() { return getAttributeAsBoolean("showFocusedWithItem"); } /** * Should this icon's image switch to the appropriate "over" source when the user rolls over or focuses on the icon? * <p><b>Note : </b> This is an advanced setting</p> * * @param showOver showOver Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setShowOverIcons */ public void setShowOver(Boolean showOver) { setAttribute("showOver", showOver); } /** * Should this icon's image switch to the appropriate "over" source when the user rolls over or focuses on the icon? * * * @return Boolean * @see com.smartgwt.client.widgets.form.fields.FormItem#getShowOverIcons */ public Boolean getShowOver() { return getAttributeAsBoolean("showOver"); } /** * If set, this property determines this icon's image source. If unset the form item's <code>defaultIconSrc</code> property * will be used instead.<br> As with <code>defaultIconSrc</code> this URL will be modified by adding "_Over" or "_Disabled" * if appropriate to show the icons over or disabled state. * * @param src src Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setDefaultIconSrc * @see <a href="http://www.smartclient.com/smartgwt/showcase/#form_details_icons" target="examples">Icons Example</a> */ public void setSrc(String src) { setAttribute("src", src); } /** * If set, this property determines this icon's image source. If unset the form item's <code>defaultIconSrc</code> property * will be used instead.<br> As with <code>defaultIconSrc</code> this URL will be modified by adding "_Over" or "_Disabled" * if appropriate to show the icons over or disabled state. * * * @return String * @see com.smartgwt.client.widgets.form.fields.FormItem#getDefaultIconSrc * @see <a href="http://www.smartclient.com/smartgwt/showcase/#form_details_icons" target="examples">Icons Example</a> */ public String getSrc() { return getAttributeAsString("src"); } /** * TabIndex for this formItemIcon. <P> Set to -1 to remove the icon from the tab order, but be cautious doing so: if the * icon triggers important application functionality that cannot otherwise be accessed via the keyboard, it would be a * violation of accessibility standard to remove the icon from the tab order. <P> Any usage other than setting to -1 is * extremely advanced in the same way as using {@link com.smartgwt.client.widgets.form.fields.FormItem#getGlobalTabIndex * globalTabIndex}. * <p><b>Note : </b> This is an advanced setting</p> * * @param tabIndex tabIndex Default value is null */ public void setTabIndex(Integer tabIndex) { setAttribute("tabIndex", tabIndex); } /** * TabIndex for this formItemIcon. <P> Set to -1 to remove the icon from the tab order, but be cautious doing so: if the * icon triggers important application functionality that cannot otherwise be accessed via the keyboard, it would be a * violation of accessibility standard to remove the icon from the tab order. <P> Any usage other than setting to -1 is * extremely advanced in the same way as using {@link com.smartgwt.client.widgets.form.fields.FormItem#getGlobalTabIndex * globalTabIndex}. * * * @return Integer */ public Integer getTabIndex() { return getAttributeAsInt("tabIndex"); } /** * If set, this property determines the width of this icon in px. If unset the form item's <code>iconWidth</code> * property will be used instead. * * @param width width Default value is null * @see com.smartgwt.client.widgets.form.fields.FormItem#setIconWidth */ public void setWidth(Integer width) { setAttribute("width", width); } /** * If set, this property determines the width of this icon in px. If unset the form item's <code>iconWidth</code> * property will be used instead. * * * @return Integer * @see com.smartgwt.client.widgets.form.fields.FormItem#getIconWidth */ public Integer getWidth() { return getAttributeAsInt("width"); } // ********************* Methods *********************** /** * Add a formItemClick handler. * <p> * StringMethod action to fire when this icon is clicked If unset the form item's <code>iconClick</code> method will * be fired instead (if specified). * * @param handler the formItemClick handler * @return {@link HandlerRegistration} used to remove this handler */ public HandlerRegistration addFormItemClickHandler(com.smartgwt.client.widgets.form.fields.events.FormItemClickHandler handler) { if(getHandlerCount(com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent.getType()) == 0) setupFormItemClickEvent(); return doAddHandler(handler, com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent.getType()); } private native void setupFormItemClickEvent() /*-{ var obj = null; obj = this.@com.smartgwt.client.core.DataClass::getJsObj()(); var selfJ = this; obj.click = $entry(function(){ var param = {"form" : arguments[0], "item" : arguments[1], "icon" : arguments[2]}; var event = @com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); selfJ.@com.smartgwt.client.core.DataClass::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); }); }-*/; /** * StringMethod action to fire when this icon has focus and receives a keypress event. If unset the form item's * <code>iconKeyPress</code> method will be fired instead (if specified). * @param keyName Name of the key pressed * @param character character produced by the keypress * @param form The Dynamic Form to which this icon's item belongs. * @param item The Form Item containing this icon * @param icon A pointer to the form item icon */ public native void keyPress(String keyName, char character, DynamicForm form, FormItem item, FormItemIcon icon) /*-{ var self = this.@com.smartgwt.client.core.DataClass::getJsObj()(); self.keyPress(keyName, character, form.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(), item.@com.smartgwt.client.core.DataClass::getJsObj()(), icon.@com.smartgwt.client.core.DataClass::getJsObj()()); }-*/; // ********************* Static Methods *********************** // *********************************************************** public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FormItemIcon that = (FormItemIcon) o; if (getSrc() != null ? !getSrc().equals(that.getSrc()) : that.getSrc() != null) return false; return true; } public int hashCode() { return getSrc() != null ? getSrc().hashCode() : 0; } }