/** * 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); }
/** * 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); } }
public void _testInsertText1() throws IOException { ICSSModel model = getModel(); IStructuredDocument structuredDocument = model.getStructuredDocument(); structuredDocument.set( FileUtil.createString( "src/org/eclipse/wst/css/core/tests/testfiles", "CSSFontFaceRuleTest.css")); CSSStyleSheet sheet = (CSSStyleSheet) model.getDocument(); CSSRuleList ruleList = sheet.getCssRules(); assertEquals(3, ruleList.getLength()); CSSRule rule; CSSStyleDeclaration declaration; CSSValue value; CSSValueList valueList; // rule 1 rule = ruleList.item(0); assertEquals(CSSRule.FONT_FACE_RULE, rule.getType()); assertTrue(rule instanceof CSSFontFaceRule); declaration = ((CSSFontFaceRule) rule).getStyle(); assertEquals(4, declaration.getLength()); value = declaration.getPropertyCSSValue("font-family"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_STRING, "Swiss 721")); value = declaration.getPropertyCSSValue("src"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_URI, "swiss721blk.pfr")); value = declaration.getPropertyCSSValue("font-style"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(3, valueList.getLength()); checkPrimitiveString( valueList.item(0), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "normal")); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(2), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "italic")); value = declaration.getPropertyCSSValue("font-weight"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(3, valueList.getLength()); checkPrimitiveNumber( valueList.item(0), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 800)); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(2), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 900)); }
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(); }
/** * Parse CSS and create completion informations. * * @param css CSS */ private void processStylesheet(String css) { try { CSSOMParser parser = new CSSOMParser(); InputSource is = new InputSource(new StringReader(css)); CSSStyleSheet stylesheet = parser.parseStyleSheet(is); CSSRuleList list = stylesheet.getCssRules(); // ArrayList assists = new ArrayList(); for (int i = 0; i < list.getLength(); i++) { CSSRule rule = list.item(i); if (rule instanceof CSSStyleRule) { CSSStyleRule styleRule = (CSSStyleRule) rule; String selector = styleRule.getSelectorText(); SelectorList selectors = parser.parseSelectors(new InputSource(new StringReader(selector))); for (int j = 0; j < selectors.getLength(); j++) { Selector sel = selectors.item(j); if (sel instanceof ConditionalSelector) { Condition cond = ((ConditionalSelector) sel).getCondition(); SimpleSelector simple = ((ConditionalSelector) sel).getSimpleSelector(); if (simple instanceof ElementSelector) { String tagName = ((ElementSelector) simple).getLocalName(); if (tagName == null) { tagName = "*"; } else { tagName = tagName.toLowerCase(); } if (cond instanceof AttributeCondition) { AttributeCondition attrCond = (AttributeCondition) cond; if (rules.get(tagName) == null) { List<String> classes = new ArrayList<String>(); classes.add(attrCond.getValue()); rules.put(tagName, classes); // } else { // ArrayList classes = (ArrayList)rules.get(tagName); //// classes.add(new AssistInfo(attrCond.getValue())); // classes.add(attrCond.getValue()); } } } } } } } } catch (Throwable ex) { // java.lang.Error: Missing return statement in function } }
/** * Returns the length of this list. * * @return the length of this list. */ @JsxGetter public int getLength() { if (rules_ != null) { return rules_.getLength(); } return 0; }
/** {@inheritDoc} */ @Override public Object get(final int index, final Scriptable start) { if (index < 0 || getLength() <= index) { return NOT_FOUND; } return CSSRule.create(stylesheet_, rules_.item(index)); }
/** * find and returns a {@link StyleSheet} which represent "jeeeyul-custom.css". * * @param documentCSS * @return * @since 1.2 */ private StyleSheet findCustomThemeSheet(DocumentCSS documentCSS) { StyleSheet customThemeSheet = null; StyleSheetList styleSheets = documentCSS.getStyleSheets(); SearchCustomThemeSheet: for (int i = 0; i < styleSheets.getLength(); i++) { StyleSheet eachSheet = styleSheets.item(i); if (eachSheet instanceof CSSStyleSheet) { CSSRuleList cssRules = ((CSSStyleSheet) eachSheet).getCssRules(); for (int j = 0; j < cssRules.getLength(); j++) { ExtendedCSSRule rule = (ExtendedCSSRule) cssRules.item(j); SelectorList selectorList = rule.getSelectorList(); String selectorText = selectorList.item(0).toString(); if (CUSTOM_THEME_FIRST_SELECTOR.equals(selectorText)) { customThemeSheet = eachSheet; break SearchCustomThemeSheet; } } } } return customThemeSheet; }
private void parseFile(String filename) throws IOException { Reader r = new FileReader(filename); InputSource is = new InputSource(r); CSSOMParser parser = new CSSOMParser(); CSSStyleSheet styleSheet = parser.parseStyleSheet(is); CSSRuleList list = styleSheet.getCssRules(); for (int i = 0; i < list.getLength(); i++) { CSSRule rule = list.item(i); switch (rule.getType()) { case CSSRule.UNKNOWN_RULE: throw new IOException("Unknown rule in css file"); case CSSRule.STYLE_RULE: // CSSStyleRule srule = (CSSStyleRule) rule; // System.out.println(srule.getSelectorText()); break; default: System.out.println(rule); break; } } }
public void testInsertRule() { final String RULE = "@font-face { font-family: \"Swiss 721\"; src: url(swiss721.pfr); /* The expanded Swiss 721 */ font-stretch: expanded; }"; CSSStyleSheet sheet = getStyleSheet(); assertEquals(0, sheet.insertRule(RULE, 0)); CSSRuleList ruleList = sheet.getCssRules(); CSSRule rule = ruleList.item(0); assertTrue(rule instanceof CSSFontFaceRule); CSSStyleDeclaration declaration = ((CSSFontFaceRule) rule).getStyle(); assertEquals(3, declaration.getLength()); CSSValue value; CSSPrimitiveValue primitiveValue; value = declaration.getPropertyCSSValue("font-family"); assertTrue(value instanceof CSSPrimitiveValue); primitiveValue = (CSSPrimitiveValue) value; assertEquals(CSSPrimitiveValue.CSS_STRING, primitiveValue.getPrimitiveType()); assertEquals("Swiss 721", primitiveValue.getStringValue()); value = declaration.getPropertyCSSValue("src"); assertTrue(value instanceof CSSPrimitiveValue); primitiveValue = (CSSPrimitiveValue) value; assertEquals(CSSPrimitiveValue.CSS_URI, primitiveValue.getPrimitiveType()); assertEquals("swiss721.pfr", primitiveValue.getStringValue()); value = declaration.getPropertyCSSValue("font-stretch"); assertTrue(value instanceof CSSPrimitiveValue); primitiveValue = (CSSPrimitiveValue) value; assertEquals(CSSPrimitiveValue.CSS_IDENT, primitiveValue.getPrimitiveType()); assertEquals("expanded", primitiveValue.getStringValue()); }
public void _testInsertText3() throws IOException { ICSSModel model = getModel(); IStructuredDocument structuredDocument = model.getStructuredDocument(); structuredDocument.set( FileUtil.createString( "src/org/eclipse/wst/css/core/tests/testfiles", "CSSFontFaceRuleTest.css")); CSSStyleSheet sheet = (CSSStyleSheet) model.getDocument(); CSSRuleList ruleList = sheet.getCssRules(); assertEquals(3, ruleList.getLength()); CSSRule rule; CSSStyleDeclaration declaration; CSSValue value; CSSValueList valueList; // rule 3 rule = ruleList.item(2); assertEquals(CSSRule.FONT_FACE_RULE, rule.getType()); assertTrue(rule instanceof CSSFontFaceRule); declaration = ((CSSFontFaceRule) rule).getStyle(); assertEquals(5, declaration.getLength()); value = declaration.getPropertyCSSValue("src"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(4, valueList.getLength()); checkPrimitiveString( valueList.item(0), new PrimitiveString(ICSSPrimitiveValue.CSS_LOCAL, "Alabama Italic")); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(2), new PrimitiveString(CSSPrimitiveValue.CSS_URI, "http://www.fonts.org/A/alabama-italic")); checkPrimitiveString( valueList.item(3), new PrimitiveString(ICSSPrimitiveValue.CSS_FORMAT, "truetype")); value = declaration.getPropertyCSSValue("panose-1"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(10, valueList.getLength()); checkPrimitiveNumber(valueList.item(0), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 2)); checkPrimitiveNumber(valueList.item(1), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 4)); checkPrimitiveNumber(valueList.item(2), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 5)); checkPrimitiveNumber(valueList.item(3), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 2)); checkPrimitiveNumber(valueList.item(4), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 5)); checkPrimitiveNumber(valueList.item(5), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 4)); checkPrimitiveNumber(valueList.item(6), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 5)); checkPrimitiveNumber(valueList.item(7), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 9)); checkPrimitiveNumber(valueList.item(8), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 3)); checkPrimitiveNumber(valueList.item(9), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 3)); value = declaration.getPropertyCSSValue("font-family"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(3, valueList.getLength()); checkPrimitiveString( valueList.item(0), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "Alabama")); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(2), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "serif")); value = declaration.getPropertyCSSValue("font-weight"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(5, valueList.getLength()); checkPrimitiveNumber( valueList.item(0), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 300)); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(2), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 400)); checkPrimitiveString(valueList.item(3), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(4), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 500)); value = declaration.getPropertyCSSValue("font-style"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(3, valueList.getLength()); checkPrimitiveString( valueList.item(0), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "italic")); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(2), new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "oblique")); }
public void _testInsertText2() throws IOException { ICSSModel model = getModel(); IStructuredDocument structuredDocument = model.getStructuredDocument(); structuredDocument.set( FileUtil.createString( "src/org/eclipse/wst/css/core/tests/testfiles", "CSSFontFaceRuleTest.css")); CSSStyleSheet sheet = (CSSStyleSheet) model.getDocument(); CSSRuleList ruleList = sheet.getCssRules(); assertEquals(3, ruleList.getLength()); CSSRule rule; CSSStyleDeclaration declaration; CSSValue value; CSSValueList valueList; // rule 2 rule = ruleList.item(1); assertEquals(CSSRule.FONT_FACE_RULE, rule.getType()); assertTrue(rule instanceof CSSFontFaceRule); declaration = ((CSSFontFaceRule) rule).getStyle(); assertEquals(6, declaration.getLength()); value = declaration.getPropertyCSSValue("src"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(9, valueList.getLength()); checkPrimitiveString( valueList.item(0), new PrimitiveString(ICSSPrimitiveValue.CSS_LOCAL, "Palatino")); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(2), new PrimitiveString(ICSSPrimitiveValue.CSS_LOCAL, "Times New Roman")); checkPrimitiveString(valueList.item(3), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(4), new PrimitiveString(ICSSPrimitiveValue.CSS_LOCAL, "New York")); checkPrimitiveString(valueList.item(5), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(6), new PrimitiveString(ICSSPrimitiveValue.CSS_LOCAL, "Utopia")); checkPrimitiveString(valueList.item(7), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveString( valueList.item(8), new PrimitiveString(CSSPrimitiveValue.CSS_URI, "http://somewhere/free/font")); value = declaration.getPropertyCSSValue("font-family"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "serif")); value = declaration.getPropertyCSSValue("font-weight"); assertTrue(value instanceof CSSValueList); valueList = (CSSValueList) value; assertEquals(9, valueList.getLength()); checkPrimitiveNumber( valueList.item(0), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 100)); checkPrimitiveString(valueList.item(1), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(2), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 200)); checkPrimitiveString(valueList.item(3), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(4), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 300)); checkPrimitiveString(valueList.item(5), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(6), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 400)); checkPrimitiveString(valueList.item(7), new PrimitiveString(ICSSPrimitiveValue.CSS_COMMA, ",")); checkPrimitiveNumber( valueList.item(8), new PrimitiveNumber(ICSSPrimitiveValue.CSS_INTEGER, 500)); value = declaration.getPropertyCSSValue("font-style"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "normal")); value = declaration.getPropertyCSSValue("font-variant"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "normal")); value = declaration.getPropertyCSSValue("font-size"); checkPrimitiveString(value, new PrimitiveString(CSSPrimitiveValue.CSS_IDENT, "all")); }
/** * Adds the rule. * * @param styleSheet the style sheet * @param rule the rule * @throws MalformedURLException the malformed url exception * @throws UnsupportedEncodingException */ private final void addRule(CSSStyleSheet styleSheet, CSSRule rule) throws MalformedURLException, UnsupportedEncodingException { HTMLDocumentImpl document = this.document; if (rule instanceof CSSStyleRule) { CSSStyleRule sr = (CSSStyleRule) rule; String selectorList = sr.getSelectorText(); StringTokenizer commaTok = new StringTokenizer(selectorList, ","); while (commaTok.hasMoreTokens()) { String selectorPart = commaTok.nextToken().toLowerCase(); ArrayList<SimpleSelector> simpleSelectors = null; String lastSelectorText = null; StringTokenizer tok = new StringTokenizer(selectorPart, " \t\r\n"); if (tok.hasMoreTokens()) { simpleSelectors = new ArrayList<SimpleSelector>(); SimpleSelector prevSelector = null; SELECTOR_FOR: for (; ; ) { String token = tok.nextToken(); if (">".equals(token)) { if (prevSelector != null) { prevSelector.setSelectorType(SimpleSelector.PARENT); } continue SELECTOR_FOR; } else if ("+".equals(token)) { if (prevSelector != null) { prevSelector.setSelectorType(SimpleSelector.PRECEEDING_SIBLING); } continue SELECTOR_FOR; } int colonIdx = token.indexOf(':'); String simpleSelectorText = colonIdx == -1 ? token : token.substring(0, colonIdx); String pseudoElement = colonIdx == -1 ? null : token.substring(colonIdx + 1); prevSelector = new SimpleSelector(simpleSelectorText, pseudoElement); simpleSelectors.add(prevSelector); if (!tok.hasMoreTokens()) { lastSelectorText = simpleSelectorText; break; } } } if (lastSelectorText != null) { int dotIdx = lastSelectorText.indexOf('.'); if (dotIdx != -1) { String elemtl = lastSelectorText.substring(0, dotIdx); String classtl = lastSelectorText.substring(dotIdx + 1); this.addClassRule(elemtl, classtl, sr, simpleSelectors); } else { int poundIdx = lastSelectorText.indexOf('#'); if (poundIdx != -1) { String elemtl = lastSelectorText.substring(0, poundIdx); String idtl = lastSelectorText.substring(poundIdx + 1); this.addIdRule(elemtl, idtl, sr, simpleSelectors); } else { String elemtl = lastSelectorText; this.addElementRule(elemtl, sr, simpleSelectors); } } } } // TODO: Attribute selectors } else if (rule instanceof CSSImportRule) { UserAgentContext uacontext = document.getUserAgentContext(); if (uacontext.isExternalCSSEnabled()) { CSSImportRule importRule = (CSSImportRule) rule; if (CSSUtilities.matchesMedia(importRule.getMedia(), uacontext)) { String href = importRule.getHref(); CSSStyleSheet sheet = null; try { sheet = CSSUtilities.parse(href, document); } catch (Exception err) { logger.severe("Unable to parse CSS. URI=[" + href + "]." + err); } if (sheet != null) { this.addStyleSheet(sheet); } } } } else if (rule instanceof CSSMediaRule) { CSSMediaRule mrule = (CSSMediaRule) rule; MediaList mediaList = mrule.getMedia(); if (CSSUtilities.matchesMedia(mediaList, document.getUserAgentContext())) { CSSRuleList ruleList = mrule.getCssRules(); int length = ruleList.getLength(); for (int i = 0; i < length; i++) { CSSRule subRule = ruleList.item(i); this.addRule(styleSheet, subRule); } } } }