+++ /dev/null
-/*
- * Copyright 2011, The gwtquery team.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import java.util.HashSet;
-
-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.user.client.DOM;
-
-/**
- * A bunch of utility methods for GQuery.
- *
- * These methods could be moved to $ class, but the class
- * doesn't work right now.
- */
-public class GQUtils {
-
- /**
- * Use the method in the gquery class $(elem).cur(prop, force);
- */
- @Deprecated
- public static double cur(Element elem, String prop, boolean force) {
- return GQuery.$(elem).cur(prop, force);
- }
-
- /**
- * Compare two numbers using javascript equality.
- */
- public static native boolean eq(double s1, double s2) /*-{
- return s1 == s2;
- }-*/;
-
- /**
- * Compare two objects using javascript equality.
- */
- public static native boolean eq(Object s1, Object s2) /*-{
- return s1 == s2;
- }-*/;
-
- /**
- * Load an external javascript library.
- * The inserted script replaces the element with the
- * given id in the document.
- */
- public static void loadScript(String url, String id) {
- GQuery gs = GQuery.$(DOM.createElement("script"));
- GQuery gp = GQuery.$("#" + id).parent();
- if (gp.size() != 1) {
- gp = GQuery.$(GQuery.document.getBody());
- }
- GQuery.$("#" + id).remove();
- gp.append(gs.attr("src", url).attr("type", "text/javascript").attr("id", id));
- }
-
- /**
- * Return the element which is truth in the double scope.
- */
- public static native double or(double s1, double s2) /*-{
- return s1 || s2;
- }-*/;
-
- /**
- * Return the element which is truth in the javascript scope.
- */
- public static native <T> T or(T s1, T s2) /*-{
- return s1 || s2;
- }-*/;
-
- /**
- * Check if a number is true in the javascript scope.
- */
- public static native boolean truth(double a) /*-{
- return a ? true : false;
- }-*/;
-
- /**
- * Check if an object is true in the javascript scope.
- */
- public static native boolean truth(Object a) /*-{
- return a ? true : false;
- }-*/;
-
- /**
- * Remove duplicates from an elements array
- */
- public static JsArray<Element> unique(JsArray<Element> a) {
- JsArray<Element> ret = JavaScriptObject.createArray().cast();
- HashSet<Integer> f = new HashSet<Integer>();
- for (int i = 0; i < a.length(); i++) {
- Element e = a.get(i);
- if (!f.contains(e.hashCode())) {
- f.add(e.hashCode());
- ret.push(e);
- }
- }
- return ret;
- }
-
-}
\r
import static com.google.gwt.query.client.plugins.Effects.Effects;\r
import static com.google.gwt.query.client.plugins.Events.Events;\r
-import static com.google.gwt.query.client.plugins.Widgets.Widgets;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.List;\r
\r
import com.google.gwt.core.client.GWT;\r
import com.google.gwt.core.client.JavaScriptObject;\r
import com.google.gwt.dom.client.NodeList;\r
import com.google.gwt.dom.client.OptionElement;\r
import com.google.gwt.dom.client.SelectElement;\r
-import com.google.gwt.dom.client.TextAreaElement;\r
import com.google.gwt.dom.client.Style.Display;\r
import com.google.gwt.dom.client.Style.HasCssName;\r
+import com.google.gwt.dom.client.TextAreaElement;\r
import com.google.gwt.query.client.css.CSS;\r
import com.google.gwt.query.client.css.HasCssValue;\r
import com.google.gwt.query.client.css.TakesCssValue;\r
import com.google.gwt.query.client.css.TakesCssValue.CssSetter;\r
import com.google.gwt.query.client.impl.DocumentStyleImpl;\r
import com.google.gwt.query.client.impl.SelectorEngine;\r
+import com.google.gwt.query.client.js.JsCache;\r
+import com.google.gwt.query.client.js.JsMap;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsUtils;\r
import com.google.gwt.query.client.plugins.Plugin;\r
import com.google.gwt.query.client.plugins.events.EventsListener;\r
import com.google.gwt.user.client.DOM;\r
import com.google.gwt.user.client.Window;\r
import com.google.gwt.user.client.ui.Widget;\r
\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-\r
/**\r
* GwtQuery is a GWT clone of the popular jQuery library.\r
*/\r
}\r
}\r
\r
- /**\r
- * A class to store data in an element.\r
- */\r
- protected static final class DataCache extends JavaScriptObject {\r
-\r
- protected DataCache() {\r
- }\r
-\r
- public native void delete(int name) /*-{\r
- delete this[name];\r
- }-*/;\r
-\r
- public native void delete(String name) /*-{\r
- delete this[name];\r
- }-*/;\r
-\r
- public native boolean exists(int id) /*-{\r
- return !!this[id];\r
- }-*/;\r
-\r
- public native JavaScriptObject get(int id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native JavaScriptObject get(String id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public DataCache getCache(int id) {\r
- return get(id).cast();\r
- }\r
-\r
- public native double getDouble(int id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native double getDouble(String id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native int getInt(int id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native int getInt(String id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native Object getObject(String id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native String getString(int id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native String getString(String id) /*-{\r
- return this[id];\r
- }-*/;\r
-\r
- public native boolean isEmpty() /*-{\r
- var foo = "";\r
- for (foo in this)\r
- break;\r
- return !foo;\r
- }-*/;\r
-\r
- public native void put(int id, Object obj) /*-{\r
- this[id] = obj;\r
- }-*/;\r
-\r
- public native void put(String id, Object obj) /*-{\r
- this[id] = obj;\r
- }-*/;\r
- }\r
-\r
/**\r
* The body element in the current page.\r
*/\r
*/\r
public static final Element window = window();\r
\r
- private static DataCache dataCache = null;\r
+ private static JsCache dataCache = null;\r
\r
private static SelectorEngine engine;\r
\r
\r
private static final String OLD_DATA_PREFIX = "old-";\r
\r
- private static JsMap<Class<? extends GQuery>, Plugin<? extends GQuery>> plugins;;\r
-\r
+ private static JsMap<Class<? extends GQuery>, Plugin<? extends GQuery>> plugins;\r
+ \r
private static DocumentStyleImpl styleImpl = GWT.create(DocumentStyleImpl.class);\r
\r
private static Element windowData = null;\r
* Create an empty GQuery object.\r
*/\r
public static GQuery $() {\r
- return new GQuery(JSArray.create());\r
+ return new GQuery(JsNodeArray.create());\r
}\r
\r
\r
* Wrap a GQuery around an existing node.\r
*/\r
public static GQuery $(Node n) {\r
- return n == null ? $() : new GQuery(JSArray.create(n));\r
+ return n == null ? $() : new GQuery(JsNodeArray.create(n));\r
}\r
\r
/**\r
* Create a new GQuery given a list of nodes, elements or widgets \r
*/\r
public static GQuery $(List<?> nodesOrWidgets) {\r
- JSArray elements = JSArray.create();\r
+ JsNodeArray elements = JsNodeArray.create();\r
if (nodesOrWidgets != null) {\r
for (Object o : nodesOrWidgets ) {\r
if (o instanceof Node) {\r
}\r
int id = item.hashCode();\r
if (name != null && !dataCache.exists(id)) {\r
- dataCache.put(id, DataCache.createObject().cast());\r
+ dataCache.put(id, JsCache.createObject().cast());\r
}\r
\r
- DataCache d = dataCache.get(id).cast();\r
+ JsCache d = dataCache.getCache(id);\r
if (name != null && value != null) {\r
d.put(name, value);\r
}\r
- return name != null ? d.getObject(name) : id;\r
+ return name != null ? d.get(name) : id;\r
}\r
\r
/**\r
}\r
}\r
\r
- private static JSArray copyNodeList(NodeList<? extends Node> n) {\r
- JSArray res = JSArray.create();\r
+ private static JsNodeArray copyNodeList(NodeList<? extends Node> n) {\r
+ JsNodeArray res = JsNodeArray.create();\r
for (int i = 0; i < n.getLength(); i++) {\r
res.addNode(n.getItem(i));\r
}\r
engine = new SelectorEngine();\r
}\r
NodeList<Element> n = engine.select(selector, context);\r
- JSArray res = copyNodeList(n);\r
+ JsNodeArray res = copyNodeList(n);\r
return res;\r
}\r
\r
\r
private GQuery(Element element) {\r
if (element != null) {\r
- elements = JSArray.create(element);\r
+ elements = JsNodeArray.create(element);\r
}\r
}\r
\r
this(gq == null ? null : gq.get());\r
}\r
\r
- private GQuery(JSArray elements) {\r
+ private GQuery(JsNodeArray elements) {\r
if (elements != null) {\r
this.elements = elements;\r
}\r
+ plugin.getName());\r
}\r
\r
- /**\r
- * Return a GWT Widget containing the first matched element.\r
- * \r
- * If the element is already associated to a widget it returns the original\r
- * widget, otherwise a new GWT widget will be created depending on the\r
- * tagName.\r
- * \r
- */\r
-// public Widget asWidget() {\r
-// return as(Widgets).widget();\r
-// }\r
-\r
/**\r
* Set a key/value object as properties to all matched elements.\r
* \r
* at all ancestors, children() will only consider immediate child elements.\r
*/\r
public GQuery children() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
allNextSiblingElements(e.getFirstChildElement(), result, null);\r
}\r
* copies of the elements to another location in the DOM.\r
*/\r
public GQuery clone() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
result.addNode(e.cloneNode(true));\r
}\r
* Filter the set of elements to those that contain the specified text.\r
*/\r
public GQuery contains(String text) {\r
- JSArray array = JSArray.create();\r
+ JsNodeArray array = JsNodeArray.create();\r
for (Element e : elements()) {\r
if ($(e).text().contains(text)) {\r
array.addNode(e);\r
* nodes), or the content document, if the element is an iframe.\r
*/\r
public GQuery contents() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
if (IFrameElement.is(e)) {\r
result.addNode(getContentDocument(e));\r
* - anything else and the element is kept.\r
*/\r
public GQuery filter(Predicate filterFn) {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (int i = 0; i < elements.getLength(); i++) {\r
Element e = elements.getItem(i);\r
if (filterFn.f(e, i)) {\r
* filters at once.\r
*/\r
public GQuery filter(String... filters) {\r
- JSArray array = JSArray.create();\r
+ JsNodeArray array = JsNodeArray.create();\r
for (String f : filters) {\r
for (Element e : elements()) {\r
for (Element c : $(f, e.getParentNode()).elements()) {\r
* once.\r
*/\r
public GQuery find(String... filters) {\r
- JSArray array = JSArray.create();\r
+ JsNodeArray array = JsNodeArray.create();\r
for (String selector : filters) {\r
for (Element e : elements()) {\r
for (Element c : $(selector, e).elements()) {\r
* element, not all next siblings see {#nextAll}.\r
*/\r
public GQuery next() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Element next = e.getNextSiblingElement();\r
if (next != null) {\r
* {#nextAll}.\r
*/\r
public GQuery next(String... selectors) {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Element next = e.getNextSiblingElement();\r
if (next != null) {\r
* Find all sibling elements after the current element.\r
*/\r
public GQuery nextAll() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
allNextSiblingElements(e.getNextSiblingElement(), result, null);\r
}\r
* is used to remove a single Element from a jQuery object.\r
*/\r
public GQuery not(Element elem) {\r
- JSArray array = JSArray.create();\r
+ JsNodeArray array = JsNodeArray.create();\r
for (Element e : elements()) {\r
if (e != elem) {\r
array.addNode(e);\r
* relative or absolute). This method only works with visible elements.\r
*/\r
public GQuery offsetParent() {\r
- Element offParent = GQUtils.or(elements.getItem(0).getOffsetParent(), body);\r
+ Element offParent = JsUtils.or(elements.getItem(0).getOffsetParent(), body);\r
while (offParent != null\r
&& !"body".equalsIgnoreCase(offParent.getTagName())\r
&& !"html".equalsIgnoreCase(offParent.getTagName())\r
* elements.\r
*/\r
public GQuery parent() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Element p = e.getParentElement();\r
if (p != null) {\r
* elements (except for the root element).\r
*/\r
public GQuery parents() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Node par = e.getParentNode();\r
while (par != null && par != document) {\r
* returned, not all previous siblings.\r
*/\r
public GQuery prev() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Element next = getPreviousSiblingElement(e);\r
if (next != null) {\r
* previous sibling is returned, not all previous siblings.\r
*/\r
public GQuery prev(String... selectors) {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
Element next = getPreviousSiblingElement(e);\r
if (next != null) {\r
* Find all sibling elements in front of the current element.\r
*/\r
public GQuery prevAll() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
allPreviousSiblingElements(getPreviousSiblingElement(e), result);\r
}\r
*/\r
public GQuery show() {\r
for (Element e : elements()) {\r
- styleImpl.setStyleProperty(e, "display", GQUtils.or((String) data(e,\r
+ styleImpl.setStyleProperty(e, "display", JsUtils.or((String) data(e,\r
"oldDisplay", null), ""));\r
// When the display=none is in the stylesheet.\r
if (!styleImpl.isVisible(e)) {\r
* matched set of elements.\r
*/\r
public GQuery siblings() {\r
- JSArray result = JSArray.create();\r
+ JsNodeArray result = JsNodeArray.create();\r
for (Element e : elements()) {\r
allNextSiblingElements(e.getParentElement().getFirstChildElement(),\r
result, e);\r
* Selects a subset of the matched elements.\r
*/\r
public GQuery slice(int start, int end) {\r
- JSArray slice = JSArray.create();\r
+ JsNodeArray slice = JsNodeArray.create();\r
if (end == -1 || end > elements.getLength()) {\r
end = elements.getLength();\r
}\r
* Remove all duplicate elements from an array of elements. Note that this\r
* only works on arrays of DOM elements, not strings or numbers.\r
*/\r
- public JSArray unique(JSArray result) {\r
- return GQUtils.unique(result.<JsArray<Element>> cast()).cast();\r
+ public JsNodeArray unique(JsNodeArray result) {\r
+ return JsUtils.unique(result.<JsArray<Element>> cast()).cast();\r
}\r
\r
/**\r
return wrapInner($(html));\r
}\r
\r
- protected GQuery pushStack(JSArray elts, String name, String selector) {\r
+ protected GQuery pushStack(JsNodeArray elts, String name, String selector) {\r
GQuery g = new GQuery(elts);\r
g.setPreviousObject(this);\r
g.setSelector(selector);\r
}\r
\r
private void allNextSiblingElements(Element firstChildElement,\r
- JSArray result, Element elem) {\r
+ JsNodeArray result, Element elem) {\r
while (firstChildElement != null) {\r
if (firstChildElement != elem) {\r
result.addNode(firstChildElement);\r
}\r
\r
private void allPreviousSiblingElements(Element firstChildElement,\r
- JSArray result) {\r
+ JsNodeArray result) {\r
while (firstChildElement != null) {\r
result.addNode(firstChildElement);\r
firstChildElement = getPreviousSiblingElement(firstChildElement);\r
}\r
\r
private GQuery domManip(GQuery g, int func, Element... elms) {\r
- JSArray newNodes = JSArray.create();\r
+ JsNodeArray newNodes = JsNodeArray.create();\r
if (elms.length == 0) {\r
elms = elements();\r
}\r
return sib;\r
}-*/;\r
\r
- private JSArray merge(NodeList<Element> first, NodeList<Element> second) {\r
- JSArray res = copyNodeList(first);\r
+ private JsNodeArray merge(NodeList<Element> first, NodeList<Element> second) {\r
+ JsNodeArray res = copyNodeList(first);\r
for (int i = 0; i < second.getLength(); i++) {\r
res.addNode(second.getItem(i));\r
}\r
*/\r
package com.google.gwt.query.client;\r
\r
-import com.google.gwt.core.client.JavaScriptObject;\r
-import com.google.gwt.dom.client.Element;\r
import com.google.gwt.dom.client.Node;\r
import com.google.gwt.dom.client.NodeList;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
\r
/**\r
+ * @deprecated use JsNodeArray\r
*/\r
-public class JSArray extends NodeList<Element> {\r
+@Deprecated\r
+public final class JSArray extends JsNodeArray {\r
+ \r
+ protected JSArray() {\r
+ }\r
\r
public static JSArray create() {\r
- return (JSArray) JavaScriptObject.createArray();\r
+ return JsNodeArray.create().cast();\r
}\r
\r
- public static native JSArray create(Node node) /*-{\r
- return node ? [node] : [];\r
- }-*/;\r
+ public static JSArray create(Node node) {\r
+ return JsNodeArray.create(node).cast();\r
+ }\r
\r
public static JSArray create(NodeList<?> nl) {\r
JSArray ret = create();\r
return ret;\r
}\r
\r
- protected JSArray() {\r
- }\r
-\r
- public final native void addInt(int i) /*-{\r
- this[this.length]=i;\r
- }-*/;\r
-\r
- public final native void addNode(Node n) /*-{\r
- if (n) this[this.length]=n;\r
- }-*/;\r
-\r
- public final native void addNode(Node n, int i) /*-{\r
- if (n) this[i]=n;\r
- }-*/;\r
-\r
- public final native void concat(JSArray ary) /*-{\r
- this.concat(ary);\r
- }-*/;\r
-\r
- public final native Element getElement(int i) /*-{\r
- return this[i];\r
- }-*/;\r
-\r
- public final native int getInt(int i) /*-{\r
- return this[i] || 0;\r
- }-*/;\r
-\r
- public final native Node getNode(int i) /*-{\r
- return this[i];\r
- }-*/;\r
-\r
- public final native String getStr(int i) /*-{\r
- return this[i] || null;\r
- }-*/;\r
-\r
- public final void pushAll(JSArray prevElem) {\r
- for (int i = 0, ilen = prevElem.size(); i < ilen; i++) {\r
- addNode(prevElem.getNode(i));\r
- }\r
- }\r
-\r
- public final native int size() /*-{\r
- return this.length;\r
- }-*/;\r
}\r
+++ /dev/null
-/*\r
- * Copyright 2011, The gwtquery team.\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
- * use this file except in compliance with the License. You may obtain a copy of\r
- * the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
- * License for the specific language governing permissions and limitations under\r
- * the License.\r
- */\r
-package com.google.gwt.query.client;\r
-\r
-import com.google.gwt.core.client.JavaScriptObject;\r
-\r
-/**\r
- * A wrapper around Javascript Regexps.\r
- */\r
-public class JSRegexp {\r
-\r
- public static native JavaScriptObject compile(String pat) /*-{\r
- return new RegExp(pat);\r
- }-*/;\r
-\r
- public static native JavaScriptObject compileFlags(String pat, String flags) /*-{\r
- return new RegExp(pat, flags);\r
- }-*/;\r
-\r
- public static JSArray match(String regexp, String flags, String string) {\r
- return new JSRegexp(regexp, flags).match(string);\r
- }\r
-\r
- private static native JSArray exec0(JavaScriptObject regexp, String str) /*-{\r
- return regexp.exec(str);\r
- }-*/;\r
-\r
- private final JavaScriptObject regexp;\r
-\r
- public JSRegexp(String pattern) {\r
- this.regexp = compile(pattern);\r
- }\r
-\r
- public JSRegexp(String pat, String flags) {\r
- this.regexp = compileFlags(pat, flags);\r
- }\r
-\r
- public JSArray exec(String str) {\r
- return exec0(regexp, str);\r
- }\r
-\r
- public JSArray match(String currentRule) {\r
- return match0(regexp, currentRule);\r
- }\r
-\r
- public boolean test(String rule) {\r
- return test0(regexp, rule);\r
- }\r
-\r
- private native JSArray match0(JavaScriptObject regexp, String currentRule)/*-{\r
- return currentRule.match(regexp);\r
- }-*/;\r
-\r
- private native boolean test0(JavaScriptObject regexp, String rule) /*-{\r
- return regexp.test(rule);\r
- }-*/;\r
-}\r
+++ /dev/null
-/*
- * Copyright 2011, The gwtquery team.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Overlay type representing a Javascript closure.
- */
-public class JsClosure extends JavaScriptObject {
-
- protected JsClosure() {
- }
-
- /**
- * Invoke the closure with no arguments and expecting no return value.
- */
- public final native void invoke() /*-{
- return this();
- }-*/;
-}
+++ /dev/null
-/*
- * Copyright 2011, The gwtquery team.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Lightweight JSO backed implemented of a Map, using Object.hashCode() as key.
- */
-final public class JsMap<S, T> extends JavaScriptObject {
-
- protected JsMap() {
- }
-
- public T get(S key) {
- return get(key.hashCode());
- }
-
- public native T get(int hashCode) /*-{
- return this[hashCode] || null;
- }-*/;
-
- public void put(S key, T val) {
- put(key.hashCode(), val);
- }
-
- public native void put(int hashCode, T val) /*-{
- this[hashCode]=val;
- }-*/;
-}
+++ /dev/null
-/*
- * Copyright 2011, The gwtquery team.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Lightweight JSO based array class that can store objects rather than just
- * other JSOs.
- */
-public final class JsObjectArray<T> extends JavaScriptObject {
-
- protected JsObjectArray() {
- }
-
- public void add(T val) {
- set(length(), val);
- }
-
- public native T get(int i) /*-{
- return this[i];
- }-*/;
-
- public native int length() /*-{
- return this.length;
- }-*/;
-
- public native void set(int i, T val) /*-{
- this[i]=val;
- }-*/;
-}
* the License.
*/
package com.google.gwt.query.client;
-import static com.google.gwt.query.client.plugins.Effects.Effects;
-import static com.google.gwt.query.client.plugins.Events.Events;
-import static com.google.gwt.query.client.plugins.Widgets.Widgets;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-import com.google.gwt.core.client.JsArrayString;
-import com.google.gwt.dom.client.BodyElement;
-import com.google.gwt.dom.client.ButtonElement;
-import com.google.gwt.dom.client.Document;
+import java.util.List;
+
import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.IFrameElement;
-import com.google.gwt.dom.client.InputElement;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.dom.client.OptionElement;
-import com.google.gwt.dom.client.SelectElement;
-import com.google.gwt.dom.client.TextAreaElement;
-import com.google.gwt.dom.client.Style.Display;
import com.google.gwt.dom.client.Style.HasCssName;
import com.google.gwt.query.client.css.CSS;
import com.google.gwt.query.client.css.HasCssValue;
import com.google.gwt.query.client.css.TakesCssValue;
import com.google.gwt.query.client.css.TakesCssValue.CssSetter;
-import com.google.gwt.query.client.impl.DocumentStyleImpl;
-import com.google.gwt.query.client.impl.SelectorEngine;
-import com.google.gwt.query.client.plugins.Plugin;
-import com.google.gwt.query.client.plugins.events.EventsListener;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.EventListener;
-import com.google.gwt.user.client.Window;
+import com.google.gwt.query.client.js.JsNodeArray;
import com.google.gwt.user.client.ui.Widget;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import com.google.gwt.query.client.LazyBase;
public interface LazyGQuery<T> extends LazyBase<T>{
*/
<T extends GQuery> T as(Class<T> plugin);
- /**
- * Return a GWT Widget containing the first matched element.
- *
- * If the element is already associated to a widget it returns the original
- * widget, otherwise a new GWT widget will be created depending on the
- * tagName.
- *
- */
- // Widget asWidget();
-
/**
* Set a key/value object as properties to all matched elements.
*
* Remove all duplicate elements from an array of elements. Note that this
* only works on arrays of DOM elements, not strings or numbers.
*/
- JSArray unique(JSArray result);
+ JsNodeArray unique(JsNodeArray result);
/**
* Gets the content of the value attribute of the first matched element,
package com.google.gwt.query.client.impl;
import com.google.gwt.dom.client.Element;
-import com.google.gwt.query.client.GQUtils;
+import com.google.gwt.query.client.js.JsUtils;
/**
* A helper class to get computed CSS styles for elements.
public double getOpacity(Element e) {
String o = e.getStyle().getOpacity();
- return GQUtils.truth(o) ? num(o) : 1;
+ return JsUtils.truth(o) ? num(o) : 1;
}
public int getWidth(Element e) {
public double num(String val) {
val = val.trim().replaceAll("[^\\d\\.\\-]+.*$", "");
- return GQUtils.truth(val) ? Double.parseDouble(val) : 0;
+ return JsUtils.truth(val) ? Double.parseDouble(val) : 0;
}
/**
import com.google.gwt.dom.client.Element;\r
import com.google.gwt.dom.client.Node;\r
import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.JSArray;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
\r
/**\r
* Core Selector engine functions, and native JS utility functions.\r
}-*/;\r
\r
public static NodeList<Element> xpathEvaluate(String selector, Node ctx) {\r
- return xpathEvaluate(selector, ctx, JSArray.create());\r
+ return xpathEvaluate(selector, ctx, JsNodeArray.create());\r
}\r
\r
public static native NodeList<Element> xpathEvaluate(String selector,\r
- Node ctx, JSArray r) /*-{\r
+ Node ctx, JsNodeArray r) /*-{\r
var node;\r
var ownerDoc = ctx && (ctx.ownerDocument || ctx );\r
var evalDoc = ownerDoc ? ownerDoc : $doc;\r
this.root = root;\r
}\r
\r
- protected JSArray veryQuickId(Node context, String id) {\r
- JSArray r = JSArray.create();\r
+ protected JsNodeArray veryQuickId(Node context, String id) {\r
+ JsNodeArray r = JsNodeArray.create();\r
if (context.getNodeType() == Node.DOCUMENT_NODE) {\r
r.addNode(((Document) context).getElementById(id));\r
return r;\r
import com.google.gwt.dom.client.Element;\r
import com.google.gwt.dom.client.Node;\r
import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
\r
/**\r
* Runtime selector engine implementation which translates selectors to XPath\r
// when using this engine in generators and tests for the JVM\r
private Replacer replacer = new Replacer() {\r
public String replaceAll(String s, String r, Object o) {\r
- JSRegexp p = new JSRegexp(r);\r
+ JsRegexp p = new JsRegexp(r);\r
if (o instanceof ReplaceCallback) {\r
ReplaceCallback callback = (ReplaceCallback) o;\r
while (p.test(s)) {\r
- JSArray a = p.match(s);\r
+ JsObjectArray<String> a = p.match(s);\r
ArrayList<String> args = new ArrayList<String>();\r
- for (int i = 0; i < a.getLength(); i++) {\r
- args.add(a.getStr(i));\r
+ for (int i = 0; i < a.length(); i++) {\r
+ args.add(a.get(i));\r
}\r
String f = callback.foundMatch(args);\r
s = s.replaceFirst(r, f);\r
}\r
\r
public NodeList<Element> select(String sel, Node ctx) {\r
- JSArray elm = JSArray.create();\r
+ JsNodeArray elm = JsNodeArray.create();\r
String xsel = cache.get(sel);\r
if (xsel == null) {\r
xsel = sel.startsWith("./") || sel.startsWith("/") ? sel : css2Xpath(sel);\r
cache.put(sel, xsel);\r
}\r
SelectorEngine.xpathEvaluate(xsel, ctx, elm);\r
- return GQUtils.unique(elm.<JsArray<Element>> cast()).cast();\r
+ return JsUtils.unique(elm.<JsArray<Element>> cast()).cast();\r
}\r
\r
}\r
* the License.\r
*/\r
package com.google.gwt.query.client.impl;\r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
-\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
\r
/**\r
* Base/Utility class for runtime selector engine implementations.\r
*/\r
package com.google.gwt.query.client.impl.research;\r
\r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
+import static com.google.gwt.query.client.js.JsUtils.eq;\r
+import static com.google.gwt.query.client.js.JsUtils.truth;\r
\r
import com.google.gwt.core.client.JavaScriptObject;\r
import com.google.gwt.core.client.JsArray;\r
import com.google.gwt.dom.client.Element;\r
import com.google.gwt.dom.client.Node;\r
import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
import com.google.gwt.query.client.impl.SelectorEngine;\r
import com.google.gwt.query.client.impl.SelectorEngineImpl;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
\r
/**\r
* Runtime selector engine implementation with no-XPath/native support based on\r
\r
protected static Sequence getSequence(String expression) {\r
int start = 0, add = 2, max = -1, modVal = -1;\r
- JSRegexp expressionRegExp = new JSRegexp(\r
+ JsRegexp expressionRegExp = new JsRegexp(\r
"^((odd|even)|([1-9]\\d*)|((([1-9]\\d*)?)n((\\+|\\-)(\\d+))?)|(\\-(([1-9]\\d*)?)n\\+(\\d+)))$");\r
- JSArray pseudoValue = expressionRegExp.exec(expression);\r
+ JsObjectArray<String> pseudoValue = expressionRegExp.exec(expression);\r
if (!truth(pseudoValue)) {\r
return null;\r
} else {\r
- if (truth(pseudoValue.getStr(2))) { // odd or even\r
- start = (eq(pseudoValue.getStr(2), "odd")) ? 1 : 2;\r
+ if (truth(pseudoValue.get(2))) { // odd or even\r
+ start = (eq(pseudoValue.get(2), "odd")) ? 1 : 2;\r
modVal = (start == 1) ? 1 : 0;\r
- } else if (GQUtils\r
- .truth(pseudoValue.getStr(3))) { // single digit\r
- start = Integer.parseInt(pseudoValue.getStr(3), 10);\r
+ } else if (JsUtils\r
+ .truth(pseudoValue.get(3))) { // single digit\r
+ start = Integer.parseInt(pseudoValue.get(3), 10);\r
add = 0;\r
max = start;\r
- } else if (truth(pseudoValue.getStr(4))) { // an+b\r
- add = truth(pseudoValue.getStr(6)) ? Integer\r
- .parseInt(pseudoValue.getStr(6), 10) : 1;\r
- start = truth(pseudoValue.getStr(7)) ? Integer.parseInt(\r
- (pseudoValue.getStr(8).charAt(0) == '+' ? ""\r
- : pseudoValue.getStr(8)) + pseudoValue.getStr(9), 10) : 0;\r
+ } else if (truth(pseudoValue.get(4))) { // an+b\r
+ add = truth(pseudoValue.get(6)) ? Integer\r
+ .parseInt(pseudoValue.get(6), 10) : 1;\r
+ start = truth(pseudoValue.get(7)) ? Integer.parseInt(\r
+ (pseudoValue.get(8).charAt(0) == '+' ? ""\r
+ : pseudoValue.get(8)) + pseudoValue.get(9), 10) : 0;\r
while (start < 1) {\r
start += add;\r
}\r
modVal = (start > add) ? (start - add) % add\r
: ((start == add) ? 0 : start);\r
- } else if (truth(pseudoValue.getStr(10))) { // -an+b\r
- add = truth(pseudoValue.getStr(12)) ? Integer\r
- .parseInt(pseudoValue.getStr(12), 10) : 1;\r
- start = max = Integer.parseInt(pseudoValue.getStr(13), 10);\r
+ } else if (truth(pseudoValue.get(10))) { // -an+b\r
+ add = truth(pseudoValue.get(12)) ? Integer\r
+ .parseInt(pseudoValue.get(12), 10) : 1;\r
+ start = max = Integer.parseInt(pseudoValue.get(13), 10);\r
while (start > add) {\r
start -= add;\r
}\r
return s;\r
}\r
\r
- public static void clearAdded(JSArray a) {\r
+ public static void clearAdded(JsNodeArray a) {\r
for (int i = 0, len = a.size(); i < len; i++) {\r
clearAdded(a.getNode(i));\r
}\r
prevRef.added = added;\r
}-*/;\r
\r
- public static native void setSkipTag(JSArray prevElem, boolean skip) /*-{\r
+ public static native void setSkipTag(JsNodeArray prevElem, boolean skip) /*-{\r
prevElem.skipTag = skip;\r
}-*/;\r
\r
private static String attrToRegExp(String attrVal, String op) {\r
- if (GQUtils.eq("^", op)) {\r
+ if (JsUtils.eq("^", op)) {\r
return "^" + attrVal;\r
}\r
- if (GQUtils.eq("$", op)) {\r
+ if (JsUtils.eq("$", op)) {\r
return attrVal + "$";\r
}\r
- if (GQUtils.eq("*", op)) {\r
+ if (JsUtils.eq("*", op)) {\r
return attrVal;\r
}\r
- if (GQUtils.eq("|", op)) {\r
+ if (JsUtils.eq("|", op)) {\r
return "(^" + attrVal + "(\\-\\w+)*$)";\r
}\r
- if (GQUtils.eq("~", op)) {\r
+ if (JsUtils.eq("~", op)) {\r
return "\\b" + attrVal + "\\b";\r
}\r
- return GQUtils.truth(attrVal) ? "^" + attrVal + "$" : null;\r
+ return JsUtils.truth(attrVal) ? "^" + attrVal + "$" : null;\r
}\r
\r
private static native boolean checked(Node previous) /*-{\r
return previous.checked || false;\r
}-*/;\r
\r
- private static void clearChildElms(JSArray prevParents) {\r
+ private static void clearChildElms(JsNodeArray prevParents) {\r
for (int n = 0, nl = prevParents.size(); n < nl; n++) {\r
setHasChildElms(prevParents.getNode(n), false);\r
}\r
return !node.disabled;\r
}-*/;\r
\r
- private static void getDescendantNodes(JSArray matchingElms,\r
+ private static void getDescendantNodes(JsNodeArray matchingElms,\r
String nextTagStr, Node prevRef) {\r
NodeList<Element> children = getElementsByTagName(nextTagStr, prevRef);\r
for (int k = 0, klen = children.getLength(); k < klen; k++) {\r
return ((Element) ctx).getElementsByTagName(tag);\r
}\r
\r
- private static void getGeneralSiblingNodes(JSArray matchingElms,\r
- JSArray nextTag, JSRegexp nextRegExp, Node prevRef) {\r
+ private static void getGeneralSiblingNodes(JsNodeArray matchingElms,\r
+ JsObjectArray<String> nextTag, JsRegexp nextRegExp, Node prevRef) {\r
while (\r
- GQUtils.truth((prevRef = SelectorEngine.getNextSibling(prevRef)))\r
+ JsUtils.truth((prevRef = SelectorEngine.getNextSibling(prevRef)))\r
&& !isAdded(prevRef)) {\r
- if (!GQUtils.truth(nextTag) || nextRegExp\r
+ if (!JsUtils.truth(nextTag) || nextRegExp\r
.test(prevRef.getNodeName())) {\r
setAdded(prevRef, true);\r
matchingElms.addNode(prevRef);\r
}\r
}\r
\r
- private static void getSiblingNodes(JSArray matchingElms, JSArray nextTag,\r
- JSRegexp nextRegExp, Node prevRef) {\r
+ private static void getSiblingNodes(JsNodeArray matchingElms, JsObjectArray<String> nextTag,\r
+ JsRegexp nextRegExp, Node prevRef) {\r
while (\r
- GQUtils.truth(prevRef = SelectorEngine.getNextSibling(prevRef))\r
+ JsUtils.truth(prevRef = SelectorEngine.getNextSibling(prevRef))\r
&& prevRef.getNodeType() != Node.ELEMENT_NODE) {\r
}\r
- if (GQUtils.truth(prevRef)) {\r
- if (!GQUtils.truth(nextTag) || nextRegExp\r
+ if (JsUtils.truth(prevRef)) {\r
+ if (!JsUtils.truth(nextTag) || nextRegExp\r
.test(prevRef.getNodeName())) {\r
matchingElms.addNode(prevRef);\r
}\r
return prevParent.childElms || false;\r
}-*/;\r
\r
- private static native boolean isSkipped(JSArray prevElem) /*-{\r
+ private static native boolean isSkipped(JsNodeArray prevElem) /*-{\r
return prevElem.skipTag || false;\r
}-*/;\r
\r
prevParent.childElms = bool ? bool : null;\r
}-*/;\r
\r
- private static native JSArray subtractArray(JSArray previousMatch,\r
- JSArray elementsByPseudo) /*-{\r
+ private static native JsNodeArray subtractArray(JsNodeArray previousMatch,\r
+ JsNodeArray elementsByPseudo) /*-{\r
for (var i=0, src1; (src1=arr1[i]); i++) {\r
var found = false;\r
for (var j=0, src2; (src2=arr2[j]); j++) {\r
return arr;\r
}-*/;\r
\r
- private JSRegexp cssSelectorRegExp;\r
+ private JsRegexp cssSelectorRegExp;\r
\r
- private JSRegexp selectorSplitRegExp;\r
+ private JsRegexp selectorSplitRegExp;\r
\r
- private JSRegexp childOrSiblingRefRegExp;\r
+ private JsRegexp childOrSiblingRefRegExp;\r
\r
public SelectorEngineJS() {\r
- selectorSplitRegExp = new JSRegexp("[^\\s]+", "g");\r
- childOrSiblingRefRegExp = new JSRegexp("^(>|\\+|~)$");\r
- cssSelectorRegExp = new JSRegexp(\r
+ selectorSplitRegExp = new JsRegexp("[^\\s]+", "g");\r
+ childOrSiblingRefRegExp = new JsRegexp("^(>|\\+|~)$");\r
+ cssSelectorRegExp = new JsRegexp(\r
"^(\\w+)?(#[\\w\\u00C0-\\uFFFF\\-\\_]+|(\\*))?((\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?((\\[\\w+(\\^|\\$|\\*|\\||~)?(=[\"']*[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+[\"']*)?\\]+)*)?(((:\\w+[\\w\\-]*)(\\((odd|even|\\-?\\d*n?((\\+|\\-)\\d+)?|[\\w\\u00C0-\\uFFFF\\-_]+|((\\w*\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?|(\\[#?\\w+(\\^|\\$|\\*|\\||~)?=?[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+\\]+)|(:\\w+[\\w\\-]*))\\))?)*)?");\r
}\r
\r
public NodeList<Element> select(String sel, Node ctx) {\r
String selectors[] = sel.replace("\\s*(,)\\s*", "$1").split(",");\r
boolean identical = false;\r
- JSArray elm = JSArray.create();\r
+ JsNodeArray elm = JsNodeArray.create();\r
for (int a = 0, len = selectors.length; a < len; a++) {\r
if (a > 0) {\r
identical = false;\r
for (int b = 0, bl = a; b < bl; b++) {\r
- if (GQUtils.eq(selectors[a], selectors[b])) {\r
+ if (JsUtils.eq(selectors[a], selectors[b])) {\r
identical = true;\r
break;\r
}\r
}\r
}\r
String currentRule = selectors[a];\r
- JSArray cssSelectors = selectorSplitRegExp.match(currentRule);\r
- JSArray prevElem = JSArray.create(ctx);\r
- for (int i = 0, slen = cssSelectors.size(); i < slen; i++) {\r
- JSArray matchingElms = JSArray.create();\r
- String rule = cssSelectors.getStr(i);\r
+ JsObjectArray<String> cssSelectors = selectorSplitRegExp.match(currentRule);\r
+ JsNodeArray prevElem = JsNodeArray.create(ctx);\r
+ for (int i = 0, slen = cssSelectors.length(); i < slen; i++) {\r
+ JsNodeArray matchingElms = JsNodeArray.create();\r
+ String rule = cssSelectors.get(i);\r
if (i > 0 && childOrSiblingRefRegExp.test(rule)) {\r
- JSArray childOrSiblingRef = childOrSiblingRefRegExp.exec(rule);\r
- if (GQUtils.truth(childOrSiblingRef)) {\r
- JSArray nextTag = new JSRegexp("^\\w+")\r
- .exec(cssSelectors.getStr(i + 1));\r
- JSRegexp nextRegExp = null;\r
+ JsObjectArray<String> childOrSiblingRef = childOrSiblingRefRegExp.exec(rule);\r
+ if (JsUtils.truth(childOrSiblingRef)) {\r
+ JsObjectArray<String> nextTag = new JsRegexp("^\\w+")\r
+ .exec(cssSelectors.get(i + 1));\r
+ JsRegexp nextRegExp = null;\r
String nextTagStr = null;\r
- if (GQUtils.truth(nextTag)) {\r
- nextTagStr = nextTag.getStr(0);\r
- nextRegExp = new JSRegexp("(^|\\s)" + nextTagStr + "(\\s|$)", "i");\r
+ if (JsUtils.truth(nextTag)) {\r
+ nextTagStr = nextTag.get(0);\r
+ nextRegExp = new JsRegexp("(^|\\s)" + nextTagStr + "(\\s|$)", "i");\r
}\r
for (int j = 0, jlen = prevElem.size(); j < jlen; j++) {\r
Node prevRef = prevElem.getNode(j);\r
- String ref = childOrSiblingRef.getStr(0);\r
- if (GQUtils.eq(">", ref)) {\r
+ String ref = childOrSiblingRef.get(0);\r
+ if (JsUtils.eq(">", ref)) {\r
getDescendantNodes(matchingElms, nextTagStr, prevRef);\r
- } else if (GQUtils.eq("+", ref)) {\r
+ } else if (JsUtils.eq("+", ref)) {\r
getSiblingNodes(matchingElms, nextTag, nextRegExp, prevRef);\r
- } else if (GQUtils.eq("~", ref)) {\r
+ } else if (JsUtils.eq("~", ref)) {\r
getGeneralSiblingNodes(matchingElms, nextTag, nextRegExp,\r
prevRef);\r
}\r
}\r
prevElem = matchingElms;\r
clearAdded(prevElem);\r
- rule = cssSelectors.getStr(++i);\r
- if (new JSRegexp("^\\w+$").test(rule)) {\r
+ rule = cssSelectors.get(++i);\r
+ if (new JsRegexp("^\\w+$").test(rule)) {\r
continue;\r
}\r
setSkipTag(prevElem, true);\r
}\r
}\r
- JSArray cssSelector = cssSelectorRegExp.exec(rule);\r
+ JsObjectArray<String> cssSelector = cssSelectorRegExp.exec(rule);\r
SplitRule splitRule = new SplitRule(\r
- !GQUtils.truth(cssSelector.getStr(1)) || GQUtils\r
- .eq(cssSelector.getStr(3), "*") ? "*" : cssSelector.getStr(1),\r
- !GQUtils.eq(cssSelector.getStr(3), "*") ? cssSelector\r
- .getStr(2) : null, cssSelector.getStr(4), cssSelector.getStr(6),\r
- cssSelector.getStr(10));\r
- if (GQUtils.truth(splitRule.id)) {\r
+ !JsUtils.truth(cssSelector.get(1)) || JsUtils\r
+ .eq(cssSelector.get(3), "*") ? "*" : cssSelector.get(1),\r
+ !JsUtils.eq(cssSelector.get(3), "*") ? cssSelector\r
+ .get(2) : null, cssSelector.get(4), cssSelector.get(6),\r
+ cssSelector.get(10));\r
+ if (JsUtils.truth(splitRule.id)) {\r
Element domelem = Document.get()\r
.getElementById(splitRule.id.substring(1));\r
- if (GQUtils.truth(domelem)) {\r
- matchingElms = JSArray.create(domelem);\r
+ if (JsUtils.truth(domelem)) {\r
+ matchingElms = JsNodeArray.create(domelem);\r
}\r
prevElem = matchingElms;\r
- } else if (GQUtils.truth(splitRule.tag) && !isSkipped(\r
+ } else if (JsUtils.truth(splitRule.tag) && !isSkipped(\r
prevElem)) {\r
if (i == 0 && matchingElms.size() == 0 && prevElem.size() == 1) {\r
- prevElem = matchingElms = JSArray.create(\r
+ prevElem = matchingElms = JsNodeArray.create(\r
getElementsByTagName(splitRule.tag, prevElem.getNode(0)));\r
} else {\r
NodeList<Element> tagCollectionMatches;\r
break;\r
}\r
setSkipTag(prevElem, false);\r
- if (GQUtils.truth(splitRule.allClasses)) {\r
+ if (JsUtils.truth(splitRule.allClasses)) {\r
String[] allClasses = splitRule.allClasses.replaceFirst("^\\.", "")\r
.split("\\.");\r
- JSRegexp[] regExpClassNames = new JSRegexp[allClasses.length];\r
+ JsRegexp[] regExpClassNames = new JsRegexp[allClasses.length];\r
for (int n = 0, nl = allClasses.length; n < nl; n++) {\r
- regExpClassNames[n] = new JSRegexp(\r
+ regExpClassNames[n] = new JsRegexp(\r
"(^|\\s)" + allClasses[n] + "(\\s|$)");\r
}\r
- JSArray matchingClassElms = JSArray.create();\r
+ JsNodeArray matchingClassElms = JsNodeArray.create();\r
for (int o = 0, olen = prevElem.size(); o < olen; o++) {\r
Element current = prevElem.getElement(o);\r
String elmClass = current.getClassName();\r
boolean addElm = false;\r
- if (GQUtils.truth(elmClass) && !isAdded(current)) {\r
+ if (JsUtils.truth(elmClass) && !isAdded(current)) {\r
for (int p = 0, pl = regExpClassNames.length; p < pl; p++) {\r
addElm = regExpClassNames[p].test(elmClass);\r
if (!addElm) {\r
clearAdded(prevElem);\r
prevElem = matchingElms = matchingClassElms;\r
}\r
- if (GQUtils.truth(splitRule.allAttr)) {\r
- JSArray allAttr = JSRegexp\r
+ if (JsUtils.truth(splitRule.allAttr)) {\r
+ JsObjectArray<String> allAttr = JsRegexp\r
.match("\\[[^\\]]+\\]", "g", splitRule.allAttr);\r
- JSRegexp[] regExpAttributes = new JSRegexp[allAttr.size()];\r
- String[] regExpAttributesStr = new String[allAttr.size()];\r
- JSRegexp attributeMatchRegExp = new JSRegexp(\r
+ JsRegexp[] regExpAttributes = new JsRegexp[allAttr.length()];\r
+ String[] regExpAttributesStr = new String[allAttr.length()];\r
+ JsRegexp attributeMatchRegExp = new JsRegexp(\r
"(\\w+)(\\^|\\$|\\*|\\||~)?=?[\"']?([\\w\u00C0-\uFFFF\\s\\-_\\.]+)?");\r
- for (int q = 0, ql = allAttr.size(); q < ql; q++) {\r
- JSArray attributeMatch = attributeMatchRegExp\r
- .exec(allAttr.getStr(q));\r
+ for (int q = 0, ql = allAttr.length(); q < ql; q++) {\r
+ JsObjectArray<String> attributeMatch = attributeMatchRegExp\r
+ .exec(allAttr.get(q));\r
String attributeValue =\r
- GQUtils.truth(attributeMatch.getStr(3))\r
- ? attributeMatch.getStr(3).replaceAll("\\.", "\\.")\r
+ JsUtils.truth(attributeMatch.get(3))\r
+ ? attributeMatch.get(3).replaceAll("\\.", "\\.")\r
: null;\r
String attrVal = attrToRegExp(attributeValue,\r
- (GQUtils.or(attributeMatch.getStr(2), null)));\r
- regExpAttributes[q] = (GQUtils.truth(attrVal) ? new JSRegexp(\r
+ (JsUtils.or(attributeMatch.get(2), null)));\r
+ regExpAttributes[q] = (JsUtils.truth(attrVal) ? new JsRegexp(\r
attrVal) : null);\r
- regExpAttributesStr[q] = attributeMatch.getStr(1);\r
+ regExpAttributesStr[q] = attributeMatch.get(1);\r
}\r
- JSArray matchingAttributeElms = JSArray.create();\r
+ JsNodeArray matchingAttributeElms = JsNodeArray.create();\r
\r
for (int r = 0, rlen = matchingElms.size(); r < rlen; r++) {\r
Element current = matchingElms.getElement(r);\r
for (int s = 0, sl = regExpAttributes.length;\r
s < sl; s++) {\r
addElm = false;\r
- JSRegexp attributeRegexp = regExpAttributes[s];\r
+ JsRegexp attributeRegexp = regExpAttributes[s];\r
String currentAttr = getAttr(current, regExpAttributesStr[s]);\r
- if (GQUtils.truth(currentAttr)\r
+ if (JsUtils.truth(currentAttr)\r
&& currentAttr.length() != 0) {\r
if (attributeRegexp == null || attributeRegexp\r
.test(currentAttr)) {\r
}\r
prevElem = matchingElms = matchingAttributeElms;\r
}\r
- if (GQUtils.truth(splitRule.allPseudos)) {\r
- JSRegexp pseudoSplitRegExp = new JSRegexp(\r
+ if (JsUtils.truth(splitRule.allPseudos)) {\r
+ JsRegexp pseudoSplitRegExp = new JsRegexp(\r
":(\\w[\\w\\-]*)(\\(([^\\)]+)\\))?");\r
\r
- JSArray allPseudos = JSRegexp\r
+ JsObjectArray<String> allPseudos = JsRegexp\r
.match("(:\\w+[\\w\\-]*)(\\([^\\)]+\\))?", "g",\r
splitRule.allPseudos);\r
- for (int t = 0, tl = allPseudos.size(); t < tl; t++) {\r
- JSArray pseudo = pseudoSplitRegExp.match(allPseudos.getStr(t));\r
- String pseudoClass = GQUtils.truth(pseudo.getStr(1))\r
- ? pseudo.getStr(1).toLowerCase() : null;\r
- String pseudoValue = GQUtils.truth(pseudo.getStr(3))\r
- ? pseudo.getStr(3) : null;\r
+ for (int t = 0, tl = allPseudos.length(); t < tl; t++) {\r
+ JsObjectArray<String> pseudo = pseudoSplitRegExp.match(allPseudos.get(t));\r
+ String pseudoClass = JsUtils.truth(pseudo.get(1))\r
+ ? pseudo.get(1).toLowerCase() : null;\r
+ String pseudoValue = JsUtils.truth(pseudo.get(3))\r
+ ? pseudo.get(3) : null;\r
matchingElms = getElementsByPseudo(matchingElms, pseudoClass,\r
pseudoValue);\r
clearAdded(matchingElms);\r
elm.pushAll(prevElem);\r
}\r
\r
- return GQUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
+ return JsUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
}\r
\r
protected String getAttr(Element current, String name) {\r
return current.getAttribute(name);\r
}\r
\r
- private void getCheckedPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+ private void getCheckedPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
Node previous;\r
for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
previous = previousMatch.getNode(q);\r
}\r
}\r
\r
- private void getContainsPseudo(JSArray previousMatch, String pseudoValue,\r
- JSArray matchingElms) {\r
+ private void getContainsPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+ JsNodeArray matchingElms) {\r
Node previous;\r
for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
previous = previousMatch.getNode(q);\r
}\r
}\r
\r
- private void getDefaultPseudo(JSArray previousMatch, String pseudoClass,\r
- String pseudoValue, JSArray matchingElms) {\r
+ private void getDefaultPseudo(JsNodeArray previousMatch, String pseudoClass,\r
+ String pseudoValue, JsNodeArray matchingElms) {\r
Node previous;\r
for (int w = 0, wlen = previousMatch.size(); w < wlen; w++) {\r
previous = previousMatch.getElement(w);\r
- if (GQUtils\r
+ if (JsUtils\r
.eq(((Element) previous).getAttribute(pseudoClass), pseudoValue)) {\r
matchingElms.addNode(previous);\r
}\r
}\r
}\r
\r
- private void getDisabledPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+ private void getDisabledPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
Node previous;\r
for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
previous = previousMatch.getNode(q);\r
}\r
}\r
\r
- private JSArray getElementsByPseudo(JSArray previousMatch, String pseudoClass,\r
+ private JsNodeArray getElementsByPseudo(JsNodeArray previousMatch, String pseudoClass,\r
String pseudoValue) {\r
- JSArray prevParents = JSArray.create();\r
+ JsNodeArray prevParents = JsNodeArray.create();\r
boolean previousDir = pseudoClass.startsWith("first") ? true : false;\r
- JSArray matchingElms = JSArray.create();\r
- if (GQUtils.eq("first-child", pseudoClass) || GQUtils\r
+ JsNodeArray matchingElms = JsNodeArray.create();\r
+ if (JsUtils.eq("first-child", pseudoClass) || JsUtils\r
.eq("last-child", pseudoClass)) {\r
getFirstChildPseudo(previousMatch, previousDir, matchingElms);\r
- } else if (GQUtils.eq("only-child", pseudoClass)) {\r
+ } else if (JsUtils.eq("only-child", pseudoClass)) {\r
getOnlyChildPseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("nth-child", pseudoClass)) {\r
+ } else if (JsUtils.eq("nth-child", pseudoClass)) {\r
matchingElms = getNthChildPseudo(previousMatch, pseudoValue, prevParents,\r
matchingElms);\r
- } else if (GQUtils.eq("first-of-type", pseudoClass) || GQUtils\r
+ } else if (JsUtils.eq("first-of-type", pseudoClass) || JsUtils\r
.eq("last-of-type", pseudoClass)) {\r
getFirstOfTypePseudo(previousMatch, previousDir, matchingElms);\r
- } else if (GQUtils.eq("only-of-type", pseudoClass)) {\r
+ } else if (JsUtils.eq("only-of-type", pseudoClass)) {\r
getOnlyOfTypePseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("nth-of-type", pseudoClass)) {\r
+ } else if (JsUtils.eq("nth-of-type", pseudoClass)) {\r
matchingElms = getNthOfTypePseudo(previousMatch, pseudoValue, prevParents,\r
matchingElms);\r
- } else if (GQUtils.eq("empty", pseudoClass)) {\r
+ } else if (JsUtils.eq("empty", pseudoClass)) {\r
getEmptyPseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("enabled", pseudoClass)) {\r
+ } else if (JsUtils.eq("enabled", pseudoClass)) {\r
getEnabledPseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("disabled", pseudoClass)) {\r
+ } else if (JsUtils.eq("disabled", pseudoClass)) {\r
getDisabledPseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("checked", pseudoClass)) {\r
+ } else if (JsUtils.eq("checked", pseudoClass)) {\r
getCheckedPseudo(previousMatch, matchingElms);\r
- } else if (GQUtils.eq("contains", pseudoClass)) {\r
+ } else if (JsUtils.eq("contains", pseudoClass)) {\r
getContainsPseudo(previousMatch, pseudoValue, matchingElms);\r
- } else if (GQUtils.eq("not", pseudoClass)) {\r
+ } else if (JsUtils.eq("not", pseudoClass)) {\r
matchingElms = getNotPseudo(previousMatch, pseudoValue, matchingElms);\r
} else {\r
getDefaultPseudo(previousMatch, pseudoClass, pseudoValue, matchingElms);\r
return matchingElms;\r
}\r
\r
- private void getEmptyPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+ private void getEmptyPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
Node previous;\r
for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
previous = previousMatch.getNode(q);\r
}\r
}\r
\r
- private void getEnabledPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+ private void getEnabledPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
Node previous;\r
for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
previous = previousMatch.getNode(q);\r
}\r
}\r
\r
- private void getFirstChildPseudo(JSArray previousMatch, boolean previousDir,\r
- JSArray matchingElms) {\r
+ private void getFirstChildPseudo(JsNodeArray previousMatch, boolean previousDir,\r
+ JsNodeArray matchingElms) {\r
Node next;\r
Node previous;\r
for (int j = 0, jlen = previousMatch.size(); j < jlen; j++) {\r
previous = next = previousMatch.getElement(j);\r
if (previousDir) {\r
- while (GQUtils\r
+ while (JsUtils\r
.truth((next = SelectorEngine.getPreviousSibling(next)))\r
&& next.getNodeType() != Node.ELEMENT_NODE) {\r
}\r
} else {\r
while (\r
- GQUtils.truth((next = SelectorEngine.getNextSibling(next)))\r
+ JsUtils.truth((next = SelectorEngine.getNextSibling(next)))\r
&& next.getNodeType() != Node.ELEMENT_NODE) {\r
}\r
}\r
- if (!GQUtils.truth(next)) {\r
+ if (!JsUtils.truth(next)) {\r
matchingElms.addNode(previous);\r
}\r
}\r
}\r
\r
- private void getFirstOfTypePseudo(JSArray previousMatch, boolean previousDir,\r
- JSArray matchingElms) {\r
+ private void getFirstOfTypePseudo(JsNodeArray previousMatch, boolean previousDir,\r
+ JsNodeArray matchingElms) {\r
Node previous;\r
Node next;\r
for (int n = 0, nlen = previousMatch.size(); n < nlen; n++) {\r
\r
if (previousDir) {\r
while (\r
- GQUtils.truth(next = SelectorEngine.getPreviousSibling(next))\r
- && !GQUtils\r
+ JsUtils.truth(next = SelectorEngine.getPreviousSibling(next))\r
+ && !JsUtils\r
.eq(next.getNodeName(), previous.getNodeName())) {\r
}\r
} else {\r
- while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
- && !GQUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
+ while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+ && !JsUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
}\r
}\r
\r
- if (!GQUtils.truth(next)) {\r
+ if (!JsUtils.truth(next)) {\r
matchingElms.addNode(previous);\r
}\r
}\r
}\r
\r
- private JSArray getNotPseudo(JSArray previousMatch, String pseudoValue,\r
- JSArray matchingElms) {\r
- if (new JSRegexp("(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
+ private JsNodeArray getNotPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+ JsNodeArray matchingElms) {\r
+ if (new JsRegexp("(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
matchingElms = subtractArray(previousMatch,\r
getElementsByPseudo(previousMatch, pseudoValue.substring(1), ""));\r
} else {\r
pseudoValue = pseudoValue\r
.replace("^\\[#([\\w\\u00C0-\\uFFFF\\-\\_]+)\\]$", "[id=$1]");\r
- JSArray notTag = new JSRegexp("^(\\w+)").exec(pseudoValue);\r
- JSArray notClass = new JSRegexp("^\\.([\\w\u00C0-\uFFFF\\-_]+)")\r
+ JsObjectArray<String> notTag = new JsRegexp("^(\\w+)").exec(pseudoValue);\r
+ JsObjectArray<String> notClass = new JsRegexp("^\\.([\\w\u00C0-\uFFFF\\-_]+)")\r
.exec(pseudoValue);\r
- JSArray notAttr = new JSRegexp(\r
+ JsObjectArray<String> notAttr = new JsRegexp(\r
"\\[(\\w+)(\\^|\\$|\\*|\\||~)?=?([\\w\\u00C0-\\uFFFF\\s\\-_\\.]+)?\\]")\r
.exec(pseudoValue);\r
- JSRegexp notRegExp = new JSRegexp("(^|\\s)"\r
- + (GQUtils.truth(notTag) ? notTag.getStr(1)\r
- : GQUtils.truth(notClass) ? notClass.getStr(1) : "")\r
+ JsRegexp notRegExp = new JsRegexp("(^|\\s)"\r
+ + (JsUtils.truth(notTag) ? notTag.get(1)\r
+ : JsUtils.truth(notClass) ? notClass.get(1) : "")\r
+ "(\\s|$)", "i");\r
- if (GQUtils.truth(notAttr)) {\r
- String notAttribute = GQUtils.truth(notAttr.getStr(3)) ? notAttr\r
- .getStr(3).replace("\\.", "\\.") : null;\r
+ if (JsUtils.truth(notAttr)) {\r
+ String notAttribute = JsUtils.truth(notAttr.get(3)) ? notAttr\r
+ .get(3).replace("\\.", "\\.") : null;\r
String notMatchingAttrVal = attrToRegExp(notAttribute,\r
- notAttr.getStr(2));\r
- notRegExp = new JSRegexp(notMatchingAttrVal, "i");\r
+ notAttr.get(2));\r
+ notRegExp = new JsRegexp(notMatchingAttrVal, "i");\r
}\r
for (int v = 0, vlen = previousMatch.size(); v < vlen; v++) {\r
Element notElm = previousMatch.getElement(v);\r
Element addElm = null;\r
- if (GQUtils.truth(notTag) && !notRegExp\r
+ if (JsUtils.truth(notTag) && !notRegExp\r
.test(notElm.getNodeName())) {\r
addElm = notElm;\r
- } else if (GQUtils.truth(notClass) && !notRegExp\r
+ } else if (JsUtils.truth(notClass) && !notRegExp\r
.test(notElm.getClassName())) {\r
addElm = notElm;\r
- } else if (GQUtils.truth(notAttr)) {\r
- String att = getAttr(notElm, notAttr.getStr(1));\r
- if (!GQUtils.truth(att) || !notRegExp.test(att)) {\r
+ } else if (JsUtils.truth(notAttr)) {\r
+ String att = getAttr(notElm, notAttr.get(1));\r
+ if (!JsUtils.truth(att) || !notRegExp.test(att)) {\r
addElm = notElm;\r
}\r
}\r
- if (GQUtils.truth(addElm) && !isAdded(addElm)) {\r
+ if (JsUtils.truth(addElm) && !isAdded(addElm)) {\r
setAdded(addElm, true);\r
matchingElms.addNode(addElm);\r
}\r
return matchingElms;\r
}\r
\r
- private JSArray getNthChildPseudo(JSArray previousMatch, String pseudoValue,\r
- JSArray prevParents, JSArray matchingElms) {\r
+ private JsNodeArray getNthChildPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+ JsNodeArray prevParents, JsNodeArray matchingElms) {\r
Node previous;\r
- if (GQUtils.eq(pseudoValue, "n")) {\r
+ if (JsUtils.eq(pseudoValue, "n")) {\r
matchingElms = previousMatch;\r
} else {\r
Sequence sequence = getSequence(pseudoValue);\r
|| iteratorNext <= sequence.max)) {\r
if (childElm.getNodeType() == Node.ELEMENT_NODE) {\r
if (++childCount == iteratorNext) {\r
- if (GQUtils\r
+ if (JsUtils\r
.eq(childElm.getNodeName(), previous.getNodeName())) {\r
matchingElms.addNode(childElm);\r
}\r
return matchingElms;\r
}\r
\r
- private JSArray getNthOfTypePseudo(JSArray previousMatch, String pseudoValue,\r
- JSArray prevParents, JSArray matchingElms) {\r
+ private JsNodeArray getNthOfTypePseudo(JsNodeArray previousMatch, String pseudoValue,\r
+ JsNodeArray prevParents, JsNodeArray matchingElms) {\r
Node previous;\r
if (pseudoValue.startsWith("n")) {\r
matchingElms = previousMatch;\r
int iteratorNext = sequence.start;\r
int childCount = 0;\r
Node childElm = prevParent.getFirstChild();\r
- while (GQUtils.truth(childElm) && (sequence.max < 0\r
+ while (JsUtils.truth(childElm) && (sequence.max < 0\r
|| iteratorNext <= sequence.max)) {\r
- if (GQUtils\r
+ if (JsUtils\r
.eq(childElm.getNodeName(), previous.getNodeName())) {\r
if (++childCount == iteratorNext) {\r
matchingElms.addNode(childElm);\r
return matchingElms;\r
}\r
\r
- private void getOnlyChildPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+ private void getOnlyChildPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
Node previous;\r
Node next;\r
Node prev;\r
Node prevParent = previous.getParentNode();\r
if (prevParent != kParent) {\r
while (\r
- GQUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
+ JsUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
&& prev.getNodeType() != Node.ELEMENT_NODE) {\r
}\r
- while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+ while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
&& next.getNodeType() != Node.ELEMENT_NODE) {\r
}\r
- if (!GQUtils.truth(prev) && !GQUtils.truth(next)) {\r
+ if (!JsUtils.truth(prev) && !JsUtils.truth(next)) {\r
matchingElms.addNode(previous);\r
}\r
kParent = prevParent;\r
}\r
}\r
\r
- private void getOnlyOfTypePseudo(JSArray previousMatch,\r
- JSArray matchingElms) {\r
+ private void getOnlyOfTypePseudo(JsNodeArray previousMatch,\r
+ JsNodeArray matchingElms) {\r
Node previous;\r
Node next;\r
Node prev;\r
Node prevParent = previous.getParentNode();\r
if (prevParent != oParent) {\r
while (\r
- GQUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
- && !GQUtils\r
+ JsUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
+ && !JsUtils\r
.eq(prev.getNodeName(), previous.getNodeName())) {\r
}\r
- while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
- && !GQUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
+ while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+ && !JsUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
}\r
- if (!GQUtils.truth(prev) && !GQUtils.truth(next)) {\r
+ if (!JsUtils.truth(prev) && !JsUtils.truth(next)) {\r
matchingElms.addNode(previous);\r
}\r
oParent = prevParent;\r
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.GQUtils;
import com.google.gwt.query.client.impl.SelectorEngineImpl;
+import com.google.gwt.query.client.js.JsUtils;
/**
* Pure Javascript Selector Engine Gwt Implementation based on
public NodeList<Element> select(String selector, Node context) {
JsArray<Element> results = JavaScriptObject.createArray().cast();
- return GQUtils.unique(select(selector, context, results, null)).cast();
+ return JsUtils.unique(select(selector, context, results, null)).cast();
}
}
*/\r
package com.google.gwt.query.client.impl.research;\r
\r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
+import static com.google.gwt.query.client.js.JsUtils.eq;\r
+import static com.google.gwt.query.client.js.JsUtils.truth;\r
\r
import com.google.gwt.core.client.JsArray;\r
import com.google.gwt.dom.client.Element;\r
import com.google.gwt.dom.client.Node;\r
import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
import com.google.gwt.query.client.impl.SelectorEngine;\r
import com.google.gwt.query.client.impl.SelectorEngineImpl;\r
import com.google.gwt.query.client.impl.research.SelectorEngineJS.Sequence;\r
import com.google.gwt.query.client.impl.research.SelectorEngineJS.SplitRule;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
\r
\r
/**\r
return "@" + p1 + (truth(p3) ? "='" + p3 + "'" : "");\r
}\r
\r
- private JSRegexp cssSelectorRegExp;\r
+ private JsRegexp cssSelectorRegExp;\r
\r
- private JSRegexp selectorSplitRegExp;\r
+ private JsRegexp selectorSplitRegExp;\r
\r
- private JSRegexp combinator;\r
+ private JsRegexp combinator;\r
\r
public SelectorEngineXPath() {\r
}\r
init();\r
String selectors[] = sel.replaceAll("\\s*(,)\\s*", "$1").split(",");\r
boolean identical = false;\r
- JSArray elm = JSArray.create();\r
+ JsNodeArray elm = JsNodeArray.create();\r
for (int a = 0, len = selectors.length; a < len; a++) {\r
if (a > 0) {\r
identical = false;\r
}\r
}\r
String currentRule = selectors[a];\r
- JSArray cssSelectors = selectorSplitRegExp.match(currentRule);\r
+ JsObjectArray<String> cssSelectors = selectorSplitRegExp.match(currentRule);\r
String xPathExpression = ".";\r
- for (int i = 0, slen = cssSelectors.size(); i < slen; i++) {\r
- String rule = cssSelectors.getStr(i);\r
- JSArray cssSelector = cssSelectorRegExp.exec(rule);\r
+ for (int i = 0, slen = cssSelectors.length(); i < slen; i++) {\r
+ String rule = cssSelectors.get(i);\r
+ JsObjectArray<String> cssSelector = cssSelectorRegExp.exec(rule);\r
SplitRule splitRule = new SplitRule(\r
- !truth(cssSelector.getStr(1)) || eq(cssSelector.getStr(3), "*")\r
- ? "*" : cssSelector.getStr(1),\r
- !eq(cssSelector.getStr(3), "*") ? cssSelector.getStr(2) : null,\r
- cssSelector.getStr(4), cssSelector.getStr(6),\r
- cssSelector.getStr(10), cssSelector.getStr(22));\r
+ !truth(cssSelector.get(1)) || eq(cssSelector.get(3), "*")\r
+ ? "*" : cssSelector.get(1),\r
+ !eq(cssSelector.get(3), "*") ? cssSelector.get(2) : null,\r
+ cssSelector.get(4), cssSelector.get(6),\r
+ cssSelector.get(10), cssSelector.get(22));\r
if (truth(splitRule.tagRelation)) {\r
if (eq(">", splitRule.tagRelation)) {\r
xPathExpression += "/child::";\r
}\r
} else {\r
xPathExpression +=\r
- (i > 0 && combinator.test(cssSelectors.getStr(i - 1)))\r
+ (i > 0 && combinator.test(cssSelectors.get(i - 1)))\r
? splitRule.tag : ("/descendant::" + splitRule.tag);\r
}\r
if (truth(splitRule.id)) {\r
}\r
if (truth(splitRule.allAttr)) {\r
xPathExpression += replaceAttr(\r
- GQUtils.or(splitRule.allAttr, ""));\r
+ JsUtils.or(splitRule.allAttr, ""));\r
}\r
if (truth(splitRule.allPseudos)) {\r
- JSRegexp pseudoSplitRegExp = new JSRegexp(\r
+ JsRegexp pseudoSplitRegExp = new JsRegexp(\r
":(\\w[\\w\\-]*)(\\(([^\\)]+)\\))?");\r
- JSRegexp pseudoMatchRegExp = new JSRegexp(\r
+ JsRegexp pseudoMatchRegExp = new JsRegexp(\r
"(:\\w+[\\w\\-]*)(\\([^\\)]+\\))?", "g");\r
- JSArray allPseudos = pseudoMatchRegExp.match(splitRule.allPseudos);\r
- for (int k = 0, kl = allPseudos.size(); k < kl; k++) {\r
- JSArray pseudo = pseudoSplitRegExp.match(allPseudos.getStr(k));\r
- String pseudoClass = truth(pseudo.getStr(1)) ? pseudo.getStr(1)\r
+ JsObjectArray<String> allPseudos = pseudoMatchRegExp.match(splitRule.allPseudos);\r
+ for (int k = 0, kl = allPseudos.length(); k < kl; k++) {\r
+ JsObjectArray<String> pseudo = pseudoSplitRegExp.match(allPseudos.get(k));\r
+ String pseudoClass = truth(pseudo.get(1)) ? pseudo.get(1)\r
.toLowerCase() : null;\r
- String pseudoValue = truth(pseudo.getStr(3)) ? pseudo.getStr(3)\r
+ String pseudoValue = truth(pseudo.get(3)) ? pseudo.get(3)\r
: null;\r
String xpath = pseudoToXPath(splitRule.tag, pseudoClass,\r
pseudoValue);\r
}\r
SelectorEngine.xpathEvaluate(xPathExpression, ctx, elm);\r
}\r
- return GQUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
+ return JsUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
}\r
\r
private void init() {\r
if (cssSelectorRegExp == null) {\r
- cssSelectorRegExp = new JSRegexp(\r
+ cssSelectorRegExp = new JsRegexp(\r
"^(\\w+)?(#[\\w\\u00C0-\\uFFFF\\-\\_]+|(\\*))?((\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?((\\[\\w+(\\^|\\$|\\*|\\||~)?(=[\"']*[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+[\"']*)?\\]+)*)?(((:\\w+[\\w\\-]*)(\\((odd|even|\\-?\\d*n?((\\+|\\-)\\d+)?|[\\w\\u00C0-\\uFFFF\\-_]+|((\\w*\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?|(\\[#?\\w+(\\^|\\$|\\*|\\||~)?=?[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+\\]+)|(:\\w+[\\w\\-]*))\\))?)*)?(>|\\+|~)?");\r
- selectorSplitRegExp = new JSRegexp("[^\\s]+", "g");\r
- combinator = new JSRegexp("(>|\\+|~)");\r
+ selectorSplitRegExp = new JsRegexp("[^\\s]+", "g");\r
+ combinator = new JsRegexp("(>|\\+|~)");\r
}\r
}\r
\r
} else if (eq("checked", pseudoClass)) {\r
xpath = "@checked='checked'"; // Doesn't work in Opera 9.24\r
} else if (eq("not", pseudoClass)) {\r
- if (new JSRegexp("^(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
+ if (new JsRegexp("^(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
xpath = "not(" + pseudoToXPath(tag, pseudoValue.substring(1), "") + ")";\r
} else {\r
\r
--- /dev/null
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+ /**
+ * A Lightweight JSO class to store data.
+ */
+public class JsCache extends JavaScriptObject {
+
+ protected JsCache() {
+ }
+
+ public final native void concat(Object ary) /*-{
+ if (ary) this.concat(ary);
+ }-*/;
+
+ public final void pushAll(JavaScriptObject prevElem) {
+ JsCache c = prevElem.cast();
+ for (int i = 0, ilen = c.length(); i < ilen; i++) {
+ put(length(), c.get(i));
+ }
+ }
+
+ public final native void delete(int name) /*-{
+ delete this[name];
+ }-*/;
+
+ public final native void delete(String name) /*-{
+ delete this[name];
+ }-*/;
+
+ public final native boolean exists(int id) /*-{
+ return !!this[id];
+ }-*/;
+
+ public final native Object get(int id) /*-{
+ return this[id] || null;
+ }-*/;
+
+ public final native Object get(String id) /*-{
+ return this[id] || null;
+ }-*/;
+
+ public final JsCache getCache(int id) {
+ return (JsCache)get(id);
+ }
+
+ public final native double getDouble(int id) /*-{
+ return this[id] || 0;
+ }-*/;
+
+ public final native double getDouble(String id) /*-{
+ return this[id] || 0;
+ }-*/;
+
+ public final native int getInt(int id) /*-{
+ return this[id] || 0;
+ }-*/;
+
+ public final native int getInt(String id) /*-{
+ return this[id] || 0;
+ }-*/;
+
+ public final native String getString(int id) /*-{
+ return this[id];
+ }-*/;
+
+ public final native String getString(String id) /*-{
+ return this[id] || null;
+ }-*/;
+
+ public final native boolean isEmpty() /*-{
+ var foo = "";
+ for (foo in this)
+ break;
+ return !foo;
+ }-*/;
+
+ public final native void put(int id, Object obj) /*-{
+ if (obj && id >=0 ) this[id] = obj;
+ }-*/;
+
+ public final native void put(String id, Object obj) /*-{
+ if (obj && id) this[id] = obj;
+ }-*/;
+
+ public final native int length() /*-{
+ return this.length;
+ }-*/;
+}
--- /dev/null
+/*
+ * Copyright 2011, The gwtquery team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+/**
+ * Overlay type representing a Javascript closure.
+ */
+public class JsClosure extends JavaScriptObject {
+
+ protected JsClosure() {
+ }
+
+ /**
+ * Invoke the closure with no arguments and expecting no return value.
+ */
+ public final native void invoke() /*-{
+ return this();
+ }-*/;
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright 2011, The gwtquery team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+
+/**
+ * Lightweight JSO backed implemented of a Map, using Object.hashCode() as key.
+ */
+final public class JsMap<S, T> extends JavaScriptObject {
+
+ protected JsMap() {
+ }
+
+ private JsCache c() {
+ return cast();
+ }
+
+ @SuppressWarnings("unchecked")
+ public T get(int hashCode) {
+ return (T)c().get(hashCode);
+ }
+
+ public T get(S key) {
+ return get(key.hashCode());
+ }
+
+ public int length() {
+ return c().length();
+ }
+
+ public void put(S key, T val) {
+ c().put(key.hashCode(), val);
+ }
+
+}
--- /dev/null
+/*\r
+ * Copyright 2011, The gwtquery team.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
+ * use this file except in compliance with the License. You may obtain a copy of\r
+ * the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
+package com.google.gwt.query.client.js;\r
+\r
+import com.google.gwt.core.client.JavaScriptObject;\r
+import com.google.gwt.dom.client.Element;\r
+import com.google.gwt.dom.client.Node;\r
+import com.google.gwt.dom.client.NodeList;\r
+\r
+/**\r
+ * A Lightweight JSO class easily handle a node list.\r
+ */\r
+public class JsNodeArray extends NodeList<Element> {\r
+ \r
+ public static JsNodeArray create() {\r
+ return create((Node)null);\r
+ }\r
+\r
+ public static native JsNodeArray create(Node node) /*-{\r
+ return node ? [node] : [];\r
+ }-*/;\r
+ \r
+ public static JsNodeArray create(NodeList<?> nl) {\r
+ JsNodeArray ret = create((Node)null);\r
+ ret.pushAll(nl);\r
+ return ret;\r
+ }\r
+ \r
+ protected JsNodeArray(){\r
+ }\r
+ \r
+ public final void addNode(Node n){\r
+ c().add(n);\r
+ }\r
+\r
+ public final void addNode(Node n, int i) {\r
+ c().add(i, n);\r
+ }\r
+\r
+ public final void concat(JsNodeArray ary) {\r
+ c().concat(ary.c());\r
+ }\r
+\r
+ public final Element getElement(int i) {\r
+ return c().get(i).cast();\r
+ }\r
+\r
+ public final Node getNode(int i) {\r
+ return c().get(i);\r
+ }\r
+\r
+ public final int size() {\r
+ return c().length();\r
+ }\r
+ \r
+ private JsObjectArray<Node> c() {\r
+ return cast();\r
+ }\r
+ \r
+ public final void pushAll(JavaScriptObject prevElem) {\r
+ c().pushAll(prevElem);\r
+ }\r
+}\r
--- /dev/null
+/*
+ * Copyright 2011, The gwtquery team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+/**
+ * Lightweight JSO based array class that can store objects.
+ */
+public final class JsObjectArray<T> extends JavaScriptObject {
+
+ public static JsObjectArray<?> create() {
+ return JavaScriptObject.createArray().cast();
+ }
+
+ protected JsObjectArray() {
+ }
+
+ private JsCache c() {
+ return cast();
+ }
+
+ public void add(T val) {
+ c().put(length(), val);
+ }
+
+ public void add(int i, T val) {
+ c().put(i, val);
+ }
+
+ @SuppressWarnings("unchecked")
+ public T get(int hashCode) {
+ return (T)c().get(hashCode);
+ }
+
+ public int length() {
+ return c().length();
+ }
+
+ public void set(int i, T val) {
+ c().put(i, val);
+ }
+
+ public void concat(JsObjectArray<T> ary) {
+ c().concat(ary);
+ }
+
+ public void pushAll(JavaScriptObject prevElem) {
+ c().pushAll(prevElem);
+ }
+}
--- /dev/null
+/*\r
+ * Copyright 2011, The gwtquery team.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
+ * use this file except in compliance with the License. You may obtain a copy of\r
+ * the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
+package com.google.gwt.query.client.js;\r
+\r
+import com.google.gwt.core.client.JavaScriptObject;\r
+\r
+/**\r
+ * A wrapper around Javascript Regexps.\r
+ */\r
+public class JsRegexp {\r
+\r
+ public static native JavaScriptObject compile(String pat) /*-{\r
+ return new RegExp(pat);\r
+ }-*/;\r
+\r
+ public static native JavaScriptObject compileFlags(String pat, String flags) /*-{\r
+ return new RegExp(pat, flags);\r
+ }-*/;\r
+\r
+ public static JsObjectArray<String> match(String regexp, String flags, String string) {\r
+ return new JsRegexp(regexp, flags).match(string);\r
+ }\r
+\r
+ private static native JsObjectArray<String> exec0(JavaScriptObject regexp, String str) /*-{\r
+ return regexp.exec(str);\r
+ }-*/;\r
+\r
+ private final JavaScriptObject regexp;\r
+\r
+ public JsRegexp(String pattern) {\r
+ this.regexp = compile(pattern);\r
+ }\r
+\r
+ public JsRegexp(String pat, String flags) {\r
+ this.regexp = compileFlags(pat, flags);\r
+ }\r
+\r
+ public JsObjectArray<String> exec(String str) {\r
+ return exec0(regexp, str);\r
+ }\r
+\r
+ public JsObjectArray<String> match(String currentRule) {\r
+ return match0(regexp, currentRule);\r
+ }\r
+\r
+ public boolean test(String rule) {\r
+ return test0(regexp, rule);\r
+ }\r
+\r
+ private native JsObjectArray<String> match0(JavaScriptObject regexp, String currentRule)/*-{\r
+ return currentRule.match(regexp);\r
+ }-*/;\r
+\r
+ private native boolean test0(JavaScriptObject regexp, String rule) /*-{\r
+ return regexp.test(rule);\r
+ }-*/;\r
+ \r
+ public String getPattern(){\r
+ return regexp.toString();\r
+ };\r
+}\r
--- /dev/null
+/*
+ * Copyright 2011, The gwtquery team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import java.util.HashSet;
+
+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.query.client.GQuery;
+import com.google.gwt.user.client.DOM;
+
+/**
+ * A bunch of utility methods for GQuery.
+ *
+ * These methods could be moved to $ class, but the class
+ * doesn't work right now.
+ */
+public class JsUtils {
+
+ /**
+ * Use the method in the gquery class $(elem).cur(prop, force);
+ */
+ @Deprecated
+ public static double cur(Element elem, String prop, boolean force) {
+ return GQuery.$(elem).cur(prop, force);
+ }
+
+ /**
+ * Compare two numbers using javascript equality.
+ */
+ public static native boolean eq(double s1, double s2) /*-{
+ return s1 == s2;
+ }-*/;
+
+ /**
+ * Compare two objects using javascript equality.
+ */
+ public static native boolean eq(Object s1, Object s2) /*-{
+ return s1 == s2;
+ }-*/;
+
+ /**
+ * Load an external javascript library.
+ * The inserted script replaces the element with the
+ * given id in the document.
+ */
+ public static void loadScript(String url, String id) {
+ GQuery gs = GQuery.$(DOM.createElement("script"));
+ GQuery gp = GQuery.$("#" + id).parent();
+ if (gp.size() != 1) {
+ gp = GQuery.$(GQuery.document.getBody());
+ }
+ GQuery.$("#" + id).remove();
+ gp.append(gs.attr("src", url).attr("type", "text/javascript").attr("id", id));
+ }
+
+ /**
+ * Return the element which is truth in the double scope.
+ */
+ public static native double or(double s1, double s2) /*-{
+ return s1 || s2;
+ }-*/;
+
+ /**
+ * Return the element which is truth in the javascript scope.
+ */
+ public static native <T> T or(T s1, T s2) /*-{
+ return s1 || s2;
+ }-*/;
+
+ /**
+ * Check if a number is true in the javascript scope.
+ */
+ public static native boolean truth(double a) /*-{
+ return a ? true : false;
+ }-*/;
+
+ /**
+ * Check if an object is true in the javascript scope.
+ */
+ public static native boolean truth(Object a) /*-{
+ return a ? true : false;
+ }-*/;
+
+ /**
+ * Remove duplicates from an elements array
+ */
+ public static JsArray<Element> unique(JsArray<Element> a) {
+ JsArray<Element> ret = JavaScriptObject.createArray().cast();
+ HashSet<Integer> f = new HashSet<Integer>();
+ for (int i = 0; i < a.length(); i++) {
+ Element e = a.get(i);
+ if (!f.contains(e.hashCode())) {
+ f.add(e.hashCode());
+ ret.push(e);
+ }
+ }
+ return ret;
+ }
+
+}
import com.google.gwt.dom.client.Element;\r
import com.google.gwt.query.client.Function;\r
import com.google.gwt.query.client.GQuery;\r
-import com.google.gwt.query.client.JSArray;\r
import com.google.gwt.query.client.Properties;\r
-import com.google.gwt.query.client.JSRegexp;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
import com.google.gwt.query.client.plugins.Effects;\r
\r
/**\r
private static final String[] attrsToSave = new String[] { "overflow",\r
"visibility" };\r
\r
- private static JSRegexp nonPxRegExp = new JSRegexp(\r
+ private static JsRegexp nonPxRegExp = new JsRegexp(\r
"z-?index|font-?weight|opacity|zoom|line-?height", "i");\r
\r
\r
end = 0;\r
unit = nonPxRegExp.test(key) ? "" : "px";\r
} else {\r
- JSArray parts = new JSRegexp("^([+-]=)?([0-9+-.]+)(.*)?$").match(val);\r
+ JsObjectArray<String> parts = new JsRegexp("^([+-]=)?([0-9+-.]+)(.*)?$").match(val);\r
\r
if (parts != null) {\r
- unit = nonPxRegExp.test(key) ? "" : parts.getStr(3) == null ? "px"\r
- : parts.getStr(3);\r
- end = Double.parseDouble(parts.getStr(2));\r
+ String $1 = parts.get(1);\r
+ String $2 = parts.get(2);\r
+ String $3 = parts.get(3);\r
+ end = Double.parseDouble($2);\r
+ unit = nonPxRegExp.test(key) ? "" : $3 == null || $3.isEmpty() ? "px" : $3;\r
if (!"px".equals(unit)) {\r
double to = end == 0 ? 1 : end;\r
g.css(key, to + unit);\r
start = to * start / g.cur(key, true);\r
g.css(key, start + unit);\r
}\r
- if (parts.getStr(1) != null) {\r
- end = (("-=".equals(parts.getStr(1)) ? -1 : 1) * end) + start;\r
+ if ($1 != null && !$1.isEmpty()) {\r
+ end = (("-=".equals($1) ? -1 : 1) * end) + start;\r
}\r
}\r
}\r
import com.google.gwt.core.client.Duration;
import com.google.gwt.dom.client.Element;
import com.google.gwt.query.client.Function;
-import com.google.gwt.query.client.JsObjectArray;
+import com.google.gwt.query.client.js.JsObjectArray;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
composerFactory.addImport("com.google.gwt.dom.client.Element");
composerFactory.addImport("com.google.gwt.user.client.Event");
composerFactory.addImport("com.google.gwt.query.client.Function");
- composerFactory.addImport("com.google.gwt.query.client.JsClosure");
+ composerFactory.addImport("com.google.gwt.query.client.js.JsClosure");
for (String interfaceName : interfaceNames) {
composerFactory.addImplementedInterface(interfaceName);
import static com.google.gwt.query.client.GQuery.$;
import static com.google.gwt.query.client.GQuery.$$;
import static com.google.gwt.query.client.GQuery.document;
+import static com.google.gwt.query.client.plugins.Widgets.Widgets;
import java.util.List;
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.query.client.impl.SelectorEngineImpl;
import com.google.gwt.query.client.impl.SelectorEngineSizzle;
-import com.google.gwt.query.client.plugins.Widgets;
+import com.google.gwt.query.client.js.JsNodeArray;
+import com.google.gwt.query.client.js.JsUtils;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
public void testUnique() {
SelectorEngineImpl selSizz = new SelectorEngineSizzle();
GQuery g = $(e).html("<div><p></p><p></p><span></span><p></p>");
- JSArray a;
+ JsNodeArray a;
a = selSizz.select("p", e).cast();
assertEquals(3, a.getLength());
a.addNode(a.getNode(0));
}
public void testUtilsEq() {
- assertTrue(GQUtils.eq("a", "a"));
- assertTrue(GQUtils.eq(true, true));
- assertTrue(GQUtils.eq(45, 45));
- assertTrue(GQUtils.eq(45d, 45f));
- assertTrue(GQUtils.eq("", ""));
- assertTrue(GQUtils.eq(0.45, 0.45));
- assertTrue(GQUtils.eq(0.45d, 0.45d));
- assertTrue(GQUtils.eq(0.45f, 0.45f));
-
- assertFalse(GQUtils.eq("a", ""));
- assertFalse(GQUtils.eq(true, false));
- assertFalse(GQUtils.eq(45, 42));
- assertFalse(GQUtils.eq("", null));
- assertFalse(GQUtils.eq(0.45, 0.451));
+ assertTrue(JsUtils.eq("a", "a"));
+ assertTrue(JsUtils.eq(true, true));
+ assertTrue(JsUtils.eq(45, 45));
+ assertTrue(JsUtils.eq(45d, 45f));
+ assertTrue(JsUtils.eq("", ""));
+ assertTrue(JsUtils.eq(0.45, 0.45));
+ assertTrue(JsUtils.eq(0.45d, 0.45d));
+ assertTrue(JsUtils.eq(0.45f, 0.45f));
+
+ assertFalse(JsUtils.eq("a", ""));
+ assertFalse(JsUtils.eq(true, false));
+ assertFalse(JsUtils.eq(45, 42));
+ assertFalse(JsUtils.eq("", null));
+ assertFalse(JsUtils.eq(0.45, 0.451));
// assertEquals("a", GQUtils.or("a", ""));
}
public void testUtilsTruth() {
- assertTrue(GQUtils.truth("a"));
- assertTrue(GQUtils.truth(this));
- assertTrue(GQUtils.truth(45));
- assertTrue(GQUtils.truth(0.33));
- assertTrue(GQUtils.truth(45l));
- assertTrue(GQUtils.truth(45d));
- assertTrue(GQUtils.truth(45f));
- assertTrue(GQUtils.truth(0.33f));
-
- assertFalse(GQUtils.truth(0));
- assertFalse(GQUtils.truth(0l));
- assertFalse(GQUtils.truth(0d));
- assertFalse(GQUtils.truth(00.00d));
- assertFalse(GQUtils.truth(00.00f));
- assertFalse(GQUtils.truth(null));
- assertFalse(GQUtils.truth(""));
+ assertTrue(JsUtils.truth("a"));
+ assertTrue(JsUtils.truth(this));
+ assertTrue(JsUtils.truth(45));
+ assertTrue(JsUtils.truth(0.33));
+ assertTrue(JsUtils.truth(45l));
+ assertTrue(JsUtils.truth(45d));
+ assertTrue(JsUtils.truth(45f));
+ assertTrue(JsUtils.truth(0.33f));
+
+ assertFalse(JsUtils.truth(0));
+ assertFalse(JsUtils.truth(0l));
+ assertFalse(JsUtils.truth(0d));
+ assertFalse(JsUtils.truth(00.00d));
+ assertFalse(JsUtils.truth(00.00f));
+ assertFalse(JsUtils.truth(null));
+ assertFalse(JsUtils.truth(""));
}
public void testWidthHeight() {
RootPanel.get().add(b1);
GQuery g = $(b1);
- Button b2 = (Button) g.widget();
+ Button b2 = g.widget();
assertEquals(b1, b2);
- b2 = $("<button>Click-me</button>").appendTo(document).as(Widgets.Widgets).button();
+ b2 = $("<button>Click-me</button>").appendTo(document).as(Widgets).button();
b2.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
$(b1).css("color", "red");
import com.google.gwt.query.client.impl.research.SelectorEngineJS;
import com.google.gwt.query.client.impl.research.SelectorEngineSizzleGwt;
import com.google.gwt.query.client.impl.research.SelectorEngineXPath;
+import com.google.gwt.query.client.js.JsUtils;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
a.push(a.get(i));
}
assertEquals(n * 2 , a.length());
- a = GQUtils.unique(a);
+ a = JsUtils.unique(a);
assertEquals(n, a.length());
}