}\r
}\r
\r
- /**\r
- * Copied from UIObject.\r
- */\r
- protected static void setStyleName(Element elem, String style, boolean add) {\r
-\r
- style = style.trim();\r
-\r
- // Get the current style string.\r
- String oldStyle = elem.getClassName();\r
- int idx = oldStyle.indexOf(style);\r
-\r
- // Calculate matching index.\r
- while (idx != -1) {\r
- if (idx == 0 || oldStyle.charAt(idx - 1) == ' ') {\r
- int last = idx + style.length();\r
- int lastPos = oldStyle.length();\r
- if ((last == lastPos) || ((last < lastPos) && (oldStyle.charAt(last)\r
- == ' '))) {\r
- break;\r
- }\r
- }\r
- idx = oldStyle.indexOf(style, idx + 1);\r
- }\r
-\r
- if (add) {\r
- // Only add the style if it's not already present.\r
- if (idx == -1) {\r
- if (oldStyle.length() > 0) {\r
- oldStyle += " ";\r
- }\r
- DOM.setElementProperty(elem.<com.google.gwt.user.client.Element>cast(),\r
- "className", oldStyle + style);\r
- }\r
- } else {\r
- // Don't try to remove the style if it's not there.\r
- if (idx != -1) {\r
- // Get the leading and trailing parts, without the removed name.\r
- String begin = oldStyle.substring(0, idx).trim();\r
- String end = oldStyle.substring(idx + style.length()).trim();\r
-\r
- // Some contortions to make sure we don't leave extra spaces.\r
- String newClassName;\r
- if (begin.length() == 0) {\r
- newClassName = end;\r
- } else if (end.length() == 0) {\r
- newClassName = begin;\r
- } else {\r
- newClassName = begin + " " + end;\r
- }\r
-\r
- DOM.setElementProperty(elem.<com.google.gwt.user.client.Element>cast(),\r
- "className", newClassName);\r
- }\r
- }\r
- }\r
-\r
protected static void setStyleProperty(String prop, String val, Element e) {\r
// put in lower-case only if all letters are upper-case, to avoid modify already camelized properties\r
if (prop.matches("^[A-Z]+$")) {\r
public GQuery addClass(String... classes) {\r
for (Element e : elements()) {\r
for (String clz : classes) {\r
- setStyleName(e, clz, true);\r
+ e.addClassName(clz);\r
}\r
}\r
return this;\r
public GQuery removeClass(String... classes) {\r
for (Element e : elements()) {\r
for (String clz : classes) {\r
- setStyleName(e, clz, false);\r
+ e.removeClassName(clz);\r
}\r
}\r
return this;\r
}\r
\r
/**\r
- * Adds or removes the specified classes to each matched element.\r
+ * Adds or removes the specified classes to each matched element\r
+ * depending on the class's presence\r
*/\r
public GQuery toggleClass(String... classes) {\r
for (Element e : elements()) {\r
for (String clz : classes) {\r
if (hasClass(e, clz)) {\r
- setStyleName(e, clz, false);\r
+ e.removeClassName(clz);\r
} else {\r
- setStyleName(e, clz, true);\r
+ e.addClassName(clz);\r
}\r
}\r
}\r
}\r
\r
/**\r
- * Adds or removes the specified classes to each matched element.\r
+ * Adds or removes the specified classes to each matched element\r
+ * depending on the value of the switch argument.\r
+ * \r
+ * if addOrRemove is true, the class is added and in the case of\r
+ * false it is removed.\r
*/\r
- public GQuery toggleClass(String clz, boolean sw) {\r
- for (Element e : elements()) {\r
- setStyleName(e, clz, sw);\r
+ public GQuery toggleClass(String clz, boolean addOrRemove) {\r
+ if (addOrRemove) {\r
+ addClass(clz);\r
+ } else {\r
+ removeClass(clz);\r
}\r
return this;\r
}\r