From: Jouni Koivuviita Date: Fri, 4 Jul 2008 09:48:21 +0000 (+0000) Subject: Helper class for fetching CSS property values from stylesheets. X-Git-Tag: 6.7.0.beta1~4465 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d531b542c882d55d08c2619cb91ea6e049c4d428;p=vaadin-framework.git Helper class for fetching CSS property values from stylesheets. svn changeset:5058/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/CSSRule.java b/src/com/itmill/toolkit/terminal/gwt/client/CSSRule.java new file mode 100644 index 0000000000..d7cca245dc --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/CSSRule.java @@ -0,0 +1,84 @@ +package com.itmill.toolkit.terminal.gwt.client; + +import com.google.gwt.core.client.JavaScriptObject; + +/** + * Utility class for fetching CSS properties from DOM StyleSheets JS object. + */ +public class CSSRule { + + private final String selector; + private JavaScriptObject rules = null; + + public CSSRule(String selector) { + this.selector = selector; + fetchRule(selector); + } + + // TODO how to find the right LINK-element? We should probably give the + // stylesheet a name. + private native void fetchRule(final String selector) + /*-{ + this.@com.itmill.toolkit.terminal.gwt.client.CSSRule::rules = @com.itmill.toolkit.terminal.gwt.client.CSSRule::searchForRule(Lcom/google/gwt/core/client/JavaScriptObject;Ljava/lang/String;)($doc.styleSheets[1], selector); + }-*/; + + /* + * Loops through all current style rules and collects all matching to + * 'rules' array. The array is reverse ordered (last one found is first). + */ + private static native JavaScriptObject searchForRule( + JavaScriptObject sheet, final String selector) + /*-{ + if(!$doc.styleSheets) + return null; + + selector = selector.toLowerCase(); + + var allMatches = []; + + var theRules = new Array(); + if (sheet.cssRules) + theRules = sheet.cssRules + else if (sheet.rules) + theRules = sheet.rules + + var j = theRules.length; + for(var i=0; i