package org.waveprotocol.wave.client.doodad.widget.jso; import org.waveprotocol.wave.client.doodad.widget.WidgetDoodad; import org.waveprotocol.wave.client.editor.content.ContentElement; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Element; /** * A native JavaScript view of a Widget * * @author pablojan@gmail.com (Pablo Ojanguren) * */ public class JsoWidget extends JavaScriptObject { public static native JsoWidget create(Element domElement, ContentElement contentElement) /*-{ var jso = { getElement: function() { return domElement; }, setState: function(state) { @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::setState(Lorg/waveprotocol/wave/client/editor/content/ContentElement;Ljava/lang/String;)(contentElement, state); }, getState: function() { return @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::getState(Lorg/waveprotocol/wave/client/editor/content/ContentElement;)(contentElement); }, getType: function() { return @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::getType(Lorg/waveprotocol/wave/client/editor/content/ContentElement;)(contentElement); }, getId: function() { return @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::getId(Lorg/waveprotocol/wave/client/editor/content/ContentElement;)(contentElement); }, remove: function() { @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::remove(Lorg/waveprotocol/wave/client/editor/content/ContentElement;)(contentElement); }, isOk: function() { return @org.waveprotocol.wave.client.doodad.widget.jso.JsoWidget::isOk(Lorg/waveprotocol/wave/client/editor/content/ContentElement;)(contentElement); } }; return jso; }-*/; protected JsoWidget() { } private static void setState(ContentElement contentElement, String state) { contentElement.getContext().document().setElementAttribute(contentElement, WidgetDoodad.ATTR_STATE, state); } private static String getState(ContentElement contentElement) { return contentElement.getContext().document().getAttribute(contentElement, WidgetDoodad.ATTR_STATE); } private static String getType(ContentElement contentElement) { return contentElement.getContext().document().getAttribute(contentElement, WidgetDoodad.ATTR_TYPE); } private static String getId(ContentElement contentElement) { return contentElement.getContext().document().getAttribute(contentElement, WidgetDoodad.ATTR_ID); } private static boolean isOk(ContentElement contentElement) { return contentElement != null && contentElement.isConsistent() && contentElement.isContentAttached(); } private static void remove(ContentElement contentElement) { contentElement.getContext().document().deleteNode(contentElement); } }