* Wrap a GQuery around an existing element.\r
*/\r
public static GQuery $(Element element) {\r
- return new GQuery(JSArray.create(element));\r
+ return new GQuery(element);\r
}\r
\r
/**\r
* Wrap a GQuery around an event's target element.\r
*/\r
public static GQuery $(Event event) {\r
- return $((Element) event.getCurrentEventTarget().cast());\r
+ return event == null ? $() : $((Element) event.getCurrentEventTarget().cast());\r
}\r
\r
/**\r
* Wrap a GQuery around an existing node.\r
*/\r
public static GQuery $(Node n) {\r
- return new GQuery(JSArray.create(n));\r
+ return n == null ? $() : new GQuery(JSArray.create(n));\r
}\r
\r
/**\r
*/\r
public static GQuery $(@SuppressWarnings("rawtypes") ArrayList a) {\r
JSArray elements = JSArray.create();\r
- for (Object o : a ) {\r
- if (o instanceof Node) {\r
- elements.addNode((Node)o);\r
- } else if (o instanceof Widget) {\r
- elements.addNode(((Widget)o).getElement());\r
+ if (a != null) {\r
+ for (Object o : a ) {\r
+ if (o instanceof Node) {\r
+ elements.addNode((Node)o);\r
+ } else if (o instanceof Widget) {\r
+ elements.addNode(((Widget)o).getElement());\r
+ }\r
}\r
}\r
return new GQuery(elements);\r
* Wrap a GQuery around an existing widget.\r
*/\r
public static GQuery $(Widget w){\r
- return $(w.getElement());\r
+ return w == null ? $() : $(w.getElement());\r
}\r
\r
/**\r
return $wnd;\r
}-*/;\r
\r
- protected NodeList<Element> elements = null;\r
+ protected NodeList<Element> elements = JavaScriptObject.createArray().cast();\r
\r
private String currentSelector;\r
\r
private GQuery previousObject;\r
\r
public GQuery() {\r
- elements = JavaScriptObject.createArray().cast();\r
}\r
\r
public GQuery(Element element) {\r
- elements = JSArray.create(element);\r
+ if (element != null) {\r
+ elements = JSArray.create(element);\r
+ }\r
}\r
\r
public GQuery(GQuery gq) {\r
- this(gq.get());\r
+ this(gq == null ? null : gq.get());\r
}\r
\r
public GQuery(JSArray elements) {\r
- this.elements = elements;\r
+ if (elements != null) {\r
+ this.elements = elements;\r
+ }\r
}\r
\r
public GQuery(NodeList<Element> list) {\r
- elements = list;\r
+ if (list != null) {\r
+ elements = list;\r
+ }\r
}\r
\r
/**\r
* Reduce GQuery to element in the specified position.\r
*/\r
public GQuery eq(int pos) {\r
- return $(elements.getItem(pos));\r
+ return $(get(pos));\r
}\r
\r
/**\r
* Return the ith element matched.\r
*/\r
public Element get(int i) {\r
- return elements.getItem(i);\r
+ int l = elements.getLength();\r
+ return i >= 0 && i < l? elements.getItem(i) : null;\r
}\r
\r
/**\r
import java.util.ArrayList;
+import junit.framework.Assert;
+
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
+import com.google.gwt.dom.client.Node;
/**
* Test class for testing gwtquery-core api.
assertEquals(3, $(a).size());
}
+
+ public void testNulls() {
+ Assert.assertEquals(0, $((Node)null).size());
+ Assert.assertEquals(0, $((Element)null).size());
+ Assert.assertEquals(0, $((String)null).size());
+ Assert.assertNull($((String)null).get(0));
+ Assert.assertNull($((String)null).get(-1));
+ Assert.assertEquals(0, $((String)null).eq(0).size());
+ }
}