package com.eas.menu; import com.eas.core.HasPublished; import com.eas.ui.HasEventsExecutor; import com.eas.ui.HasJsFacade; import com.eas.ui.events.ActionEvent; import com.eas.ui.events.ActionHandler; import com.eas.ui.events.EventsExecutor; import com.eas.ui.events.HasActionHandlers; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.Scheduler.ScheduledCommand; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.safehtml.shared.SafeUri; public class PlatypusMenuItemImageText extends MenuItemImageText implements HasActionHandlers, HasJsFacade, HasEventsExecutor { protected EventsExecutor eventsExecutor; protected JavaScriptObject published; protected String name; // protected ScheduledCommand onExecute; protected ImageResource image; public PlatypusMenuItemImageText() { this("", false, null, null); } public PlatypusMenuItemImageText(String aText, boolean asHtml, SafeUri aImageUri, ScheduledCommand aCommand) { super(aText, asHtml, aImageUri, null); onExecute = aCommand; setScheduledCommand(new ScheduledCommand() { @Override public void execute() { ActionEvent.fire(PlatypusMenuItemImageText.this, PlatypusMenuItemImageText.this); if(onExecute != null){ onExecute.execute(); } } }); } @Override public HandlerRegistration addActionHandler(ActionHandler handler) { return super.addHandler(handler, ActionEvent.getType()); } @Override public EventsExecutor getEventsExecutor() { return eventsExecutor; } @Override public void setEventsExecutor(EventsExecutor aExecutor) { eventsExecutor = aExecutor; } @Override public String getJsName() { return name; } @Override public void setJsName(String aValue) { name = aValue; } public ImageResource getIcon(){ return image; } public void setIcon(ImageResource aIcon){ image = aIcon; super.setImageUri(image != null ? image.getSafeUri() : null); } @Override public JavaScriptObject getPublished() { return published; } @Override public void setPublished(JavaScriptObject aValue) { if (published != aValue) { published = aValue; if (published != null) { publish(this, aValue); } } } private native static void publish(HasPublished aWidget, JavaScriptObject aPublished)/*-{ Object.defineProperty(aPublished, "text", { get : function() { return aWidget.@com.eas.menu.PlatypusMenuItemImageText::getText()(); }, set : function(aValue) { aWidget.@com.eas.menu.PlatypusMenuItemImageText::setText(Ljava/lang/String;)(aValue); } }); Object.defineProperty(aPublished, "icon", { get : function() { return aWidget.@com.eas.menu.PlatypusMenuItemImageText::getIcon()(); }, set : function(aValue) { aWidget.@com.eas.menu.PlatypusMenuItemImageText::setIcon(Lcom/google/gwt/resources/client/ImageResource;)(aValue); } }); }-*/; }