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);
// }
// }-*/;
}