package com.eas.menu;
import com.eas.core.HasPublished;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.ui.MenuItem;
import com.google.gwt.user.client.ui.UIObject;
public class PlatypusMenu extends PlatypusMenuBar {
protected String text;
public PlatypusMenu() {
super(true);
setAutoOpen(true);
}
@Override
public boolean add(UIObject aChild) {
if (aChild instanceof PlatypusMenu) {
PlatypusMenu subMenu = (PlatypusMenu) aChild;
MenuItem item = new PlatypusMenuItemImageText();
item.setSubMenu(subMenu);
item.setText(subMenu.getText());
subMenu.setParentItem(item);
addItem(item);
allItems.add(aChild);
return true;
} else
return super.add(aChild);
}
public String getText() {
return text;
}
public void setText(String aValue) {
text = aValue;
if (parentItem != null)
parentItem.setText(text);
}
@Override
public void setParentItem(MenuItem aItem) {
super.setParentItem(aItem);
if (parentItem != null)
parentItem.setText(text);
}
@Override
public void setPublished(JavaScriptObject aValue) {
if (published != aValue) {
super.setPublished(aValue);
if (published != null) {
publish(this, aValue);
}
}
}
private native static void publish(HasPublished aWidget, JavaScriptObject published)/*-{
Object.defineProperty(published, "text", {
get : function() {
return aWidget.@com.eas.menu.PlatypusMenu::getText()();
},
set : function(aValue) {
aWidget.@com.eas.menu.PlatypusMenu::setText(Ljava/lang/String;)(aValue!=null?''+aValue:null);
}
});
}-*/;
}