private void checkForCSSPseudoRules() { Collection ss = document.getStyleSheets(); java.util.Iterator itss = ss.iterator(); Pattern patRule = Pattern.compile("^([^:]+?):(link|active|visited|hover)\\s+(\\{.+)$"); HashSet newRules = new HashSet(); while (itss.hasNext()) { CSSStyleSheetImpl ss1 = (CSSStyleSheetImpl)itss.next(); CSSRuleList ruleList = ss1.getCssRules(); for (int i=0; i < ruleList.getLength(); i++) { CSSRule rule = ruleList.item(i); String ruleText = rule.getCssText(); // System.out.println("rule : "+ruleText); Matcher mpatRule = patRule.matcher(ruleText); if (mpatRule.find()) { String newRuleText = mpatRule.group(1)+" "+mpatRule.group(3); if (!newRules.contains(mpatRule.group(1))) { newRules.add(mpatRule.group(1)); // System.out.println("***new rule : "+newRuleText); ss1.insertRule(newRuleText, i++); } } } } }
private void init() { if (style != null) { String styleContent = style.getValue().getText(); if (styleContent != null && !styleContent.isEmpty()) { InputSource source = new InputSource(new StringReader(styleContent)); CSSOMParser parser = new CSSOMParser(new SACParserCSS3()); parser.setErrorHandler(new ParserErrorHandler()); try { styleSheet = parser.parseStyleSheet(source, null, null); cssFormat = new CSSFormat().setRgbAsHex(true); CSSRuleList rules = styleSheet.getCssRules(); for (int i = 0; i < rules.getLength(); i++) { final CSSRule rule = rules.item(i); if (rule instanceof CSSStyleRuleImpl) { styleRuleMap.put(((CSSStyleRuleImpl) rule).getSelectorText(), (CSSStyleRuleImpl) rule); } } } catch (IOException e) { e.printStackTrace(); } } } }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { baseUri_ = (String) in.readObject(); cssRules_ = (CSSRuleList) in.readObject(); if (cssRules_ != null) { for (int i = 0; i < cssRules_.getLength(); i++) { final CSSRule cssRule = cssRules_.item(i); if (cssRule instanceof AbstractCSSRuleImpl) { ((AbstractCSSRuleImpl) cssRule).setParentStyleSheet(this); } } } disabled_ = in.readBoolean(); href_ = (String) in.readObject(); media_ = (MediaList) in.readObject(); // TODO ownerNode may not be serializable! // ownerNode = (Node) in.readObject(); readOnly_ = in.readBoolean(); title_ = (String) in.readObject(); }
/** * Show style sheet. * * @param styleSheet * the style sheet */ private void showStyleSheet(CSSStyleSheet styleSheet) { StringWriter stringWriter = new StringWriter(); PrintWriter writer = new PrintWriter(stringWriter); writer.println("<DL>"); CSSRuleList ruleList = styleSheet.getCssRules(); int length = ruleList.getLength(); for (int i = 0; i < length; i++) { CSSRule rule = ruleList.item(i); writer.println("<DT><strong>Rule: type=" + rule.getType() + ",class=" + rule.getClass().getName() + "</strong></DT>"); writer.println("<DD>"); this.writeRuleInfo(writer, rule); writer.println("</DD>"); } writer.println("</DL>"); writer.flush(); String html = stringWriter.toString(); HtmlRendererContext rcontext = new SimpleHtmlRendererContext(this.cssOutput, (UserAgentContext) null); this.cssOutput.setHtml(html, "about:css", rcontext); }
public static StyleSheetDefinition parseStyleSheetDefinition(final String cssPath, final InputStream cssStream) throws TranslatorException { final CSSStyleSheetImpl sheet = parseStyleSheet(new InputSource(new InputStreamReader(cssStream))); final CSSRuleList cssRules = sheet.getCssRules(); final StyleSheetDefinition result = new StyleSheetDefinition(cssPath); for (int i = 0; i < cssRules.getLength(); i++) { final CSSRule item = cssRules.item(i); if (CSSRule.STYLE_RULE == item.getType()) { final CSSStyleRuleImpl rule = (CSSStyleRuleImpl) item; final String selectorText = rule.getSelectorText(); final CSSStyleDeclaration declaration = rule.getStyle(); final StyleDefinition styleDefinition = parseStyleDefinition(declaration); result.addStyle(selectorText, styleDefinition); } } return result; }
@DataProvider(name = "jdkClasses") public Object[][] jdkClasses() { return new Object[][] { { java.awt.Button.class, null }, { java.lang.Object.class, null }, { org.w3c.dom.css.CSSRule.class, null }, { loadClass("org.w3c.dom.css.Fake"), loadClass("org.w3c.dom.css.FakePackage") }, }; }
/** * Creates a new CSSOMSVGStyleDeclaration. */ public CSSOMSVGStyleDeclaration(ValueProvider vp, CSSRule parent, CSSEngine eng) { super(vp, parent); cssEngine = eng; }
private CSSRule getParentRule() { if (!nodeStack_.empty() && nodeStack_.size() > 1) { final Object node = nodeStack_.get(nodeStack_.size() - 2); if (node instanceof CSSRule) { return (CSSRule) node; } } return null; }
/** * {@inheritDoc} */ @Override public String getCssText(final CSSFormat format) { final StringBuilder sb = new StringBuilder("@media "); sb.append(((MediaListImpl) getMedia()).getMediaText(format)); sb.append(" {"); for (int i = 0; i < getCssRules().getLength(); i++) { final CSSRule rule = getCssRules().item(i); sb.append(rule.getCssText()).append(" "); } sb.append("}"); return sb.toString(); }
private void readObject(final ObjectInputStream in) throws IOException, ClassNotFoundException { cssRules_ = (CSSRuleList) in.readObject(); if (cssRules_ != null) { for (int i = 0; i < cssRules_.getLength(); i++) { final CSSRule cssRule = cssRules_.item(i); if (cssRule instanceof AbstractCSSRuleImpl) { ((AbstractCSSRuleImpl) cssRule).setParentRule(this); ((AbstractCSSRuleImpl) cssRule).setParentStyleSheet(getParentStyleSheetImpl()); } } } media_ = (MediaList) in.readObject(); }
@Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (!(obj instanceof CSSRule)) { return false; } return super.equals(obj); // don't use parentRule and parentStyleSheet in equals() // recursive loop -> stack overflow! }
@Override public CSSRule item(final int index) { if (index < 0 || null == rules_ || index >= rules_.size()) { return null; } return rules_.get(index); }
/** * {@inheritDoc} */ @Override public String getCssText(final CSSFormat format) { final StringBuilder sb = new StringBuilder(); for (int i = 0; i < getLength(); i++) { if (i > 0) { sb.append("\r\n"); } final CSSRule rule = item(i); sb.append(((CSSFormatable) rule).getCssText(format)); } return sb.toString(); }
private boolean equalsRules(final CSSRuleList crl) { if ((crl == null) || (getLength() != crl.getLength())) { return false; } for (int i = 0; i < getLength(); i++) { final CSSRule cssRule1 = item(i); final CSSRule cssRule2 = crl.item(i); if (!LangUtils.equals(cssRule1, cssRule2)) { return false; } } return true; }
/** * Adds the style sheet. * * @param styleSheet * the style sheet * @throws MalformedURLException * the malformed url exception * @throws UnsupportedEncodingException */ private final void addStyleSheet(CSSStyleSheet styleSheet) throws MalformedURLException, UnsupportedEncodingException { CSSRuleList ruleList = styleSheet.getCssRules(); int length = ruleList.getLength(); for (int i = 0; i < length; i++) { CSSRule rule = ruleList.item(i); this.addRule(styleSheet, rule); } }
/** * Used to retrieve a CSS rule by ordinal index. The order in this collection * represents the order of the rules in the CSS style sheet. If index is * greater than or equal to the number of rules in the list, this returns * <code>null</code>. * * @param index * Index into the collection * @return The style rule at the <code>index</code> position in the * <code>CSSRuleList</code>, or <code>null</code> if that is not a * valid index. */ public CSSRule item(final int index) { try { final RuleBlock<?> ruleBlock = jSheet.asList().get(index); if (ruleBlock instanceof RuleSet) { final RuleSet ruleSet = (RuleSet) ruleBlock; return new CSSStyleRuleImpl(ruleSet, parentStyleSheet); } else if (ruleBlock instanceof RuleFontFace) { final RuleFontFace ruleFontFace = (RuleFontFace) ruleBlock; return new CSSFontFaceRuleImpl(ruleFontFace, parentStyleSheet); } else if (ruleBlock instanceof RulePage) { final RulePage rulePage = (RulePage) ruleBlock; return new CSSPageRuleImpl(rulePage, parentStyleSheet); } else if (ruleBlock instanceof RuleMedia) { final RuleMedia mediaRule = (RuleMedia) ruleBlock; return new CSSMediaRuleImpl(mediaRule, parentStyleSheet); } else { // TODO need to return the other types of RuleBlocks as well. // * Import Rule // * Charset Rule // Currently returning Unknown rule return new CSSUnknownRuleImpl(parentStyleSheet); } } catch (final ArrayIndexOutOfBoundsException e) { return null; } }
public HashMap<String, CSSStyleRule> extractCssStyleRules(String cssFile) throws IOException { TEST_FILE_SYSTEM.filesExists(cssFile); CSSOMParser cssParser = new CSSOMParser(); CSSStyleSheet css = cssParser.parseStyleSheet(new InputSource(new FileReader(TEST_FILE_SYSTEM.file(cssFile))), null, null); CSSRuleList cssRules = css.getCssRules(); HashMap<String, CSSStyleRule> rules = new HashMap<String, CSSStyleRule>(); for (int i = 0; i < cssRules.getLength(); i++) { CSSRule rule = cssRules.item(i); if (rule instanceof CSSStyleRule) { rules.put(((CSSStyleRule) rule).getSelectorText(), (CSSStyleRule) rule); } } return rules; }
public AttributeRuleList(CSSRuleList ruleList) { super(ruleList.getLength()); for (int i = 0; i < ruleList.getLength(); i++) { CSSRule rule = ruleList.item(i); if(rule instanceof CSSStyleRule) { this.add((CSSStyleRule)rule); } } }
private static StyleDefinition parseElementStyleDefinition(final String styleRaw) throws TranslatorException { final CSSStyleSheetImpl sheet = parseElementStyleSheet(styleRaw); final CSSRuleList cssRules = sheet.getCssRules(); for (int i = 0; i < cssRules.getLength(); i++) { final CSSRule item = cssRules.item(i); if (CSSRule.STYLE_RULE == item.getType()) { final CSSStyleRuleImpl rule = (CSSStyleRuleImpl) item; String selectorText = rule.getSelectorText(); final CSSStyleDeclaration declaration = rule.getStyle(); return parseStyleDefinition(declaration); } } return null; }
private Class<?> loadClass(String name) { return Class.forName(CSSRule.class.getModule(), name); }
/** * Creates a new style declaration. */ public CSSOMStyleDeclaration(ValueProvider vp, CSSRule parent) { valueProvider = vp; parentRule = parent; }
public CSSRule parseRule(final InputSource source) throws IOException { final CSSOMHandler handler = new CSSOMHandler(); parser_.setDocumentHandler(handler); parser_.parseRule(source); return (CSSRule) handler.getRoot(); }
public CSSMediaRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final MediaList media) { super(parentStyleSheet, parentRule); media_ = media; }
@Override public CSSRule getOwnerRule() { return ownerRule_; }
public void setOwnerRule(final CSSRule ownerRule) { ownerRule_ = ownerRule; }
public CSSUnknownRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final String text) { super(parentStyleSheet, parentRule); text_ = text; }
public void setParentRule(final CSSRule parentRule) { parentRule_ = parentRule; }
public AbstractCSSRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule) { super(); parentStyleSheet_ = parentStyleSheet; parentRule_ = parentRule; }
public CSSRule getParentRule() { return parentRule_; }
public CSSCharsetRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final String encoding) { super(parentStyleSheet, parentRule); encoding_ = encoding; }
public CSSFontFaceRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule) { super(parentStyleSheet, parentRule); }
public CSSPageRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final String pseudoPage) { super(parentStyleSheet, parentRule); pseudoPage_ = pseudoPage; }
public CSSImportRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final String href, final MediaList media) { super(parentStyleSheet, parentRule); href_ = href; media_ = media; }
public CSSStyleRuleImpl(final CSSStyleSheetImpl parentStyleSheet, final CSSRule parentRule, final SelectorList selectors) { super(parentStyleSheet, parentRule); selectors_ = selectors; }