package com.eas.menu; import com.eas.core.Utils; import com.eas.ui.PublishedComponent; import com.google.gwt.core.client.JavaScriptObject; public class MenuPublisher { private static Utils.JsObject constructors = JavaScriptObject.createObject().cast(); private static JavaScriptObject getPublisher(String aClassName){ JavaScriptObject constr = constructors.getJs(aClassName); if(constr == null) throw new IllegalStateException("Constructor for " + aClassName + " was not found."); return constr; } public static native JavaScriptObject getConstructors()/*-{ return @com.eas.menu.MenuPublisher::constructors; }-*/; public static void putPublisher(String aClassName, JavaScriptObject aPublisher){ constructors.setJs(aClassName, aPublisher); } public native static PublishedComponent publish(PlatypusMenuItemSeparator aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('MenuSeparator'); return new constr(aComponent); }-*/; public native static PublishedComponent publish(PlatypusMenuBar aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('MenuBar'); return new constr(aComponent); }-*/; public native static PublishedComponent publish(PlatypusMenu aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('Menu'); return new constr(null, aComponent); }-*/; public native static PublishedComponent publishPopup(PlatypusMenu aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('PopupMenu'); return new constr(aComponent); }-*/; public native static PublishedComponent publish(PlatypusMenuItemImageText aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('MenuItem'); return new constr(null, null, null, aComponent); }-*/; public native static PublishedComponent publish(PlatypusMenuItemCheckBox aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('CheckMenuItem'); return new constr(null, null, null, aComponent); }-*/; public native static JavaScriptObject publish(PlatypusMenuItemRadioButton aComponent)/*-{ var constr = @com.eas.menu.MenuPublisher::getPublisher(Ljava/lang/String;)('RadioMenuItem'); return new constr(null, null, null, aComponent); }-*/; }