From 5db327df2c7312a6872e7b0bc63ba1b4a66cffec Mon Sep 17 00:00:00 2001 From: Manolo Carrasco Date: Wed, 14 Mar 2012 16:52:10 +0000 Subject: jsquery re-factoring --- .../src/main/java/gwtquery/jsquery/JsQuery.gwt.xml | 5 +- .../main/java/gwtquery/jsquery/JsQueryXs.gwt.xml | 3 - .../src/main/java/gwtquery/jsquery/client/JQ.java | 459 --------------------- .../main/java/gwtquery/jsquery/client/JsMenu.java | 6 +- .../main/java/gwtquery/jsquery/client/JsQuery.java | 25 +- .../gwtquery/jsquery/client/OverlayGQuery.java | 387 +++++++++++++++++ .../java/gwtquery/jsquery/client/utils/JsQAux.java | 129 ++++++ 7 files changed, 534 insertions(+), 480 deletions(-) delete mode 100644 jsquery/src/main/java/gwtquery/jsquery/client/JQ.java create mode 100644 jsquery/src/main/java/gwtquery/jsquery/client/OverlayGQuery.java create mode 100644 jsquery/src/main/java/gwtquery/jsquery/client/utils/JsQAux.java (limited to 'jsquery/src') diff --git a/jsquery/src/main/java/gwtquery/jsquery/JsQuery.gwt.xml b/jsquery/src/main/java/gwtquery/jsquery/JsQuery.gwt.xml index 2dc6ab94..ace3971e 100644 --- a/jsquery/src/main/java/gwtquery/jsquery/JsQuery.gwt.xml +++ b/jsquery/src/main/java/gwtquery/jsquery/JsQuery.gwt.xml @@ -5,7 +5,8 @@ - - + + + diff --git a/jsquery/src/main/java/gwtquery/jsquery/JsQueryXs.gwt.xml b/jsquery/src/main/java/gwtquery/jsquery/JsQueryXs.gwt.xml index 5cb9179f..80ce12a6 100644 --- a/jsquery/src/main/java/gwtquery/jsquery/JsQueryXs.gwt.xml +++ b/jsquery/src/main/java/gwtquery/jsquery/JsQueryXs.gwt.xml @@ -26,9 +26,6 @@ ]]> - - - diff --git a/jsquery/src/main/java/gwtquery/jsquery/client/JQ.java b/jsquery/src/main/java/gwtquery/jsquery/client/JQ.java deleted file mode 100644 index f34b223e..00000000 --- a/jsquery/src/main/java/gwtquery/jsquery/client/JQ.java +++ /dev/null @@ -1,459 +0,0 @@ -package gwtquery.jsquery.client; - -import static com.google.gwt.user.client.Window.alert; - -import org.timepedia.exporter.client.Export; -import org.timepedia.exporter.client.ExportAfterCreateMethod; -import org.timepedia.exporter.client.ExportClosure; -import org.timepedia.exporter.client.ExportInstanceMethod; -import org.timepedia.exporter.client.ExportJsInitMethod; -import org.timepedia.exporter.client.ExportOverlay; -import org.timepedia.exporter.client.ExportPackage; -import org.timepedia.exporter.client.Exportable; -import org.timepedia.exporter.client.ExporterUtil; - -import com.google.gwt.core.client.JavaScriptObject; -import com.google.gwt.core.client.JsArray; -import com.google.gwt.dom.client.Element; -import com.google.gwt.dom.client.Node; -import com.google.gwt.dom.client.NodeList; -import com.google.gwt.query.client.Function; -import com.google.gwt.query.client.GQuery; -import com.google.gwt.query.client.GQuery.Offset; -import com.google.gwt.query.client.Predicate; -import com.google.gwt.query.client.Properties; -import com.google.gwt.query.client.js.JsCache; -import com.google.gwt.query.client.js.JsNodeArray; -import com.google.gwt.query.client.js.JsUtils; -import com.google.gwt.query.client.plugins.Effects; -import com.google.gwt.query.client.plugins.effects.PropertiesAnimation; -import com.google.gwt.query.client.plugins.effects.PropertiesAnimation.Easing; -import com.google.gwt.user.client.Event; - - -@ExportPackage("jsQuery") -@Export(value="fn", all=false) -public class JQ implements ExportOverlay { - - @ExportPackage("jsQuery") - @Export("jFunction") - @ExportClosure() - public interface JFunction extends ExportOverlay { - public void f(); -// Element and Event are JavascriptObjects so we export one. -// public void f(Element e); - public boolean f(Event e); - public Object f(Element e, int i); - } - - @ExportPackage("jsQuery") - @Export("jPredicate") - @ExportClosure() - public interface JPredicate extends ExportOverlay { - public boolean f(Element e, int i); - } - - @ExportPackage("jsQuery") - @Export("jEasing") - @ExportClosure() - public interface JEasing extends ExportOverlay { - public double interpolate(double progress); - } - - @ExportPackage("") - @Export("jsQuery") - // Used to export $ method - public static class Dollar implements Exportable { - // jQuery.fn.init.prototype = jQuery.fn - native static String dumpObject(JavaScriptObject o) /*-{ - var s = "" ; for (k in o) s += " " + k; return s; - }-*/; - - private static native boolean isFunction(Object o) /*-{ - return typeof(o) == 'function'; - }-*/; - - private static native void runFunction(Object f) /*-{ - f(); - }-*/; - - @Export("$wnd.$") - public static GQuery staticDollar(Object o) { - if (o instanceof String) { - return GQuery.$((String)o); - } else if (isFunction(o)) { - runFunction(o); - } else if (o instanceof JavaScriptObject) { - JavaScriptObject jso = (JavaScriptObject)o; - GQuery r = GQuery.$(jso); - if (JsUtils.isArray(jso)) { - JsCache c = jso.cast(); - JsNodeArray elms = JsNodeArray.create(); - for (int i = 0 ; i < c.length(); i++) { - elms.addNode(c.getJavaScriptObject(i).cast()); - } - r = GQuery.$(elms); -// System.out.println(c.length() + " " + elms.getLength() + " " + r.length()); - } - - return r; - } else { - System.out.println("Bad!!!! " + o); - } - return GQuery.$(); - } - - @Export("$wnd.$") - public static GQuery staticDollar(String s, Element ctx) { - return GQuery.$(s, ctx); - } - - - @Export("$wnd.$.ready") - public static void ready(Function f) { - alert("ready"); - } - - @Export("$wnd.$.inArray") - public static int inArray(Object o, Object a) { - if (o instanceof JavaScriptObject && JsUtils.isElement((JavaScriptObject)o)) { - return staticDollar(a).index((Element)o); - } else if (a instanceof JavaScriptObject && JsUtils.isArray((JavaScriptObject)a)) { - return ((JsCache)a).indexOf(o); - } - return -1; - } - - @Export("$wnd.$.extend") - public static JavaScriptObject extend(Object...objs) { - int i = 0, l = objs.length; - boolean deep = false; - JavaScriptObject ctx = null; - Object target = objs[i]; - if (target instanceof Boolean) { - deep = (Boolean) target; - if (l == 1) return ctx; - target = objs[i++]; - } - if (l - i == 1) { - i--; - } else { - ctx = (JavaScriptObject)target; - } - - for (++i; i < l; i++) { - if (objs[i] != null) { - ctx = extendImpl(deep, ctx, objs[i]); - } - } - return ctx; - } - - private static native JavaScriptObject getDefaultPrototype() /*-{ - return $wnd.jsQuery && $wnd.jsQuery.fn ? $wnd.jsQuery.fn.prototype : null; - }-*/; - - private static native JavaScriptObject extendImpl(boolean deep, JavaScriptObject ctx, Object s) /*-{ - var d = ctx ? ctx : $wnd.jsQuery.fn.prototype || {}; - for (k in s) { - d[k] = s[k]; - if (!ctx) $wnd.$[k] = s[k]; - } - return d; - }-*/; - - @ExportAfterCreateMethod - public static native void afterCreate() /*-{ - }-*/; - } - - // We have to stub all the method we want to export here. - private JQ(){} - - @ExportJsInitMethod - public NodeList get() {return null;} - - public String toString() {return null;} - public GQuery add(GQuery previousObject) {return null;} - public GQuery add(String selector) {return null;} - public GQuery addClass(String... classes) {return null;} - public GQuery after(GQuery query) {return null;} - public GQuery after(Node n) {return null;} - public GQuery after(String html) {return null;} - public GQuery andSelf() {return null;} - - @ExportInstanceMethod - public static GQuery animate(GQuery g, Object stringOrProperties, int duration, String easing, Function... funcs) { - return g.animate(stringOrProperties, duration, "linear".equalsIgnoreCase(easing)? PropertiesAnimation.Easing.LINEAR : PropertiesAnimation.Easing.SWING, funcs); - } -// public GQuery animate(Object stringOrProperties, int duration, Easing easing, Function... funcs) {return null;} - public GQuery animate(Object stringOrProperties, Function... funcs) {return null;} - public GQuery animate(Object stringOrProperties, int duration, Function... funcs) {return null;} -//public GQuery attr(Properties properties) {return null;} -public String attr(String name) {return null;} -//public GQuery attr(String key, Function closure) {return null;} -public GQuery attr(String key, Object value) {return null;} -public int size() {return 0;} - - public GQuery append(GQuery query) {return null;} - public GQuery append(Node n) {return null;} - public GQuery append(String html) {return null;} - public GQuery appendTo(GQuery other) {return null;} - public GQuery appendTo(Node n) {return null;} - public GQuery appendTo(String html) {return null;} - public T as(Class plugin) {return null;} - - public GQuery before(GQuery query) {return null;} - public GQuery before(Node n) {return null;} - public GQuery before(String html) {return null;} -// public GQuery bind(int eventbits, Object data, Function... funcs) {return null;} -// public GQuery bind(String eventType, Object data, Function... funcs) {return null;} - @ExportInstanceMethod - public static GQuery bind(GQuery g, String events, Function func) { - return g.bind(events, null, func); - } - public GQuery blur(Function... f) {return null;} - public GQuery change(Function... f) {return null;} - public GQuery children() {return null;} - public GQuery children(String... filters) {return null;} - public GQuery clearQueue() {return null;} - public GQuery clone() {return null;} - public GQuery clearQueue(String queueName) {return null;} - public GQuery click(Function... f) {return null;} - public GQuery closest(String selector) {return null;} -// public JsNamedArray> closest(String[] selectors) {return null;} -// public JsNamedArray> closest(String[] selectors, Node context) {return null;} - public GQuery closest(String selector, Node context) {return null;} - public GQuery contains(String text) {return null;} - public GQuery contents() {return null;} - @ExportInstanceMethod - public static Object css(GQuery g, Object o) { - if (o instanceof String) { - return g.css((String)o, false); - } else { - return ExporterUtil.wrap(g.css((Properties)o)); - } - } - @ExportInstanceMethod - public static GQuery css(GQuery g, String k, Object v) { - return g.css(k, String.valueOf(v)); - } -// public GQuery css(Properties properties) {return null;} -// public String css(String name) {return null;} -// public String css(String name, boolean force) {return null;} - public GQuery css(String prop, String val) {return null;} - public double cur(String prop) {return 0;} - public double cur(String prop, boolean force) {return 0;} - public Object data(String name) {return null;} -// public T data(String name, Class clz) {return null;} - public GQuery data(String name, Object value) {return null;} - public GQuery dblclick(Function... f) {return null;} - public GQuery delay(int milliseconds, Function... f) {return null;} - public GQuery delay(int milliseconds, String queueName, Function... f) {return null;} - public GQuery delegate(String selector, String eventType, Function... handlers) {return null;} - public GQuery delegate(String selector, String eventType, Object data, Function... handlers) {return null;} - public GQuery delegate(String selector, int eventbits, Function... handlers) {return null;} - public GQuery delegate(String selector, int eventbits, Object data, Function... handlers) {return null;} - public GQuery dequeue() {return null;} - public GQuery dequeue(String queueName) {return null;} - public GQuery detach() {return null;} - public GQuery detach(String filter) {return null;} - public GQuery die() {return null;} - public GQuery die(String eventName) {return null;} -// public GQuery die(int eventbits) {return null;} - public GQuery each(Function... f) {return null;} - public Element[] elements() {return null;} - public GQuery empty() {return null;} -// public GQuery end() {return null;} - public GQuery eq(int pos) {return null;} - public GQuery error(Function... f) {return null;} - public GQuery fadeIn(Function... f) {return null;} - public GQuery fadeIn(int millisecs, Function... f) {return null;} - public GQuery fadeOut(Function... f) {return null;} - public GQuery fadeOut(int millisecs, Function... f) {return null;} - public Effects fadeToggle(int millisecs, Function... f) {return null;} - public GQuery filter(Predicate filterFn) {return null;} -// public GQuery filter(String... filters) {return null;} - public GQuery find(String... filters) {return null;} - public GQuery first() {return null;} - public GQuery focus(Function... f) {return null;} - public Element get(int i) {return null;} - public Node getContext() {return null;} - public GQuery getPreviousObject() {return null;} - public String getSelector() {return null;} - public GQuery gt(int pos) {return null;} - public boolean hasClass(String... classes) {return false;} - public int height() {return 0;} - public GQuery height(int height) {return null;} - public GQuery height(String height) {return null;} - public GQuery hide() {return null;} - public GQuery hover(Function fover, Function fout) {return null;} - public String html() {return null;} - public GQuery html(String html) {return null;} - public String id() {return null;} - public GQuery id(String id) {return null;} - public int index(Element element) {return 0;} - public int innerHeight() {return 0;} - public int innerWidth() {return 0;} - public GQuery insertAfter(Element elem) {return null;} - public GQuery insertAfter(GQuery query) {return null;} - public GQuery insertAfter(String selector) {return null;} - public GQuery insertBefore(Element item) {return null;} - public GQuery insertBefore(GQuery query) {return null;} - public GQuery insertBefore(String selector) {return null;} - public boolean is(String... filters) {return false;} - public boolean isEmpty() {return false;} - public GQuery keydown(Function... f) {return null;} - public GQuery keydown(int key) {return null;} - public GQuery keypress(Function... f) {return null;} - public GQuery keypress(int key) {return null;} - public GQuery keyup(Function... f) {return null;} - public GQuery keyup(int key) {return null;} - public GQuery last() {return null;} - public int left() {return 0;} - public int length() {return 0;} - public GQuery live(String eventName, Function... funcs) {return null;} -// public GQuery live(int eventbits, Function... funcs) {return null;} -// public GQuery live(int eventbits, Object data, Function... funcs) {return null;} - public GQuery live(String eventName, Object data, Function... funcs) {return null;} -// public GQuery load(Function f) {return null;} - - public GQuery lt(int pos) {return null;} -// public List map(Function f) {return null;} - public GQuery mousedown(Function... f) {return null;} - public GQuery mousemove(Function... f) {return null;} - public GQuery mouseout(Function... f) {return null;} - public GQuery mouseover(Function... f) {return null;} - public GQuery mouseup(Function... f) {return null;} - public GQuery next() {return null;} - public GQuery next(String... selectors) {return null;} - public GQuery nextAll() {return null;} - public GQuery nextUntil(String selector) {return null;} - public GQuery not(Element elem) {return null;} - public GQuery not(GQuery gq) {return null;} - public GQuery not(String... filters) {return null;} - - @ExportInstanceMethod - public static JavaScriptObject offset(GQuery instance) { - Offset o = instance.offset(); - return Properties.create("left: " + o.left + ", top:" + o.top); - } - - public GQuery offsetParent() {return null;} - public GQuery one(int eventbits, Object data, Function f) {return null;} - public int outerHeight() {return 0;} - public int outerHeight(boolean includeMargin) {return 0;} - public int outerWidth() {return 0;} - public int outerWidth(boolean includeMargin) {return 0;} - public GQuery parent() {return null;} - public GQuery parent(String... filters) {return null;} - public GQuery parents() {return null;} - public GQuery parents(String... filters) {return null;} - public GQuery parentsUntil(String selector) {return null;} -// public Offset position() {return null;} - public GQuery prepend(GQuery query) {return null;} - public GQuery prepend(Node n) {return null;} - public GQuery prepend(String html) {return null;} - public GQuery prependTo(GQuery other) {return null;} - public GQuery prependTo(Node n) {return null;} - public GQuery prependTo(String html) {return null;} - public GQuery prev() {return null;} - public GQuery prev(String... selectors) {return null;} - public GQuery prevAll() {return null;} - public GQuery prevUntil(String selector) {return null;} - public boolean prop(String key) {return false;} - public GQuery prop(String key, boolean value) {return null;} - public GQuery prop(String key, Function closure) {return null;} - public int queue() {return 0;} - public int queue(String queueName) {return 0;} - public GQuery queue(Function... f) {return null;} - public GQuery queue(String queueName, Function... f) {return null;} - public GQuery remove() {return null;} - public GQuery remove(String filter) {return null;} - public GQuery removeAttr(String key) {return null;} - public GQuery removeClass(String... classes) {return null;} - public GQuery removeData(String name) {return null;} - public GQuery replaceAll(Element elem) {return null;} - public GQuery replaceAll(GQuery target) {return null;} - public GQuery replaceAll(String selector) {return null;} - public GQuery replaceWith(Element elem) {return null;} - public GQuery replaceWith(GQuery target) {return null;} - public GQuery replaceWith(String html) {return null;} - public GQuery resize(Function... f) {return null;} - public void restoreCssAttrs(String... cssProps) {} - public void resize(Function f) {} - public void saveCssAttrs(String... cssProps) {} - public GQuery scroll(Function... f) {return null;} - public GQuery scrollIntoView() {return null;} - public GQuery scrollIntoView(boolean ensure) {return null;} - public int scrollLeft() {return 0;} - public GQuery scrollLeft(int left) {return null;} - public GQuery scrollTo(int left, int top) {return null;} - public int scrollTop() {return 0;} - public GQuery scrollTop(int top) {return null;} - public GQuery select() {return null;} - public GQuery setArray(NodeList list) {return null;} - public void setPreviousObject(GQuery previousObject) {} - public GQuery setSelector(String selector) {return null;} - public GQuery show() {return null;} - public GQuery siblings() {return null;} - public GQuery siblings(String... selectors) {return null;} - public GQuery slice(int start, int end) {return null;} - public Effects slideDown(Function... f) {return null;} - public Effects slideDown(int millisecs, Function... f) {return null;} - public Effects slideToggle(int millisecs, Function... f) {return null;} - public Effects slideUp(Function... f) {return null;} - public Effects slideUp(int millisecs, Function... f) {return null;} - public GQuery stop() {return null;} - public GQuery stop(boolean clearQueue) {return null;} - public GQuery stop(boolean clearQueue, boolean jumpToEnd) {return null;} - public GQuery submit(Function... funcs) {return null;} - public String text() {return null;} - public GQuery text(String txt) {return null;} - public GQuery toggle() {return null;} - public GQuery toggle(Function... fn) {return null;} - public GQuery toggleClass(String... classes) {return null;} - public GQuery toggleClass(String clz, boolean addOrRemove) {return null;} - public int top() {return 0;} - public String toString(boolean pretty) {return null;} -// public GQuery trigger(int eventbits, int... keys) {return null;} -// public GQuery unbind(int eventbits) {return null;} - @ExportInstanceMethod - public static GQuery unbind(GQuery g, String s, Function o) { - return g.unbind(s); - } - public GQuery undelegate() {return null;} - public GQuery undelegate(String selector) {return null;} - public GQuery undelegate(String selector, String eventName) {return null;} - public GQuery undelegate(String selector, int eventBit) {return null;} -// public JsNodeArray unique(NodeList result) {return null;} - public GQuery unwrap() {return null;} - public String val() {return null;} - public GQuery val(String... values) {return null;} - public String[] vals() {return null;} - public boolean isVisible() {return false;} - public int width() {return 0;} - public GQuery width(int width) {return null;} - public GQuery wrap(Element elem) {return null;} - public GQuery wrap(GQuery query) {return null;} - public GQuery wrap(String html) {return null;} - public GQuery wrapAll(Element elem) {return null;} - public GQuery wrapAll(GQuery query) {return null;} - public GQuery wrapAll(String html) {return null;} - public GQuery wrapInner(Element elem) {return null;} - public GQuery wrapInner(GQuery query) {return null;} - public GQuery wrapInner(String html) {return null;} - - @ExportInstanceMethod - public static GQuery ready(GQuery g, Function f) { - f.fe(); - return g; - } - - @ExportInstanceMethod - public static String imprime(GQuery g, Function f) { - System.out.println("Imprime " + g.size() + " " + g.toString(true)); - return g.toString(); - } - -} diff --git a/jsquery/src/main/java/gwtquery/jsquery/client/JsMenu.java b/jsquery/src/main/java/gwtquery/jsquery/client/JsMenu.java index 6c30de6a..9c1cf373 100644 --- a/jsquery/src/main/java/gwtquery/jsquery/client/JsMenu.java +++ b/jsquery/src/main/java/gwtquery/jsquery/client/JsMenu.java @@ -2,15 +2,11 @@ package gwtquery.jsquery.client; public abstract class JsMenu { - static void log(Object l) { - System.out.println(l); - } - public static native void loadPlugin() /*-{ (function($) { - var l = @gwtquery.jsquery.client.JsMenu::log(Ljava/lang/Object;); + var l = @gwtquery.jsquery.client.utils.JsQAux::log(Ljava/lang/Object;); var window = $wnd; var document = $doc; diff --git a/jsquery/src/main/java/gwtquery/jsquery/client/JsQuery.java b/jsquery/src/main/java/gwtquery/jsquery/client/JsQuery.java index 98b9cca3..bf9559ee 100644 --- a/jsquery/src/main/java/gwtquery/jsquery/client/JsQuery.java +++ b/jsquery/src/main/java/gwtquery/jsquery/client/JsQuery.java @@ -1,10 +1,5 @@ package gwtquery.jsquery.client; -import gwtquery.jsquery.client.JQ.Dollar; -import gwtquery.jsquery.client.JQ.JEasing; -import gwtquery.jsquery.client.JQ.JFunction; -import gwtquery.jsquery.client.JQ.JPredicate; - import java.util.logging.Logger; import com.google.gwt.core.client.EntryPoint; @@ -24,15 +19,23 @@ public class JsQuery implements EntryPoint { } }); - GWT.create(JFunction.class); - GWT.create(JPredicate.class); - GWT.create(JEasing.class); - GWT.create(JQ.class); - GWT.create(Dollar.class); - JsMenu.loadPlugin(); + OverlayGQuery.export(); + onJsQueryLoad(); + + testJs(); } + private native static void testJs() /*-{ + var l = @gwtquery.jsquery.client.utils.JsQAux::log(Ljava/lang/Object;); + $ = $wnd.$; + l($.each); + $.each(["a","b"], function(a, b){ + l("kk " + " " + a + " " + b); + } + ); + }-*/; + private native static void onJsQueryLoad() /*-{ $wnd.onJsQueryLoad && $wnd.onJsQueryLoad(); $wnd.JsQuery && $wnd.JsQuery.onLoad && $wnd.JsQuery.onLoad(); diff --git a/jsquery/src/main/java/gwtquery/jsquery/client/OverlayGQuery.java b/jsquery/src/main/java/gwtquery/jsquery/client/OverlayGQuery.java new file mode 100644 index 00000000..20b7139b --- /dev/null +++ b/jsquery/src/main/java/gwtquery/jsquery/client/OverlayGQuery.java @@ -0,0 +1,387 @@ +package gwtquery.jsquery.client; + +import gwtquery.jsquery.client.utils.JsQAux; + +import org.timepedia.exporter.client.Export; +import org.timepedia.exporter.client.ExportAfterCreateMethod; +import org.timepedia.exporter.client.ExportClosure; +import org.timepedia.exporter.client.ExportInstanceMethod; +import org.timepedia.exporter.client.ExportJsInitMethod; +import org.timepedia.exporter.client.ExportOverlay; +import org.timepedia.exporter.client.ExportPackage; +import org.timepedia.exporter.client.ExportStaticMethod; +import org.timepedia.exporter.client.ExporterUtil; +import org.timepedia.exporter.client.NoExport; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Node; +import com.google.gwt.dom.client.NodeList; +import com.google.gwt.query.client.Function; +import com.google.gwt.query.client.GQuery; +import com.google.gwt.query.client.GQuery.Offset; +import com.google.gwt.query.client.Predicate; +import com.google.gwt.query.client.Properties; +import com.google.gwt.query.client.plugins.Effects; +import com.google.gwt.query.client.plugins.effects.PropertiesAnimation; +import com.google.gwt.user.client.Event; + +/** + * Class used to expose GQuery methods and object to Javascript using + * gwt-exporter annotations. + * + * We prefer to overlay the original GQuery object instead of adding + * the gwt-exporter dependency to the project. + * + * Because of the differences between java and js apis, we need to + * override some methods in order to deal with complex cases. + * + */ +@ExportPackage("jsQuery") +@Export(value="fn", all=false) +public class OverlayGQuery implements ExportOverlay { + + @NoExport + public static void export() { + GWT.create(OverlayFunction.class); + GWT.create(OverlayPredicate.class); + GWT.create(OverlayGQuery.class); + } + + @ExportPackage("jsQuery") + @Export("jFunction") + @ExportClosure() + protected interface OverlayFunction extends ExportOverlay { + public void f(); + public boolean f(Event e); + public Object f(Element e, int i); + } + + @ExportPackage("jsQuery") + @Export("jPredicate") + @ExportClosure() + protected interface OverlayPredicate extends ExportOverlay { + public boolean f(Element e, int i); + } + + private OverlayGQuery(){} + + /** + * In js a GQuery object represents a Nodelist. + * gwt-exporter will use the object returned by get() to wrap + * the GQuery object + */ + @ExportJsInitMethod + public NodeList get() {return null;} + + /** + * Customized JS code to execute after GQuery has been exported. + */ + @ExportAfterCreateMethod + public static native void afterCreate() /*-{ + }-*/; + + @ExportStaticMethod("$wnd.$") + public static GQuery $(Object o) { + return JsQAux.dollar(o); + } + + @ExportStaticMethod("$wnd.$") + public static GQuery $(String s, Element ctx) { + return GQuery.$(s, ctx); + } + + @ExportStaticMethod("$wnd.$.extend") + public static JavaScriptObject extend(Object...objs) { + return JsQAux.extend(objs); + } + + @ExportStaticMethod("$wnd.$.each") + public static Object[] each(Object[] objs, Function f) { + return JsQAux.each(objs, f); + } + + @ExportInstanceMethod + public static GQuery ready(GQuery g, Function f) { + f.fe(); + return g; + } + + @ExportInstanceMethod + // TODO: normally plugins adds new easing functions to jquery.easing array + public static GQuery animate(GQuery g, Object stringOrProperties, int duration, String easing, Function... funcs) { + return g.animate(stringOrProperties, duration, + "linear".equalsIgnoreCase(easing) + ? PropertiesAnimation.Easing.LINEAR + : PropertiesAnimation.Easing.SWING, funcs); + } + + @ExportInstanceMethod + public static Object css(GQuery g, Object o) { + if (o instanceof String) { + return g.css((String)o, false); + } else { + return ExporterUtil.wrap(g.css((Properties)o)); + } + } + + @ExportInstanceMethod + public static GQuery css(GQuery g, String k, Object v) { + return g.css(k, String.valueOf(v)); + } + + @ExportInstanceMethod + public static JavaScriptObject offset(GQuery instance) { + Offset o = instance.offset(); + return Properties.create("left: " + o.left + ", top:" + o.top); + } + + @ExportInstanceMethod + public static GQuery unbind(GQuery g, String s, Function o) { + return g.unbind(s); + } + + public String toString() {return null;} + public GQuery add(GQuery previousObject) {return null;} + public GQuery add(String selector) {return null;} + public GQuery addClass(String... classes) {return null;} + public GQuery after(GQuery query) {return null;} + public GQuery after(Node n) {return null;} + public GQuery after(String html) {return null;} + public GQuery andSelf() {return null;} + +// public GQuery animate(Object stringOrProperties, int duration, Easing easing, Function... funcs) {return null;} + public GQuery animate(Object stringOrProperties, Function... funcs) {return null;} + public GQuery animate(Object stringOrProperties, int duration, Function... funcs) {return null;} +// public GQuery attr(Properties properties) {return null;} + public String attr(String name) {return null;} +// public GQuery attr(String key, Function closure) {return null;} + public GQuery attr(String key, Object value) {return null;} + public int size() {return 0;} + + public GQuery append(GQuery query) {return null;} + public GQuery append(Node n) {return null;} + public GQuery append(String html) {return null;} + public GQuery appendTo(GQuery other) {return null;} + public GQuery appendTo(Node n) {return null;} + public GQuery appendTo(String html) {return null;} + public T as(Class plugin) {return null;} + + public GQuery before(GQuery query) {return null;} + public GQuery before(Node n) {return null;} + public GQuery before(String html) {return null;} +// public GQuery bind(int eventbits, Object data, Function... funcs) {return null;} +// public GQuery bind(String eventType, Object data, Function... funcs) {return null;} + @ExportInstanceMethod + public static GQuery bind(GQuery g, String events, Function func) { + return g.bind(events, null, func); + } + public GQuery blur(Function... f) {return null;} + public GQuery change(Function... f) {return null;} + public GQuery children() {return null;} + public GQuery children(String... filters) {return null;} + public GQuery clearQueue() {return null;} + public GQuery clone() {return null;} + public GQuery clearQueue(String queueName) {return null;} + public GQuery click(Function... f) {return null;} + public GQuery closest(String selector) {return null;} +// public JsNamedArray> closest(String[] selectors) {return null;} +// public JsNamedArray> closest(String[] selectors, Node context) {return null;} + public GQuery closest(String selector, Node context) {return null;} + public GQuery contains(String text) {return null;} + public GQuery contents() {return null;} +// public GQuery css(Properties properties) {return null;} +// public String css(String name) {return null;} +// public String css(String name, boolean force) {return null;} + public GQuery css(String prop, String val) {return null;} + public double cur(String prop) {return 0;} + public double cur(String prop, boolean force) {return 0;} + public Object data(String name) {return null;} +// public T data(String name, Class clz) {return null;} + public GQuery data(String name, Object value) {return null;} + public GQuery dblclick(Function... f) {return null;} + public GQuery delay(int milliseconds, Function... f) {return null;} + public GQuery delay(int milliseconds, String queueName, Function... f) {return null;} + public GQuery delegate(String selector, String eventType, Function... handlers) {return null;} + public GQuery delegate(String selector, String eventType, Object data, Function... handlers) {return null;} + public GQuery delegate(String selector, int eventbits, Function... handlers) {return null;} + public GQuery delegate(String selector, int eventbits, Object data, Function... handlers) {return null;} + public GQuery dequeue() {return null;} + public GQuery dequeue(String queueName) {return null;} + public GQuery detach() {return null;} + public GQuery detach(String filter) {return null;} + public GQuery die() {return null;} + public GQuery die(String eventName) {return null;} +// public GQuery die(int eventbits) {return null;} + public GQuery each(Function... f) {return null;} + public Element[] elements() {return null;} + public GQuery empty() {return null;} +// public GQuery end() {return null;} + public GQuery eq(int pos) {return null;} + public GQuery error(Function... f) {return null;} + public GQuery fadeIn(Function... f) {return null;} + public GQuery fadeIn(int millisecs, Function... f) {return null;} + public GQuery fadeOut(Function... f) {return null;} + public GQuery fadeOut(int millisecs, Function... f) {return null;} + public Effects fadeToggle(int millisecs, Function... f) {return null;} + public GQuery filter(Predicate filterFn) {return null;} +// public GQuery filter(String... filters) {return null;} + public GQuery find(String... filters) {return null;} + public GQuery first() {return null;} + public GQuery focus(Function... f) {return null;} + public Element get(int i) {return null;} + public Node getContext() {return null;} + public GQuery getPreviousObject() {return null;} + public String getSelector() {return null;} + public GQuery gt(int pos) {return null;} + public boolean hasClass(String... classes) {return false;} + public int height() {return 0;} + public GQuery height(int height) {return null;} + public GQuery height(String height) {return null;} + public GQuery hide() {return null;} + public GQuery hover(Function fover, Function fout) {return null;} + public String html() {return null;} + public GQuery html(String html) {return null;} + public String id() {return null;} + public GQuery id(String id) {return null;} + public int index(Element element) {return 0;} + public int innerHeight() {return 0;} + public int innerWidth() {return 0;} + public GQuery insertAfter(Element elem) {return null;} + public GQuery insertAfter(GQuery query) {return null;} + public GQuery insertAfter(String selector) {return null;} + public GQuery insertBefore(Element item) {return null;} + public GQuery insertBefore(GQuery query) {return null;} + public GQuery insertBefore(String selector) {return null;} + public boolean is(String... filters) {return false;} + public boolean isEmpty() {return false;} + public GQuery keydown(Function... f) {return null;} + public GQuery keydown(int key) {return null;} + public GQuery keypress(Function... f) {return null;} + public GQuery keypress(int key) {return null;} + public GQuery keyup(Function... f) {return null;} + public GQuery keyup(int key) {return null;} + public GQuery last() {return null;} + public int left() {return 0;} + public int length() {return 0;} + public GQuery live(String eventName, Function... funcs) {return null;} +// public GQuery live(int eventbits, Function... funcs) {return null;} +// public GQuery live(int eventbits, Object data, Function... funcs) {return null;} + public GQuery live(String eventName, Object data, Function... funcs) {return null;} +// public GQuery load(Function f) {return null;} + public GQuery lt(int pos) {return null;} +// public List map(Function f) {return null;} + public GQuery mousedown(Function... f) {return null;} + public GQuery mousemove(Function... f) {return null;} + public GQuery mouseout(Function... f) {return null;} + public GQuery mouseover(Function... f) {return null;} + public GQuery mouseup(Function... f) {return null;} + public GQuery next() {return null;} + public GQuery next(String... selectors) {return null;} + public GQuery nextAll() {return null;} + public GQuery nextUntil(String selector) {return null;} + public GQuery not(Element elem) {return null;} + public GQuery not(GQuery gq) {return null;} + public GQuery not(String... filters) {return null;} + public GQuery offsetParent() {return null;} + public GQuery one(int eventbits, Object data, Function f) {return null;} + public int outerHeight() {return 0;} + public int outerHeight(boolean includeMargin) {return 0;} + public int outerWidth() {return 0;} + public int outerWidth(boolean includeMargin) {return 0;} + public GQuery parent() {return null;} + public GQuery parent(String... filters) {return null;} + public GQuery parents() {return null;} + public GQuery parents(String... filters) {return null;} + public GQuery parentsUntil(String selector) {return null;} +// public Offset position() {return null;} + public GQuery prepend(GQuery query) {return null;} + public GQuery prepend(Node n) {return null;} + public GQuery prepend(String html) {return null;} + public GQuery prependTo(GQuery other) {return null;} + public GQuery prependTo(Node n) {return null;} + public GQuery prependTo(String html) {return null;} + public GQuery prev() {return null;} + public GQuery prev(String... selectors) {return null;} + public GQuery prevAll() {return null;} + public GQuery prevUntil(String selector) {return null;} + public boolean prop(String key) {return false;} + public GQuery prop(String key, boolean value) {return null;} + public GQuery prop(String key, Function closure) {return null;} + public int queue() {return 0;} + public int queue(String queueName) {return 0;} + public GQuery queue(Function... f) {return null;} + public GQuery queue(String queueName, Function... f) {return null;} + public GQuery remove() {return null;} + public GQuery remove(String filter) {return null;} + public GQuery removeAttr(String key) {return null;} + public GQuery removeClass(String... classes) {return null;} + public GQuery removeData(String name) {return null;} + public GQuery replaceAll(Element elem) {return null;} + public GQuery replaceAll(GQuery target) {return null;} + public GQuery replaceAll(String selector) {return null;} + public GQuery replaceWith(Element elem) {return null;} + public GQuery replaceWith(GQuery target) {return null;} + public GQuery replaceWith(String html) {return null;} + public GQuery resize(Function... f) {return null;} + public void restoreCssAttrs(String... cssProps) {} + public void resize(Function f) {} + public void saveCssAttrs(String... cssProps) {} + public GQuery scroll(Function... f) {return null;} + public GQuery scrollIntoView() {return null;} + public GQuery scrollIntoView(boolean ensure) {return null;} + public int scrollLeft() {return 0;} + public GQuery scrollLeft(int left) {return null;} + public GQuery scrollTo(int left, int top) {return null;} + public int scrollTop() {return 0;} + public GQuery scrollTop(int top) {return null;} + public GQuery select() {return null;} + public GQuery setArray(NodeList list) {return null;} + public void setPreviousObject(GQuery previousObject) {} + public GQuery setSelector(String selector) {return null;} + public GQuery show() {return null;} + public GQuery siblings() {return null;} + public GQuery siblings(String... selectors) {return null;} + public GQuery slice(int start, int end) {return null;} + public Effects slideDown(Function... f) {return null;} + public Effects slideDown(int millisecs, Function... f) {return null;} + public Effects slideToggle(int millisecs, Function... f) {return null;} + public Effects slideUp(Function... f) {return null;} + public Effects slideUp(int millisecs, Function... f) {return null;} + public GQuery stop() {return null;} + public GQuery stop(boolean clearQueue) {return null;} + public GQuery stop(boolean clearQueue, boolean jumpToEnd) {return null;} + public GQuery submit(Function... funcs) {return null;} + public String text() {return null;} + public GQuery text(String txt) {return null;} + public GQuery toggle() {return null;} + public GQuery toggle(Function... fn) {return null;} + public GQuery toggleClass(String... classes) {return null;} + public GQuery toggleClass(String clz, boolean addOrRemove) {return null;} + public int top() {return 0;} + public String toString(boolean pretty) {return null;} +// public GQuery trigger(int eventbits, int... keys) {return null;} +// public GQuery unbind(int eventbits) {return null;} + public GQuery undelegate() {return null;} + public GQuery undelegate(String selector) {return null;} + public GQuery undelegate(String selector, String eventName) {return null;} + public GQuery undelegate(String selector, int eventBit) {return null;} +// public JsNodeArray unique(NodeList result) {return null;} + public GQuery unwrap() {return null;} + public String val() {return null;} + public GQuery val(String... values) {return null;} + public String[] vals() {return null;} + public boolean isVisible() {return false;} + public int width() {return 0;} + public GQuery width(int width) {return null;} + public GQuery wrap(Element elem) {return null;} + public GQuery wrap(GQuery query) {return null;} + public GQuery wrap(String html) {return null;} + public GQuery wrapAll(Element elem) {return null;} + public GQuery wrapAll(GQuery query) {return null;} + public GQuery wrapAll(String html) {return null;} + public GQuery wrapInner(Element elem) {return null;} + public GQuery wrapInner(GQuery query) {return null;} + public GQuery wrapInner(String html) {return null;} +} diff --git a/jsquery/src/main/java/gwtquery/jsquery/client/utils/JsQAux.java b/jsquery/src/main/java/gwtquery/jsquery/client/utils/JsQAux.java new file mode 100644 index 00000000..72cc100c --- /dev/null +++ b/jsquery/src/main/java/gwtquery/jsquery/client/utils/JsQAux.java @@ -0,0 +1,129 @@ +package gwtquery.jsquery.client.utils; + +import java.util.ArrayList; + +import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.Node; +import com.google.gwt.query.client.Function; +import com.google.gwt.query.client.GQuery; +import com.google.gwt.query.client.js.JsCache; +import com.google.gwt.query.client.js.JsNodeArray; +import com.google.gwt.query.client.js.JsUtils; + +public abstract class JsQAux { + + private native static String dumpObject(JavaScriptObject o) /*-{ + var s = ""; + for (k in o) + s += " " + k; + return s; + }-*/; + + private static native void runJsFunction(JavaScriptObject f) /*-{ + f(); + }-*/; + + public static GQuery dollar(Object o) { + if (o instanceof String) { + return GQuery.$((String) o); + } else if (o instanceof JavaScriptObject) { + JavaScriptObject jso = (JavaScriptObject) o; + if (JsUtils.isFunction(jso)) { + runJsFunction(jso); + } else { + GQuery r = GQuery.$(jso); + if (JsUtils.isArray(jso)) { + JsCache c = jso.cast(); + JsNodeArray elms = JsNodeArray.create(); + for (int i = 0; i < c.length(); i++) { + Object obj = c.get(i); + if (obj instanceof Node) { + elms.addNode((Node) obj); + } + } + r = GQuery.$(elms); + } + return r; + } + } + return GQuery.$(); + } + + public static GQuery dollar(String s, Element ctx) { + return GQuery.$(s, ctx); + } + + public static void ready(Function f) { + f.f(); + } + + public static int inArray(Object o, Object a) { + if (o instanceof JavaScriptObject) { + JavaScriptObject jso = (JavaScriptObject) o; + if (JsUtils.isElement(jso)) { + return dollar(a).index((Element) o); + } else if (JsUtils.isArray(jso)) { + return ((JsCache) a).indexOf(o); + } + } + return -1; + } + + public static JavaScriptObject extend(Object... objs) { + int i = 0, l = objs.length; + boolean deep = false; + JavaScriptObject ctx = null; + Object target = objs[i]; + if (target instanceof Boolean) { + deep = (Boolean) target; + if (l == 1) + return ctx; + target = objs[i++]; + } + if (l - i == 1) { + i--; + } else { + ctx = (JavaScriptObject) target; + } + + for (++i; i < l; i++) { + if (objs[i] != null) { + ctx = extendImpl(deep, ctx, objs[i]); + } + } + return ctx; + } + + private static native JavaScriptObject getDefaultPrototype() /*-{ + return $wnd.jsQuery && $wnd.jsQuery.fn ? $wnd.jsQuery.fn.prototype + : null; + }-*/; + + private static native JavaScriptObject extendImpl(boolean deep, + JavaScriptObject ctx, Object s) /*-{ + var d = ctx ? ctx : $wnd.jsQuery.fn.prototype || {}; + for (k in s) { + d[k] = s[k]; + if (!ctx) + $wnd.$[k] = s[k]; + } + return d; + }-*/; + + public static Object[] each(Object[] objs, Function f) { + ArrayList ret = new ArrayList(); + for (Object o : objs) { + f.setDataObject(o); + if (f.fe(null, o)) { + ret.add(o); + } + } + return ret.toArray(new Object[0]); + } + + public static void log(Object l) { + System.out.println(l); + } + +} -- cgit v1.2.3