* Create a new GQuery given a list of nodes, elements or widgets\r
*/\r
public static GQuery $(List<?> nodesOrWidgets) {\r
- JsNodeArray elements = JsNodeArray.create();\r
+ JsNodeArray elms = JsNodeArray.create();\r
if (nodesOrWidgets != null) {\r
for (Object o : nodesOrWidgets) {\r
if (o instanceof Node) {\r
- elements.addNode((Node) o);\r
+ elms.addNode((Node) o);\r
} else if (o instanceof Widget) {\r
- elements.addNode(((Widget) o).getElement());\r
+ elms.addNode(((Widget) o).getElement());\r
}\r
}\r
}\r
- return new GQuery(elements);\r
+ return new GQuery(elms);\r
}\r
\r
/**\r
/**\r
* Wrap a GQuery around existing Elements.\r
*/\r
- public static GQuery $(NodeList<Element> elements) {\r
- return new GQuery(elements);\r
+ public static GQuery $(NodeList<Element> elms) {\r
+ return new GQuery(elms);\r
}\r
\r
/**\r
return $();\r
}\r
if (selectorOrHtml.trim().charAt(0) == '<') {\r
- Document doc = ctx instanceof Document ? ctx.<Document> cast()\r
- : ctx.getOwnerDocument();\r
- return $(cleanHtmlString(selectorOrHtml, doc));\r
+ return $(cleanHtmlString(selectorOrHtml, getOwnerDocument(ctx)));\r
}\r
return new GQuery().select(selectorOrHtml, ctx);\r
}\r
-\r
+ \r
/**\r
* This function accepts a string containing a CSS selector which is then used\r
* to match a set of elements, or it accepts raw HTML creating a GQuery\r
return jsArrayToString0(array);\r
} else {\r
String result[] = new String[array.length()];\r
- for (int i = 0; i < result.length; i++) {\r
+ for (int i = 0, l = result.length; i < l; i++) {\r
result[i] = array.get(i);\r
}\r
return result;\r
}\r
}\r
\r
- private static JsNodeArray copyNodeList(NodeList<? extends Node> n) {\r
+ private static JsNodeArray copyNodeList(NodeList<? extends Node> nodes) {\r
JsNodeArray res = JsNodeArray.create();\r
- for (int i = 0; i < n.getLength(); i++) {\r
- res.addNode(n.getItem(i), i);\r
+ for (int i = 0, l = nodes.getLength(); i < l; i++) {\r
+ res.addNode(nodes.getItem(i), i);\r
}\r
return res;\r
}\r
@com.google.gwt.query.client.GQuery::emptyDocument(Lcom/google/gwt/dom/client/Document;)(d);\r
return d;\r
}-*/;\r
+ \r
+ private static Document getOwnerDocument(Node n) {\r
+ return n== null || n.getNodeType() == Node.DOCUMENT_NODE ? \r
+ n.<Document> cast() : n.getOwnerDocument();\r
+ }\r
\r
private static boolean hasClass(Element e, String clz) {\r
return e.getClassName().matches("(^|.*\\s)" + clz + "(\\s.*|$)");\r
protected String currentSelector;\r
protected Node currentContext;\r
\r
- private NodeList<Element> elements = JavaScriptObject.createArray().cast();\r
+ /**\r
+ * The nodeList of matched elements, modify this using setArray\r
+ */\r
+ private NodeList<Element> nodeList = JavaScriptObject.createArray().cast();\r
+ \r
+ /**\r
+ * Immutable array of matched elements, modify this using setArray\r
+ */\r
+ private Element[] elements = new Element[0];\r
\r
private GQuery previousObject;\r
\r
}\r
\r
private GQuery(Element element) {\r
- if (element != null) {\r
- elements = JsNodeArray.create(element);\r
- }\r
+ this(JsNodeArray.create(element));\r
}\r
\r
- private GQuery(JsNodeArray elements) {\r
- if (elements != null) {\r
- this.elements = elements;\r
- }\r
+ private GQuery(JsNodeArray nodes) {\r
+ this(nodes.<NodeList<Element>>cast());\r
}\r
\r
private GQuery(NodeList<Element> list) {\r
- if (list != null) {\r
- elements = list;\r
- }\r
+ setArray(list);\r
}\r
-\r
+ \r
/**\r
* Add elements to the set of matched elements if they are not included yet.\r
* It also update the selector appending the new one.\r
*/\r
public GQuery add(GQuery previousObject) {\r
- return pushStack(unique(merge(elements, previousObject.elements)), "add",\r
+ return pushStack(unique(merge(nodeList, previousObject.nodeList)), "add",\r
getSelector() + "," + previousObject.getSelector());\r
}\r
\r
* Adds the specified classes to each matched element.\r
*/\r
public GQuery addClass(String... classes) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String clz : classes) {\r
e.addClassName(clz);\r
}\r
* B.\r
*/\r
public GQuery appendTo(Node n) {\r
- $(n).append(this);\r
+ GQuery a = $(n);\r
+ GQuery b = this;\r
+ a.append(b);\r
return this;\r
}\r
\r
* Properties("src: 'test.jpg', alt: 'Test Image'"))\r
*/\r
public GQuery attr(Properties properties) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String name : properties.keys()) {\r
e.setAttribute(name, properties.getStr(name));\r
}\r
* Set a single property to a computed value, on all matched elements.\r
*/\r
public GQuery attr(String key, Function closure) {\r
- for (int i = 0; i < elements.getLength(); i++) {\r
- Element e = elements.getItem(i);\r
- Object val = closure.f(e.<com.google.gwt.dom.client.Element>cast(), i);\r
+ int i = 0;\r
+ for (Element e : elements) {\r
+ Object val = closure.f(e.<com.google.gwt.dom.client.Element>cast(), i++);\r
if (val != null) {\r
e.setAttribute(key, String.valueOf(val));\r
}\r
* Set a single property to a value, on all matched elements.\r
*/\r
public GQuery attr(String key, String value) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
e.setAttribute(key, value);\r
}\r
return this;\r
*/\r
public GQuery children() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allNextSiblingElements(e.getFirstChildElement(), result, null, null);\r
}\r
return new GQuery(unique(result));\r
*/\r
public GQuery clone() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
result.addNode(e.cloneNode(true));\r
}\r
GQuery ret = new GQuery(result);\r
GQuery pos = selector.matches(POS_REGEX) ? $(selector, context) : null;\r
JsNodeArray result = JsNodeArray.create();\r
\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element current = e;\r
while (current != null && current.getOwnerDocument() != null\r
&& current != context) {\r
*/\r
public GQuery contains(String text) {\r
JsNodeArray array = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if ($(e).text().contains(text)) {\r
array.addNode(e);\r
}\r
*/\r
public GQuery contents() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if ("iframe".equalsIgnoreCase(e.getTagName())) {\r
result.addNode(getContentDocument(e));\r
} else {\r
NodeList<Node> children = e.getChildNodes();\r
- for (int i = 0; i < children.getLength(); i++) {\r
+ for (int i = 0, l = children.getLength(); i < l; i++) {\r
result.addNode(children.getItem(i));\r
}\r
}\r
* \r
*/\r
public GQuery css(CssSetter... cssSetter) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (CssSetter s : cssSetter) {\r
s.applyCss(e);\r
}\r
* \r
*/\r
public GQuery css(String prop, String val) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
styleImpl.setStyleProperty(e, prop, val);\r
}\r
return this;\r
* Stores the value in the named spot with desired return type.\r
*/\r
public GQuery data(String name, Object value) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
data(e, name, value);\r
}\r
return this;\r
*/\r
public GQuery delegate(String selector, String eventType, Object data,\r
Function... handlers) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
$(selector, e).live(eventType, data, handlers);\r
}\r
\r
public GQuery delegate(String selector, int eventbits, Object data,\r
Function... handlers) {\r
\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
$(selector, e).live(eventbits, data, handlers);\r
}\r
\r
public GQuery each(Function... f) {\r
if (f != null) {\r
for (Function f1 : f) {\r
- for (int i = 0; i < elements.getLength(); i++) {\r
- f1.f(elements.getItem(i).<com.google.gwt.dom.client.Element>cast(), i);\r
+ int i = 0;\r
+ for (Element e : elements) {\r
+ f1.f(e.<com.google.gwt.dom.client.Element>cast(), i++);\r
}\r
}\r
}\r
* modify this array, e.g. assign to its elements, or call Arrays.sort()\r
*/\r
public Element[] elements() {\r
- Element[] elts = new Element[elements.getLength()];\r
- for (int i = 0; i < elts.length; i++) {\r
- elts[i] = elements.getItem(i);\r
- }\r
- return elts;\r
+ return elements;\r
}\r
\r
/**\r
* whenever you create a new iframe and you want to add dynamic content to it.\r
*/\r
public GQuery empty() {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (e.getNodeType() == Element.DOCUMENT_NODE) {\r
emptyDocument(e.<Document> cast());\r
} else {\r
*/\r
public GQuery filter(Predicate filterFn) {\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
+ int i = 0;\r
+ for (Element e : elements) {\r
+ if (filterFn.f(e, i++)) {\r
result.addNode(e);\r
}\r
}\r
JsNodeArray array = JsNodeArray.create();\r
\r
for (String f : filters) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
boolean ghostParent = false;\r
\r
if (e.getParentNode() == null) {\r
ghostParent = true;\r
}\r
\r
- for (Element c : $(f, e.getParentNode()).elements()) {\r
+ for (Element c : $(f, e.getParentNode()).elements) {\r
if (c == e) {\r
array.addNode(c);\r
break;\r
public GQuery find(String... filters) {\r
JsNodeArray array = JsNodeArray.create();\r
for (String selector : filters) {\r
- for (Element e : elements()) {\r
- for (Element c : $(selector, e).elements()) {\r
+ for (Element e : elements) {\r
+ for (Element c : $(selector, e).elements) {\r
array.addNode(c);\r
}\r
}\r
* for a method which returns them as an immutable Java array.\r
*/\r
public NodeList<Element> get() {\r
- return elements;\r
+ return nodeList;\r
}\r
\r
/**\r
* </pre>\r
*/\r
public Element get(int i) {\r
- int l = elements.getLength();\r
+ int l = elements.length;\r
if (i >= 0 && i < l) {\r
- return elements.getItem(i);\r
+ return elements[i];\r
}\r
if (i < 0 && l + i >= 0) {\r
- return elements.getItem(l + i);\r
+ return elements[l + i];\r
}\r
return null;\r
}\r
* elements.\r
*/\r
public boolean hasClass(String... classes) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String clz : classes) {\r
if (hasClass(e, clz)) {\r
return true;\r
* Set the height of every element in the matched set.\r
*/\r
public GQuery height(int height) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
e.getStyle().setPropertyPx("height", height);\r
}\r
return this;\r
* Make invisible all matched elements.\r
*/\r
public GQuery hide() {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Object old = data(e, "oldDisplay", null);\r
if (old == null) {\r
data(e, "oldDisplay", styleImpl.curCSS(e, "display", false));\r
* Set the innerHTML of every matched element.\r
*/\r
public GQuery html(String html) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (e.getNodeType() == Node.DOCUMENT_NODE) {\r
e = e.<Document> cast().getBody();\r
}\r
* Find the index of the specified Element.\r
*/\r
public int index(Element element) {\r
- for (int i = 0; i < elements.getLength(); i++) {\r
- if (elements.getItem(i) == element) {\r
+ int i = 0;\r
+ for (Element e : elements) {\r
+ if (e == element) {\r
return i;\r
}\r
+ i++;\r
}\r
return -1;\r
}\r
* elements.\r
*/\r
public GQuery insertAfter(GQuery query) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
query.after(e);\r
}\r
return this;\r
* an element after another if it's not in the page).\r
*/\r
public GQuery insertBefore(GQuery query) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
query.before(e);\r
}\r
return this;\r
*/\r
public <W> List<W> map(Function f) {\r
ArrayList<W> ret = new ArrayList<W>();\r
- for (int i = 0; i < elements().length; i++) {\r
+ int i = 0;\r
+ for (Element e : elements) {\r
@SuppressWarnings("unchecked")\r
- W o = (W)f.f(elements()[i].<com.google.gwt.dom.client.Element>cast(), i);\r
+ W o = (W)f.f(e.<com.google.gwt.dom.client.Element>cast(), i++);\r
if (o != null) {\r
ret.add(o);\r
}\r
*/\r
public GQuery next() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element next = e.getNextSiblingElement();\r
if (next != null) {\r
result.addNode(next);\r
*/\r
public GQuery next(String... selectors) {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element next = e.getNextSiblingElement();\r
if (next != null) {\r
result.addNode(next);\r
*/\r
public GQuery nextAll() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allNextSiblingElements(e.getNextSiblingElement(), result, null, null);\r
}\r
return pushStack(unique(result), "nextAll", getSelector());\r
*/\r
public GQuery nextUntil(String selector) {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allNextSiblingElements(e.getNextSiblingElement(), result, null, selector);\r
}\r
return pushStack(unique(result), "nextUntil", getSelector());\r
*/\r
public GQuery not(Element elem) {\r
JsNodeArray array = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (e != elem) {\r
array.addNode(e);\r
}\r
*/\r
public GQuery not(GQuery gq) {\r
GQuery ret = this;\r
- for (Element e : gq.elements()) {\r
+ for (Element e : gq.elements) {\r
ret = ret.not(e);\r
}\r
return ret;\r
if (isEmpty()) {\r
return $();\r
}\r
- Element offParent = JsUtils.or(elements.getItem(0).getOffsetParent(), body);\r
+ Element offParent = JsUtils.or(get(0).getOffsetParent(), body);\r
while (offParent != null\r
&& !"body".equalsIgnoreCase(offParent.getTagName())\r
&& !"html".equalsIgnoreCase(offParent.getTagName())\r
*/\r
public GQuery parent() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element p = e.getParentElement();\r
if (p != null) {\r
result.addNode(p);\r
*/\r
public GQuery parentsUntil(String selector) {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Node par = e.getParentNode();\r
while (par != null && par != document) {\r
if (selector != null && $(par).is(selector)) {\r
*/\r
public GQuery prev() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element next = getPreviousSiblingElement(e);\r
if (next != null) {\r
result.addNode(next);\r
*/\r
public GQuery prev(String... selectors) {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Element next = getPreviousSiblingElement(e);\r
if (next != null) {\r
result.addNode(next);\r
*/\r
public GQuery prevAll() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allPreviousSiblingElements(getPreviousSiblingElement(e), result, null);\r
}\r
return pushStack(unique(result), "prevAll", getSelector());\r
*/\r
public GQuery prevUntil(String selector) {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allPreviousSiblingElements(getPreviousSiblingElement(e), result, selector);\r
}\r
return pushStack(unique(result), "prevUntil", getSelector());\r
* Remove the named attribute from every element in the matched set.\r
*/\r
public GQuery removeAttr(String key) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
e.removeAttribute(key);\r
}\r
return this;\r
* Removes the specified classes to each matched element.\r
*/\r
public GQuery removeClass(String... classes) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String clz : classes) {\r
e.removeClassName(clz);\r
}\r
* Removes named data store from an element.\r
*/\r
public GQuery removeData(String name) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
removeData(e, name);\r
}\r
return this;\r
&& parents().filter("body").length() == 0;\r
\r
List<Element> newElements = new ArrayList<Element>();\r
- for (int i = 0; i < target.elements().length; i++) {\r
+ for (int i = 0, l = target.size(); i < l; i++) {\r
GQuery _this = (i > 0 && mustBeCloned) ? this.clone() : this;\r
$(target.get(i)).replaceWith(_this);\r
-\r
- newElements.addAll(Arrays.asList(_this.elements()));\r
-\r
+ newElements.addAll(Arrays.asList(_this.elements));\r
}\r
return $(newElements);\r
}\r
* from the DOM and not the new element that has replaced it.\r
*/\r
public GQuery replaceWith(GQuery target) {\r
- for (Element el : elements()) {\r
+ for (Element el : elements) {\r
Element nextSibling = el.getNextSiblingElement();\r
\r
if (nextSibling != null) {\r
* from the DOM and not the new element that has replaced it.\r
*/\r
public GQuery replaceWith(String html) {\r
- for (Element el : elements()) {\r
+ for (Element el : elements) {\r
Element nextSibling = el.getNextSiblingElement();\r
\r
if (nextSibling != null) {\r
* Save a set of Css properties of every matched element.\r
*/\r
public void restoreCssAttrs(String... cssProps) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String a : cssProps) {\r
styleImpl.setStyleProperty(e, a, (String) data(e, OLD_DATA_PREFIX + a,\r
null));\r
* Restore a set of previously saved Css properties in every matched element.\r
*/\r
public void saveCssAttrs(String... cssProps) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String a : cssProps) {\r
data(OLD_DATA_PREFIX + a, styleImpl.curCSS(e, a, false));\r
}\r
* This method works for both visible and hidden elements.\r
*/\r
public GQuery scrollLeft(int left) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (e == window || e.getNodeName() == null || e == (Node) document) {\r
Window.scrollTo(left, $(e).scrollTop());\r
} else {\r
* This method works for both visible and hidden elements.\r
*/\r
public GQuery scrollTop(int top) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (e == window || e.getNodeName() == null || e == (Node) document) {\r
Window.scrollTo($(e).scrollLeft(), top);\r
} else {\r
* Force the current matched set of elements to become the specified array of\r
* elements.\r
*/\r
- public GQuery setArray(NodeList<Element> nodes) {\r
- this.elements = nodes;\r
+ public GQuery setArray(NodeList<Element> list) {\r
+ if (list != null) {\r
+ nodeList = list;\r
+ int l = list.getLength();\r
+ elements = new Element[l];\r
+ for (int i = 0; i < l; i++) {\r
+ elements[i] = list.getItem(i);\r
+ }\r
+ }\r
return this;\r
}\r
\r
* Make all matched elements visible\r
*/\r
public GQuery show() {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
styleImpl.setStyleProperty(e, "display", JsUtils.or((String) data(e,\r
"oldDisplay", null), ""));\r
// When the display=none is in the stylesheet.\r
*/\r
public GQuery siblings() {\r
JsNodeArray result = JsNodeArray.create();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
allNextSiblingElements(e.getParentElement().getFirstChildElement(),\r
result, e, null);\r
}\r
* Return the number of elements in the matched set.\r
*/\r
public int size() {\r
- return elements.getLength();\r
+ return elements.length;\r
}\r
\r
/**\r
*/\r
public GQuery slice(int start, int end) {\r
JsNodeArray slice = JsNodeArray.create();\r
- if (end == -1 || end > elements.getLength()) {\r
- end = elements.getLength();\r
+ int l = size();\r
+ if (end == -1 || end > l) {\r
+ end = l;\r
}\r
for (int i = start; i < end; i++) {\r
- slice.addNode(elements.getItem(i));\r
+ slice.addNode(get(i));\r
}\r
return new GQuery(slice);\r
}\r
*/\r
public String text() {\r
String result = "";\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
result += e.getInnerText();\r
}\r
return result;\r
* Set the innerText of every matched element.\r
*/\r
public GQuery text(String txt) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
e.setInnerText(txt);\r
}\r
return this;\r
* Toggle visibility of elements.\r
*/\r
public GQuery toggle() {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if ($(e).visible()) {\r
$(e).hide();\r
} else {\r
* Toggle among two or more function calls every other click.\r
*/\r
public GQuery toggle(final Function... fn) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
$(e).click(new Function() {\r
int click = 0;\r
\r
* the class's presence.\r
*/\r
public GQuery toggleClass(String... classes) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
for (String clz : classes) {\r
if (hasClass(e, clz)) {\r
e.removeClassName(clz);\r
*/\r
public String toString(boolean pretty) {\r
String r = "";\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (window.equals(e)) {\r
continue;\r
}\r
* {@link #delegate(String, int, Function...)} method\r
*/\r
public GQuery undelegate(String selector) {\r
- for (Element e : elements()){\r
+ for (Element e : elements){\r
$(selector, e).die();\r
}\r
\r
* {@link #delegate(String, int, Function...)} method\r
*/\r
public GQuery undelegate(String selector, String eventName) {\r
- for (Element e : elements()){\r
+ for (Element e : elements){\r
$(selector, e).die(eventName);\r
}\r
\r
* {@link #delegate(String, int, Function...)} method\r
*/\r
public GQuery undelegate(String selector, int eventBit) {\r
- for (Element e : elements()){\r
+ for (Element e : elements){\r
$(selector, e).die(eventBit);\r
}\r
\r
*/\r
public GQuery unwrap() {\r
\r
- for (Element parent : parent().elements()) {\r
+ for (Element parent : parent().elements) {\r
if (!"body".equalsIgnoreCase(parent.getTagName())) {\r
GQuery $parent = $(parent);\r
$parent.replaceWith($parent.children());\r
* considered.\r
*/\r
public GQuery val(String... values) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
String name = e.getNodeName();\r
if ("select".equalsIgnoreCase(name)) {\r
SelectElement s = SelectElement.as(e);\r
s.setSelectedIndex(-1);\r
if (values.length > 1 && s.isMultiple()) {\r
for (String v : values) {\r
- for (int i = 0; i < s.getOptions().getLength(); i++) {\r
+ for (int i = 0, l = s.getOptions().getLength(); i < l; i++) {\r
if (v.equals(s.getOptions().getItem(i).getValue())) {\r
s.getOptions().getItem(i).setSelected(true);\r
}\r
SelectElement se = SelectElement.as(e);\r
if (se.isMultiple()) {\r
JsArrayString result = JsArrayString.createArray().cast();\r
- for (int i = 0 ; i< se.getOptions().getLength(); i++){\r
+ for (int i = 0, l = se.getOptions().getLength(); i < l; i++){\r
OptionElement oe = se.getOptions().getItem(i);\r
if (oe.isSelected()) {\r
result.set(result.length(), oe.getValue());\r
} else if (e.getNodeName().equalsIgnoreCase("input")) {\r
InputElement ie = InputElement.as(e);\r
if ("radio".equalsIgnoreCase(ie.getType())) {\r
- for (Element e2 : elements()) {\r
+ for (Element e2 : elements) {\r
if ("input".equalsIgnoreCase(e2.getNodeName())) {\r
InputElement ie2 = InputElement.as(e2);\r
if ("radio".equalsIgnoreCase(ie2.getType()) && ie2.isChecked()\r
* if there isn't any.\r
*/\r
public <W extends Widget> W widget(int n) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
@SuppressWarnings("unchecked")\r
W w = (W) getAssociatedWidget(e);\r
if (w != null) {\r
*/\r
public List<Widget> widgets() {\r
List<Widget> widgets = new ArrayList<Widget>();\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
Widget w = getAssociatedWidget(e);\r
if (w != null) {\r
widgets.add(w);\r
* Set the width of every matched element.\r
*/\r
public GQuery width(int width) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
e.getStyle().setPropertyPx("width", width);\r
}\r
return this;\r
* else.\r
*/\r
public GQuery wrap(GQuery query) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
$(e).wrapAll(query);\r
}\r
return this;\r
public GQuery wrapAll(GQuery query) {\r
if (!isEmpty()) {\r
GQuery wrap = query.clone();\r
- if (elements.getItem(0).getParentNode() != null) {\r
- wrap.insertBefore(elements.getItem(0));\r
+ if (get(0).getParentNode() != null) {\r
+ wrap.insertBefore(get(0));\r
}\r
- for (Element e : wrap.elements()) {\r
+ for (Element e : wrap.elements) {\r
Node n = e;\r
while (n.getFirstChild() != null\r
&& n.getFirstChild().getNodeType() == Node.ELEMENT_NODE) {\r
* that element that will enwrap everything else.\r
*/\r
public GQuery wrapInner(GQuery query) {\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
$(e).contents().wrapAll(query);\r
}\r
return this;\r
* <code> filter</code> parameter allows to filter the matched set to remove.\r
*/\r
protected GQuery remove(String filter, boolean clean) {\r
-\r
- for (Element e : elements()) {\r
+ for (Element e : elements) {\r
if (filter == null || $(e).filter(filter).length() == 1) {\r
if (clean) {\r
// clean data linked to the children\r
}\r
}\r
}\r
-\r
return this;\r
}\r
\r
}\r
\r
private GQuery domManip(GQuery g, int func, Element... elms) {\r
+ int size = g.size();\r
JsNodeArray newNodes = JsNodeArray.create();\r
if (elms.length == 0) {\r
- elms = elements();\r
+ elms = elements;\r
}\r
- for (Element e : elms) {\r
- // e.getOwnerDocument();\r
+ for (int i = 0, l = elms.length; i < l;i ++) {\r
+ Element e = elms[i];\r
if (e.getNodeType() == Node.DOCUMENT_NODE) {\r
- e = e.<Document> cast().getBody();\r
+ e = e.<Document>cast().getBody();\r
}\r
- for (int j = 0; j < g.size(); j++) {\r
+ for (int j = 0; j < size; j++) {\r
// Widget w = getAssociatedWidget(g.get(j));\r
// GqUi.detachWidget(w);\r
+ \r
Node n = g.get(j);\r
- if (g.size() > 1) {\r
+ // If an element selected is inserted elsewhere, it will be moved into the target (not cloned).\r
+ // If there is more than one target element, however, cloned copies of the inserted element will be created for each target after the first\r
+ if (size > 1 || i > 0) {\r
n = n.cloneNode(true);\r
}\r
switch (func) {\r
break;\r
}\r
EventsListener.rebind(n.<Element> cast());\r
+ \r
// GqUi.attachWidget(w);\r
}\r
}\r
- if (newNodes.size() > g.size()) {\r
+ if (newNodes.size() > g.get().getLength()) {\r
g.setArray(newNodes);\r
}\r
return this;\r
}\r
\r
+ // TODO: this should be handled by the other domManip method\r
private GQuery domManip(String htmlString, int func) {\r
JsMap<Document, GQuery> cache = JsMap.createObject().cast();\r
- for (Element e : elements()) {\r
- Document d = e.getNodeType() == Node.DOCUMENT_NODE ? e.<Document> cast()\r
- : e.getOwnerDocument();\r
+ for (Element e : elements) {\r
+ Document d = getOwnerDocument(e);\r
GQuery g = cache.get(d);\r
if (g == null) {\r
g = cleanHtmlString(htmlString, d);\r
\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
+ for (int i = 0, l = second.getLength(); i < l; i++) {\r
res.addNode(second.getItem(i));\r
}\r
return res;\r