package org.vaadin.smartgwt.server.menu; import org.vaadin.smartgwt.client.data.VRecord; import org.vaadin.smartgwt.server.grid.ListGrid; /* * 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. */ /** * The Menu widget class implements interactive menu widgets, with optional icons, submenus, and shortcut keys. <p> A Menu * is initialized with an Array of items, specified as menu.data, each of which represents one row in the menu's display * and specifies the action to take when that menu item is selected. <p> Generally to create a context menu for a * component, provide a Menu instance for the <code>contextMenu</code> property. Note that some components have special * context menu support because they have distinct regions or because they have a default set of context menu actions * available. <p> If you want a button that pops up a menu when clicked, or a bar of such buttons, see the MenuButton and * MenuBar classes. * @see com.smartgwt.client.widgets.menu.Menu#getData * @see com.smartgwt.client.widgets.Canvas#getContextMenu * @see com.smartgwt.client.widgets.menu.MenuButton * @see com.smartgwt.client.widgets.menu.MenuBar */ public class Menu extends ListGrid { // implements com.smartgwt.client.widgets.menu.events.HasItemClickHandlers { // public static Menu getOrCreateRef(JavaScriptObject jsObj) { // if(jsObj == null) return null; // BaseWidget obj = BaseWidget.getRef(jsObj); // if(obj != null) { // return (Menu) obj; // } else { // return new Menu(jsObj); // } // } public Menu(){ setAlternateRecordStyles(false);scClassName = "Menu"; } // public Menu(JavaScriptObject jsObj){ // super(jsObj); // } // protected native JavaScriptObject create()/*-{ // var config = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); // var scClassName = this.@com.smartgwt.client.widgets.BaseWidget::scClassName; // var widget = $wnd.isc[scClassName].create(config); // this.@com.smartgwt.client.widgets.BaseWidget::doInit()(); // return widget; // }-*/; // ********************* Properties / Attributes *********************** /** * Explicitly disable alternateRecordStyles at the menu level by default so setting to true for all ListGrids will not * impact menus' appearance. * * @param alternateRecordStyles alternateRecordStyles Default value is false */ public void setAlternateRecordStyles(Boolean alternateRecordStyles) { setAttribute("alternateRecordStyles", alternateRecordStyles, true); } /** * Explicitly disable alternateRecordStyles at the menu level by default so setting to true for all ListGrids will not * impact menus' appearance. * * * @return Boolean */ public Boolean getAlternateRecordStyles() { return getAttributeAsBoolean("alternateRecordStyles"); } /** * When false, when a menu item is chosen (via mouse click or keyboard), the menu is not automatically hidden, staying in * place for further interactivity * * @param autoDismiss autoDismiss Default value is true * @see com.smartgwt.client.widgets.menu.Menu#setCascadeAutoDismiss */ public void setAutoDismiss(Boolean autoDismiss) { setAttribute("autoDismiss", autoDismiss, true); } /** * When false, when a menu item is chosen (via mouse click or keyboard), the menu is not automatically hidden, staying in * place for further interactivity * * * @return Boolean * @see com.smartgwt.client.widgets.menu.Menu#getCascadeAutoDismiss */ public Boolean getAutoDismiss() { return getAttributeAsBoolean("autoDismiss"); } /** * When false, when a user clicks outside the menu, or hits the Escape key, this menu will not be automatically hidden, * staying in place for further interactivity. * * @param autoDismissOnBlur autoDismissOnBlur Default value is true */ public void setAutoDismissOnBlur(Boolean autoDismissOnBlur) { setAttribute("autoDismissOnBlur", autoDismissOnBlur, true); } /** * When false, when a user clicks outside the menu, or hits the Escape key, this menu will not be automatically hidden, * staying in place for further interactivity. * * * @return Boolean */ public Boolean getAutoDismissOnBlur() { return getAttributeAsBoolean("autoDismissOnBlur"); } /** * Menus will not draw on initialization, until they're explicitly show()n * <p><b>Note : </b> This is an advanced setting</p> * * @param autoDraw autoDraw Default value is false */ public void setAutoDraw(Boolean autoDraw) { setAttribute("autoDraw", autoDraw, true); } /** * Menus will not draw on initialization, until they're explicitly show()n * * * @return Boolean */ public Boolean getAutoDraw() { return getAttributeAsBoolean("autoDraw"); } /** * CSS style for a normal cell * * @param baseStyle baseStyle Default value is "menu" */ public void setBaseStyle(String baseStyle) { setAttribute("baseStyle", baseStyle, true); } /** * CSS style for a normal cell * * * @return String */ public String getBaseStyle() { return getAttributeAsString("baseStyle"); } /** * If true, clicking or pressing Enter on a menu item that has a submenu will select that item (with standard behavior of * hiding the menus, calling click handlers, etc) instead of showing the submenu. * * @param canSelectParentItems canSelectParentItems Default value is null * @see com.smartgwt.client.docs.Selection Selection overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#menus_category_treebinding" target="examples">Tree Binding Example</a> */ public void setCanSelectParentItems(Boolean canSelectParentItems) { setAttribute("canSelectParentItems", canSelectParentItems, true); } /** * If true, clicking or pressing Enter on a menu item that has a submenu will select that item (with standard behavior of * hiding the menus, calling click handlers, etc) instead of showing the submenu. * * * @return Boolean * @see com.smartgwt.client.docs.Selection Selection overview and related methods * @see <a href="http://www.smartclient.com/smartgwt/showcase/#menus_category_treebinding" target="examples">Tree Binding Example</a> */ public Boolean getCanSelectParentItems() { return getAttributeAsBoolean("canSelectParentItems"); } /** * When true any generated submenus will inherit {@link com.smartgwt.client.widgets.menu.Menu#getAutoDismiss autoDismiss} * from this menu. * * @param cascadeAutoDismiss cascadeAutoDismiss Default value is true */ public void setCascadeAutoDismiss(Boolean cascadeAutoDismiss) { setAttribute("cascadeAutoDismiss", cascadeAutoDismiss, true); } /** * When true any generated submenus will inherit {@link com.smartgwt.client.widgets.menu.Menu#getAutoDismiss autoDismiss} * from this menu. * * * @return Boolean */ public Boolean getCascadeAutoDismiss() { return getAttributeAsBoolean("cascadeAutoDismiss"); } /** * The height of each item in the menu, in pixels. * * @param cellHeight cellHeight Default value is 20 * @see com.smartgwt.client.docs.Sizing Sizing overview and related methods */ public void setCellHeight(int cellHeight) { setAttribute("cellHeight", cellHeight, true); } /** * The height of each item in the menu, in pixels. * * * @return int * @see com.smartgwt.client.docs.Sizing Sizing overview and related methods */ public int getCellHeight() { return getAttributeAsInt("cellHeight"); } /** * The default menu width. * * @param defaultWidth defaultWidth Default value is 150 * @see com.smartgwt.client.docs.Sizing Sizing overview and related methods */ public void setDefaultWidth(int defaultWidth) { setAttribute("defaultWidth", defaultWidth, true); } /** * The default menu width. * * * @return int * @see com.smartgwt.client.docs.Sizing Sizing overview and related methods */ public int getDefaultWidth() { return getAttributeAsInt("defaultWidth"); } /** * Message to show when a menu is shown with no items. * <p><b>Note : </b> This is an advanced setting</p> * * @param emptyMessage emptyMessage Default value is "[Empty menu]" */ public void setEmptyMessage(String emptyMessage) { setAttribute("emptyMessage", emptyMessage, true); } /** * Message to show when a menu is shown with no items. * * * @return String */ public String getEmptyMessage() { return getAttributeAsString("emptyMessage"); } /** * If false, submenus will not be fetched for this menu. This can be set on a per-item basis via {@link * com.smartgwt.client.widgets.menu.MenuItem#getFetchSubmenus fetchSubmenus}. * * @param fetchSubmenus fetchSubmenus Default value is true * @throws IllegalStateException this property cannot be changed after the component has been created */ public void setFetchSubmenus(Boolean fetchSubmenus) throws IllegalStateException { setAttribute("fetchSubmenus", fetchSubmenus, false); } /** * If false, submenus will not be fetched for this menu. This can be set on a per-item basis via {@link * com.smartgwt.client.widgets.menu.MenuItem#getFetchSubmenus fetchSubmenus}. * * * @return Boolean */ public Boolean getFetchSubmenus() { return getAttributeAsBoolean("fetchSubmenus"); } /** * The default height applied to custom icons in this menu. This is used whenever item.iconHeight is not * specified. * * @param iconHeight iconHeight Default value is 16 */ public void setIconHeight(int iconHeight) { setAttribute("iconHeight", iconHeight, true); } /** * The default height applied to custom icons in this menu. This is used whenever item.iconHeight is not * specified. * * * @return int */ public int getIconHeight() { return getAttributeAsInt("iconHeight"); } /** * The default width applied to custom icons in this menu. This is used whenever item.iconWidth is not specified. * * @param iconWidth iconWidth Default value is 16 */ public void setIconWidth(int iconWidth) { setAttribute("iconWidth", iconWidth, true); } /** * The default width applied to custom icons in this menu. This is used whenever item.iconWidth is not specified. * * * @return int */ public int getIconWidth() { return getAttributeAsInt("iconWidth"); } /** * For a menu that has a {@link com.smartgwt.client.widgets.menu.MenuButton} generated for it automatically (for example * when included in a {@link com.smartgwt.client.widgets.menu.MenuBar}, the width that the MenuButton should have. If * unset, the MenuButton will be as wide as <code>menu.width</code>. * * @param menuButtonWidth menuButtonWidth Default value is null * @throws IllegalStateException this property cannot be changed after the component has been created */ public void setMenuButtonWidth(Integer menuButtonWidth) throws IllegalStateException { setAttribute("menuButtonWidth", menuButtonWidth, false); } /** * For a menu that has a {@link com.smartgwt.client.widgets.menu.MenuButton} generated for it automatically (for example * when included in a {@link com.smartgwt.client.widgets.menu.MenuBar}, the width that the MenuButton should have. If * unset, the MenuButton will be as wide as <code>menu.width</code>. * * * @return Integer */ public Integer getMenuButtonWidth() { return getAttributeAsInt("menuButtonWidth"); } /** * When this menu is shown how should it animate into view? By default the menu will just show at the specified * size/position. Options for animated show effects are <code>"fade"</code> to fade from transparent to visible, * <code>"slide"</code> to slide the menu into view, or <code>"wipe"</code> to have the menu grow into view, revealing its * content as it grows. Can be overridden by passing the 'animationEffect' parameter to 'menu.show()' * <p><b>Note : </b> This is an advanced setting</p> * * @param showAnimationEffect showAnimationEffect Default value is null */ public void setShowAnimationEffect(String showAnimationEffect) { setAttribute("showAnimationEffect", showAnimationEffect, true); } /** * When this menu is shown how should it animate into view? By default the menu will just show at the specified * size/position. Options for animated show effects are <code>"fade"</code> to fade from transparent to visible, * <code>"slide"</code> to slide the menu into view, or <code>"wipe"</code> to have the menu grow into view, revealing its * content as it grows. Can be overridden by passing the 'animationEffect' parameter to 'menu.show()' * * * @return String */ public String getShowAnimationEffect() { return getAttributeAsString("showAnimationEffect"); } /** * A boolean, indicating whether the checkmark/custom icon column should be displayed. If showIcons is not set, the menu * will show the icon column only if one of its items specifies an icon, checked, checkIf, or dynamicIcon property. * * @param showIcons showIcons Default value is true */ public void setShowIcons(Boolean showIcons) { setAttribute("showIcons", showIcons, true); } /** * A boolean, indicating whether the checkmark/custom icon column should be displayed. If showIcons is not set, the menu * will show the icon column only if one of its items specifies an icon, checked, checkIf, or dynamicIcon property. * * * @return Boolean */ public Boolean getShowIcons() { return getAttributeAsBoolean("showIcons"); } /** * A boolean, indicating whether the shortcut key column should be displayed. If showKeys is not set, the menu will show * the key column only if one of its items specifies a keys property. If showKeys is false, the keys will not be displayed, * but will still function. * * @param showKeys showKeys Default value is true */ public void setShowKeys(Boolean showKeys) { setAttribute("showKeys", showKeys, true); } /** * A boolean, indicating whether the shortcut key column should be displayed. If showKeys is not set, the menu will show * the key column only if one of its items specifies a keys property. If showKeys is false, the keys will not be displayed, * but will still function. * * * @return Boolean */ public Boolean getShowKeys() { return getAttributeAsBoolean("showKeys"); } /** * A boolean, indicating whether the submenu indicator column should be displayed. If showSubmenus is not set, the menu * will show the indicator column only if one of its items specifies a submenu property. If showSubmenus is false, the * submenu arrows will not be displayed, but submenus will still appear on rollover. * * @param showSubmenus showSubmenus Default value is true */ public void setShowSubmenus(Boolean showSubmenus) { setAttribute("showSubmenus", showSubmenus, true); } /** * A boolean, indicating whether the submenu indicator column should be displayed. If showSubmenus is not set, the menu * will show the indicator column only if one of its items specifies a submenu property. If showSubmenus is false, the * submenu arrows will not be displayed, but submenus will still appear on rollover. * * * @return Boolean */ public Boolean getShowSubmenus() { return getAttributeAsBoolean("showSubmenus"); } /** * Should submenus show up on our left or right. Can validly be set to <code>"left"</code> or <code>"right"</code> * * @param submenuDirection submenuDirection Default value is "right" */ public void setSubmenuDirection(String submenuDirection) { setAttribute("submenuDirection", submenuDirection, true); } /** * Should submenus show up on our left or right. Can validly be set to <code>"left"</code> or <code>"right"</code> * * * @return String */ public String getSubmenuDirection() { return getAttributeAsString("submenuDirection"); } /** * Optional target canvas for this menu. Available as a parameter to dynamic menuItem configuration methods such as {@link * com.smartgwt.client.widgets.menu.MenuItem#checkIf MenuItem.checkIf}. <P> Whenever a Menu is shown as a contextMenu by a * widget due to {@link com.smartgwt.client.widgets.Canvas#getContextMenu contextMenu} being set, <code>menu.target</code> * is automatically set to the widget that showed the contextMenu. <P> If this item has any {@link * com.smartgwt.client.widgets.menu.MenuItem#getSubmenu submenus} the <code>target</code> will be propagated down to these * child menus. * * @param target target Default value is null */ // public void setTarget(Canvas target) { // setAttribute("target", target == null ? null : target.getOrCreateJsObj(), true); // } /** * Optional target canvas for this menu. Available as a parameter to dynamic menuItem configuration methods such as {@link * com.smartgwt.client.widgets.menu.MenuItem#checkIf MenuItem.checkIf}. <P> Whenever a Menu is shown as a contextMenu by a * widget due to {@link com.smartgwt.client.widgets.Canvas#getContextMenu contextMenu} being set, <code>menu.target</code> * is automatically set to the widget that showed the contextMenu. <P> If this item has any {@link * com.smartgwt.client.widgets.menu.MenuItem#getSubmenu submenus} the <code>target</code> will be propagated down to these * child menus. * * * @return Canvas */ // public Canvas getTarget() { // return Canvas.getOrCreateRef(getAttributeAsJavaScriptObject("target")); // } /** * A boolean indicating whether this menu should use shortcut keys. Set useKeys to false in a menu's initialization block * to explicitly disable shortcut keys. * * @param useKeys useKeys Default value is true */ public void setUseKeys(Boolean useKeys) { setAttribute("useKeys", useKeys, true); } /** * A boolean indicating whether this menu should use shortcut keys. Set useKeys to false in a menu's initialization block * to explicitly disable shortcut keys. * * * @return Boolean */ public Boolean getUseKeys() { return getAttributeAsBoolean("useKeys"); } // ********************* Methods *********************** // /** // * Get a particular MenuItem by index. <P> If passed a MenuItem, returns it. // * @param item index of the MenuItem // * // * @return the MenuItem, Pointer to the item, or null if not defined // */ // public native MenuItem getItem(int item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var ret = self.getItem(item); // if(ret == null || ret === undefined) return null; // var retVal = @com.smartgwt.client.core.RefDataClass::getRef(Lcom/google/gwt/core/client/JavaScriptObject;)(ret); // if(retVal == null) { // retVal = @com.smartgwt.client.widgets.menu.MenuItem::new(Lcom/google/gwt/core/client/JavaScriptObject;)(ret); // } // return retVal; // }-*/; // // /** // * Hide the context menu - alias for hide() // */ // public native void hideContextMenu() /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // self.hideContextMenu(); // }-*/; // /** // * Add a itemClick handler. // * <p> // * Executed when a menu item with no click handler is clicked by the user. This itemClick handler must be // * specified as a function. It is passed an item parameter that is a reference to the clicked menu item. // * // * @param handler the itemClick handler // * @return {@link HandlerRegistration} used to remove this handler // */ // public HandlerRegistration addItemClickHandler(com.smartgwt.client.widgets.menu.events.ItemClickHandler handler) { // if(getHandlerCount(com.smartgwt.client.widgets.menu.events.ItemClickEvent.getType()) == 0) setupItemClickEvent(); // return doAddHandler(handler, com.smartgwt.client.widgets.menu.events.ItemClickEvent.getType()); // } // // private native void setupItemClickEvent() /*-{ // var obj = null; // var selfJ = this; // if(this.@com.smartgwt.client.widgets.BaseWidget::isCreated()()) { // obj = this.@com.smartgwt.client.widgets.BaseWidget::getJsObj()(); // obj.addProperties({itemClick:$debox($entry(function(){ // var param = {"item" : arguments[0], "colNum" : arguments[1]}; // var event = @com.smartgwt.client.widgets.menu.events.ItemClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); // selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); // var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); // return !ret; // })) // }); // } else { // obj = this.@com.smartgwt.client.widgets.BaseWidget::getConfig()(); // obj.itemClick = $debox($entry(function(){ // var param = {"item" : arguments[0], "colNum" : arguments[1]}; // var event = @com.smartgwt.client.widgets.menu.events.ItemClickEvent::new(Lcom/google/gwt/core/client/JavaScriptObject;)(param); // selfJ.@com.smartgwt.client.widgets.BaseWidget::fireEvent(Lcom/google/gwt/event/shared/GwtEvent;)(event); // var ret = event.@com.smartgwt.client.event.Cancellable::isCancelled()(); // return !ret; // })); // } // }-*/; // // /** // * Show this menu as a context menu, that is, immediately adjacent to the current mouse position. // * // * @return false == stop processing this event // * @see com.smartgwt.client.docs.Visibility Visibility overview and related methods // */ // public native Boolean showContextMenu() /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.showContextMenu(); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // // ********************* Static Methods *********************** // // /** // * Hide all menus that are currently open. This method is useful to hide the current set of menus including submenus, and // * dismiss the menu's clickMask. // */ // public static native void hideAllMenus() /*-{ // $wnd.isc.Menu.hideAllMenus(); // }-*/; // /** // * Class level method to set the default properties of this class. If set, then all subsequent instances of this // * class will automatically have the default properties that were set when this method was called. This is a powerful // * feature that eliminates the need for users to create a separate hierarchy of subclasses that only alter the default // * properties of this class. Can also be used for skinning / styling purposes. // * <P> // * <b>Note:</b> This method is intended for setting default attributes only and will effect all instances of the // * underlying class (including those automatically generated in JavaScript). // * This method should not be used to apply standard EventHandlers or override methods for // * a class - use a custom subclass instead. // * // * @param menuProperties properties that should be used as new defaults when instances of this class are created // */ // public static native void setDefaultProperties(Menu menuProperties) /*-{ // var properties = $wnd.isc.addProperties({},menuProperties.@com.smartgwt.client.widgets.BaseWidget::getConfig()()); // delete properties.ID; // $wnd.isc.Menu.addProperties(properties); // }-*/; // *********************************************************** //override to avoid ListGrid's onInit behavior protected void onInit_ListGrid() { } /** * An array of menuItem objects, specifying the menu items this menu should show. * * @param data menu items */ public void setData(MenuItem... data) { setAttribute("data", data, true); } /** * An array of Record objects, specifying the data to be used to populate the DataBoundComponent. Note that not * all DataBoundComponents observe the changes to the data to redraw themselves. Refer to the version of setData * that accepts component specific records. * * @param data array of Record objects. * @see #setData(MenuItem[]) */ public void setData(VRecord[] data) { setAttribute("data", data, true); } /** * Display a hierarchical set of menu items and submenus based on a * Tree of data. * * @param data Tree */ // public void setData(Tree data) { // setAttribute("data", data == null ? null : data.getOrCreateJsObj(), true); // } /** * An List of Record objects, specifying the data to be used to populate the DataBoundComponent. Note that not * all DataBoundComponents observe the changes to the data to redraw themselves. Refer to the version of setData * that accepts component specific records. * * @param data List of Records */ // public void setData(RecordList data) { // setAttribute("data", data == null ? null : data.getOrCreateJsObj(), true); // } /** * Synonym for {@link com.smartgwt.client.widgets.menu.Menu#getData data} Synonym for {@link * com.smartgwt.client.widgets.menu.Menu#setData}. * * @param items new items for this menu. Default value is null */ public void setItems(MenuItem... items) { setAttribute("items", items, true); } /** * Return the menu items. * * @return the menu items */ // public MenuItem[] getItems() { // JavaScriptObject dataJS = getAttributeAsJavaScriptObject("data"); // MenuItem[] data = convertToMenuItemArray(dataJS); // return data; // } // private static MenuItem[] convertToMenuItemArray(JavaScriptObject nativeArray) { // if (nativeArray == null) { // return new MenuItem[]{}; // } // JavaScriptObject[] componentsj = JSOHelper.toArray(nativeArray); // MenuItem[] objects = new MenuItem[componentsj.length]; // for (int i = 0; i < componentsj.length; i++) { // JavaScriptObject componentJS = componentsj[i]; // MenuItem obj = MenuItem.getOrCreateRef(componentJS); // objects[i] = obj; // } // return objects; // } /** * When used in a MenuBar, the title of the menu button create will be the title of the Menu. * * @param title the title */ public void setTitle(String title) { setAttribute("title", title, true); } // public native void removeItem(MenuItem item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // self.removeItem(itemJS); // }-*/; // // public void addItem(MenuItem item) { // JavaScriptObject itemJS = item.getJsObj(); // // if (isCreated()) { // addItemPostCreate(itemJS); // // } else { // addItemPreCreate(itemJS); // } // } // // private native void addItemPreCreate(JavaScriptObject itemJS) /*-{ // var config = this.@com.smartgwt.client.widgets.BaseWidget::config; // // if(!config.items) { // config.items = @com.smartgwt.client.util.JSOHelper::createJavaScriptArray()(); // } // config.items.push(itemJS); // }-*/; // // private native void addItemPostCreate(JavaScriptObject itemJS) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // self.addItem(itemJS); // }-*/; // // public native void addItem(MenuItem item, int index) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // self.addItem(itemJS, index); // }-*/; // // /** // * Given a MenuItem, return it's index in the items array. // * @param item the MenuItem // * // * @return index of the item, or -1 if not defined. // */ // public native int getItemNum(MenuItem item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // return self.getItemNum(itemJS); // }-*/; // // /** // * Set arbitrary properties for a particular menu item. // * @param item index of the MenuItem // * @param properties properties to apply to the item // */ // public native void setItemProperties(int item, MenuItem properties) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var props = properties.@com.smartgwt.client.widgets.menu.MenuItem::getJsObj()(); // self.setItemProperties(item, props); // }-*/; // // /** // * Checks or unchecks the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the checked state. // * @param item MenuItem in question, or it's index // * // * @return true if the checked state was changed // */ // public native Boolean setItemChecked(MenuItem item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemChecked(itemJS); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Checks or unchecks the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the checked state. // * @param item MenuItem in question, or it's index // * // * @return true if the checked state was changed // */ // public native Boolean setItemChecked(int item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemChecked(item); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // // /** // * Checks or unchecks the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the checked state. // * @param item MenuItem in question, or it's index // * @param newState true to check the menu item, false to uncheck it. If not passed, true is assumed // * // * @return true if the checked state was changed // */ // public native Boolean setItemChecked(MenuItem item, boolean newState) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemChecked(itemJS, newState); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Checks or unchecks the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the checked state. // * @param item MenuItem in question, or it's index // * @param newState true to check the menu item, false to uncheck it. If not passed, true is assumed // * // * @return true if the checked state was changed // */ // public native Boolean setItemChecked(int item, boolean newState) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemChecked(item, newState); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Enables or disables the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the enabled state. // * @param item MenuItem in question, or it's index // * // * @return true if the enabled state was changed // */ // public native Boolean setItemEnabled(MenuItem item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemEnabled(itemJS); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Enables or disables the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the enabled state. // * @param item MenuItem in question, or it's index // * // * @return true if the enabled state was changed // */ // public native Boolean setItemEnabled(int item) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemEnabled(item); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // // /** // * Enables or disables the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the enabled state. // * @param item MenuItem in question, or it's index // * @param newState true to enable the menu item, false to disable it. If not passed, true is assumed // * // * @return true if the enabled state was changed // */ // public native Boolean setItemEnabled(MenuItem item, boolean newState) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemEnabled(itemJS, newState); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Enables or disables the menu item according to the value of newState, and redraws the menu if necessary. Returns true if // * there's a change in the enabled state. // * @param item MenuItem in question, or it's index // * @param newState true to enable the menu item, false to disable it. If not passed, true is assumed // * // * @return true if the enabled state was changed // */ // public native Boolean setItemEnabled(int item, boolean newState) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemEnabled(item, newState); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // // /** // * Sets the icon and disabled icon (if specified) for a particular menu item and redraws the menu if necessary. Returns // * true if the icon changed. // * @param item MenuItem in question, or it's index // * @param newIcon new icon URL // * // * @return true == something changed, redraw is called for // */ // public native Boolean setItemIcon(MenuItem item, String newIcon) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemIcon(itemJS, newIcon); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Sets the icon and disabled icon (if specified) for a particular menu item and redraws the menu if necessary. Returns // * true if the icon changed. // * @param item MenuItem in question, or it's index // * @param newIcon new icon URL // * // * @return true == something changed, redraw is called for // */ // public native Boolean setItemIcon(int item, String newIcon) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemIcon(item, newIcon); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Sets the icon and disabled icon (if specified) for a particular menu item and redraws the menu if necessary. Returns // * true if the icon changed. // * @param item MenuItem in question, or it's index // * @param newIcon new icon URL // * @param newDisabledIcon new icon URL for disabled image // * // * @return true == something changed, redraw is called for // */ // public native Boolean setItemIcon(MenuItem item, String newIcon, String newDisabledIcon) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemIcon(itemJS, newIcon, newDisabledIcon); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Sets the icon and disabled icon (if specified) for a particular menu item and redraws the menu if necessary. Returns // * true if the icon changed. // * @param item MenuItem in question, or it's index // * @param newIcon new icon URL // * @param newDisabledIcon new icon URL for disabled image // * // * @return true == something changed, redraw is called for // */ // public native Boolean setItemIcon(int item, String newIcon, String newDisabledIcon) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemIcon(item, newIcon, newDisabledIcon); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Sets the title of a particular menu item to the string specified by newTitle and redraws the menu if necessary. // * @param item MenuItem in question, or it's index // * @param newTitle new title // * // * @return true if the title was changed, and false otherwise // */ // public native Boolean setItemTitle(MenuItem item, String newTitle) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var itemJS = item.@com.smartgwt.client.core.DataClass::getJsObj()(); // var retVal =self.setItemTitle(itemJS, newTitle); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; // // /** // * Sets the title of a particular menu item to the string specified by newTitle and redraws the menu if necessary. // * @param item MenuItem in question, or it's index // * @param newTitle new title // * // * @return true if the title was changed, and false otherwise // */ // public native Boolean setItemTitle(int item, String newTitle) /*-{ // var self = this.@com.smartgwt.client.widgets.BaseWidget::getOrCreateJsObj()(); // var retVal =self.setItemTitle(item, newTitle); // if(retVal == null || retVal === undefined) { // return null; // } else { // return @com.smartgwt.client.util.JSOHelper::toBoolean(Z)(retVal); // } // }-*/; }