*/\r
public class GQuery implements Lazy<GQuery, LazyGQuery> {\r
\r
- private static final String OLD_DATA_PREFIX = "old-";\r
-\r
/**\r
* A POJO used to store the top/left CSS positioning values of an element.\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
this[id]=obj;\r
}-*/;\r
}\r
- \r
- public static final Document document = Document.get();\r
+\r
public static final BodyElement body = Document.get().getBody();\r
\r
+ public static final Document document = Document.get();\r
public static boolean fxOff = false;\r
-\r
+ \r
public static Class<GQuery> GQUERY = GQuery.class;\r
\r
public static final Element window = window();\r
\r
private static DataCache dataCache = null;\r
\r
+ private static SelectorEngine engine;\r
+\r
private static final int FUNC_PREPEND = 0, FUNC_APPEND = 1, FUNC_AFTER = 2,\r
FUNC_BEFORE = 3;\r
\r
+ private static final String OLD_DATA_PREFIX = "old-";\r
+\r
private static JsMap<Class<? extends GQuery>, Plugin<? extends GQuery>>\r
- plugins;\r
+ plugins;;\r
\r
- private static DocumentStyleImpl styleImpl = GWT.create(DocumentStyleImpl.class);;\r
+ private static DocumentStyleImpl styleImpl = GWT.create(DocumentStyleImpl.class);\r
\r
private static Element windowData = null;\r
\r
}\r
\r
/**\r
- * Wrap a GQuery around an existing node.\r
+ * Wrap a GQuery around an event's target element.\r
*/\r
- public static GQuery $(Node n) {\r
- return new GQuery(JSArray.create(n));\r
+ public static GQuery $(Event event) {\r
+ return $((Element) event.getCurrentEventTarget().cast());\r
}\r
\r
/**\r
- * Wrap a GQuery around an event's target element.\r
+ * Wrap a GQuery around an existing node.\r
*/\r
- public static GQuery $(Event event) {\r
- return $((Element)event.getCurrentEventTarget().cast());\r
+ public static GQuery $(Node n) {\r
+ return new GQuery(JSArray.create(n));\r
}\r
\r
/**\r
Class<T> plugin) {\r
try {\r
if (plugins != null) {\r
- T gquery = (T) plugins.get(plugin).\r
- init(new GQuery(select(selector, context)));\r
+ T gquery = (T) plugins.get(plugin).init(new GQuery(select(selector, context)));\r
return gquery;\r
}\r
throw new RuntimeException("No plugin for class " + plugin);\r
n = n.getLastChild();\r
}\r
// TODO: add fixes for IE TBODY issue\r
- return $((NodeList<Element>)n.getChildNodes().cast());\r
+ return $((NodeList<Element>) n.getChildNodes().cast());\r
}\r
\r
protected static <S> Object data(Element item, String name, S value) {\r
}\r
return name != null ? d.getObject(name) : id;\r
}\r
-\r
+ \r
protected static String[] jsArrayToString(JsArrayString array) {\r
if (GWT.isScript()) {\r
return jsArrayToString0(array);\r
return result;\r
}\r
}\r
- \r
+\r
private static JSArray copyNodeList(NodeList n) {\r
JSArray res = JSArray.create();\r
for (int i = 0; i < n.getLength(); i++) {\r
private static native String[] jsArrayToString0(JsArrayString array) /*-{\r
return array;\r
}-*/;\r
-\r
+ \r
private static native <T extends Node> T[] reinterpretCast(NodeList<T> nl) /*-{\r
return nl;\r
}-*/;\r
- \r
- private static SelectorEngine engine;\r
\r
private static NodeList<Element> select(String selector, Node context) {\r
if (engine == null) {\r
* function fires.\r
*/\r
public GQuery hover(Function fover, Function fout) {\r
- return bind(Event.ONMOUSEOVER, null, fover).\r
- bind(Event.ONMOUSEOUT, null, fout);\r
+ return bind(Event.ONMOUSEOVER, null, fover).bind(Event.ONMOUSEOUT, null, fout);\r
}\r
\r
/**\r
* relative or absolute). This method only works with visible elements.\r
*/\r
public GQuery offsetParent() {\r
- Element offParent = SelectorEngine.\r
- or(elements.getItem(0).getOffsetParent(), body);\r
- while (offParent != null && !"body".equalsIgnoreCase(offParent.getTagName())\r
- && !"html".equalsIgnoreCase(offParent.getTagName()) && "static".\r
- equals(styleImpl.curCSS(offParent, "position", true))) {\r
+ Element offParent = GQUtils.or(elements.getItem(0).getOffsetParent(), body);\r
+ while (offParent != null \r
+ && !"body".equalsIgnoreCase(offParent.getTagName())\r
+ && !"html".equalsIgnoreCase(offParent.getTagName()) \r
+ && "static".equals(styleImpl.curCSS(offParent, "position", true))) {\r
offParent = offParent.getOffsetParent();\r
}\r
return new GQuery(offParent);\r
}\r
}\r
\r
- /**\r
- * Force the current matched set of elements to become\r
- * the specified array of elements.\r
- */\r
- public GQuery setArray(NodeList<Element> nodes){\r
- this.elements = nodes;\r
- return this;\r
- }\r
-\r
/**\r
* Bind a set of functions to the scroll event of each matched element.\r
* Or trigger the event if no functions are provided.\r
return as(Events).triggerHtmlEvent("select");\r
}\r
\r
+ /**\r
+ * Force the current matched set of elements to become\r
+ * the specified array of elements.\r
+ */\r
+ public GQuery setArray(NodeList<Element> nodes) {\r
+ this.elements = nodes;\r
+ return this;\r
+ }\r
+\r
/**\r
* Set CSS property on the first element.\r
*/\r
*/\r
public GQuery show() {\r
for (Element e : elements()) {\r
- styleImpl.setStyleProperty(e, "display", SelectorEngine.or((String)data(e, "oldDisplay", null), ""));\r
+ styleImpl.setStyleProperty(e, "display", \r
+ GQUtils.or((String) data(e, "oldDisplay", null), ""));\r
// When the display=none is in the stylesheet.\r
if (!styleImpl.isVisible(e)) {\r
styleImpl.setStyleProperty(e, "display", "block");\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
return this;\r
}\r
\r
-\r
/**\r
* Toggle among two or more function calls every other click.\r
*/\r
\r
/**\r
* Adds or removes the specified classes to each matched element\r
- * depending on the class's presence\r
+ * depending on the class's presence.\r
*/\r
public GQuery toggleClass(String... classes) {\r
for (Element e : elements()) {\r
} else if ("input".equalsIgnoreCase(name)) {\r
InputElement ie = InputElement.as(e);\r
String type = ie.getType();\r
- if ("radio".equalsIgnoreCase((type)) || "checkbox".\r
- equalsIgnoreCase(type)) {\r
+ if ("radio".equalsIgnoreCase((type)) \r
+ || "checkbox".equalsIgnoreCase(type)) {\r
if ("checkbox".equalsIgnoreCase(type)) {\r
for (String val : values) {\r
if (ie.getValue().equals(val)) {\r
JSArray newNodes = JSArray.create();\r
for (int i = 0; i < elements().length; i++) {\r
Element e = elements()[i];\r
- if (document.equals(e)){\r
+ if (document.equals(e)) {\r
e = body;\r
}\r
for (int j = 0; j < g.size(); j++) {\r