Search in sources :

Example 21 with ICSSSelectorList

use of org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList in project webtools.sourceediting by eclipse.

the class CSSSelectorTest method testSelector30.

public void testSelector30() {
    ICSSSelectorList list = createSelectorList("H1.123");
    checkSelectorList(list, "H1.123", 1, 1);
    ICSSSelector selector;
    ICSSSelectorItem item;
    selector = list.getSelector(0);
    checkSelector(selector, "H1.123", 1, 101, 1);
    item = selector.getItem(0);
    checkSimpleSelector(item, "H1", false, 0, 1, 0, 0);
    checkSimpleSelectorClasses(item, new String[] { "123" });
}
Also used : ICSSSelectorList(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList) ICSSSelector(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector) ICSSSelectorItem(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorItem)

Example 22 with ICSSSelectorList

use of org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList in project webtools.sourceediting by eclipse.

the class CSSSelectorTest method testSelector05.

public void testSelector05() {
    ICSSSelectorList list = createSelectorList("*.warning");
    checkSelectorList(list, "*.warning", 1, 0);
    ICSSSelector selector;
    ICSSSelectorItem item;
    selector = list.getSelector(0);
    checkSelector(selector, "*.warning", 1, 100, 0);
    item = selector.getItem(0);
    checkSimpleSelector(item, "*", true, 0, 1, 0, 0);
    checkSimpleSelectorClasses(item, new String[] { "warning" });
}
Also used : ICSSSelectorList(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList) ICSSSelector(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector) ICSSSelectorItem(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorItem)

Example 23 with ICSSSelectorList

use of org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList in project webtools.sourceediting by eclipse.

the class CSSQueryTraverser method preNode.

/**
 */
protected short preNode(ICSSNode node) {
    if (node instanceof ICSSStyleRule) {
        // style rule
        ICSSStyleRule style = (ICSSStyleRule) node;
        ICSSSelectorList list = style.getSelectors();
        int nSelectors = list.getLength();
        int maxSpecificity = -1;
        for (int iSelector = 0; iSelector < nSelectors; iSelector++) {
            // Check each Selector Lists
            ICSSSelector selector = list.getSelector(iSelector);
            int specificity = selector.getSpecificity();
            if (maxSpecificity < specificity && selector.match(element, pseudoName)) {
                maxSpecificity = specificity;
            }
        }
        if (maxSpecificity >= 0) {
            // apply this style to the element
            overwriteDeclaration((ICSSStyleDeclaration) style.getStyle(), maxSpecificity);
        }
        return TRAV_PRUNE;
    }
    return TRAV_CONT;
}
Also used : ICSSSelectorList(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList) ICSSSelector(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector) ICSSStyleRule(org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleRule)

Example 24 with ICSSSelectorList

use of org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList in project webtools.sourceediting by eclipse.

the class CSSModelImpl method valueChanged.

void valueChanged(CSSNodeImpl node, String oldValue) {
    if (!fStructuredDocumentUpdate) {
        CSSModelUpdater updater = getUpdater();
        updater.valueChanged(node, oldValue);
    }
    ICSSSelector[] removed = null, added = null;
    if (node != null) {
        if (node.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) node).getName().equals(ICSSStyleRule.SELECTOR)) {
            CSSAttrImpl attr = (CSSAttrImpl) node;
            // collect changed selector
            ICSSSelectorList list = new CSSSelectorListImpl(attr.getValue());
            added = new ICSSSelector[list.getLength()];
            for (int i = 0; i < list.getLength(); i++) added[i] = list.getSelector(i);
            // get old value
            list = new CSSSelectorListImpl(oldValue);
            removed = new ICSSSelector[list.getLength()];
            for (int i = 0; i < list.getLength(); i++) removed[i] = list.getSelector(i);
        } else if (node instanceof ICSSValue) {
            ICSSNode rule = node;
            while (rule != null) {
                if (rule instanceof ICSSStyleRule)
                    break;
                rule = rule.getParentNode();
            }
            if (rule != null) {
                ICSSSelectorList list = ((ICSSStyleRule) rule).getSelectors();
                added = new ICSSSelector[list.getLength()];
                for (int i = 0; i < list.getLength(); i++) added[i] = list.getSelector(i);
            }
        }
    }
    if (removed != null || added != null || getDocument().getNodeType() == ICSSNode.STYLEDECLARATION_NODE) {
        // send selector changed event
        getStyleNotifier().fire(removed, added, null);
    }
    // for href attribute
    if (getStyleListeners() != null && getStyleListeners().size() > 0) {
        if (node != null && node.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) node).getName().equals(ICSSImportRule.HREF)) {
            ((ICSSImportRule) ((ICSSAttr) node).getOwnerCSSNode()).getStyleSheet();
        }
    }
}
Also used : ICSSValue(org.eclipse.wst.css.core.internal.provisional.document.ICSSValue) ICSSSelectorList(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList) ICSSSelector(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector) ICSSNode(org.eclipse.wst.css.core.internal.provisional.document.ICSSNode) ICSSImportRule(org.eclipse.wst.css.core.internal.provisional.document.ICSSImportRule) ICSSStyleRule(org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleRule)

Example 25 with ICSSSelectorList

use of org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList in project webtools.sourceediting by eclipse.

the class CSSModelImpl method attrReplaced.

void attrReplaced(CSSNodeImpl parentNode, CSSNodeImpl newAttr, CSSNodeImpl oldAttr) {
    if (!fStructuredDocumentUpdate) {
        CSSModelUpdater updater = getUpdater();
        updater.attrReplaced(parentNode, newAttr, oldAttr);
    }
    ICSSSelector[] removed = null, added = null;
    if (oldAttr != null && oldAttr.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) oldAttr).getName().equals(ICSSStyleRule.SELECTOR)) {
        CSSAttrImpl attr = (CSSAttrImpl) oldAttr;
        // collect changed selector
        ICSSSelectorList list = new CSSSelectorListImpl(attr.getValue());
        removed = new ICSSSelector[list.getLength()];
        for (int i = 0; i < list.getLength(); i++) removed[i] = list.getSelector(i);
    }
    if (newAttr != null && newAttr.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) newAttr).getName().equals(ICSSStyleRule.SELECTOR)) {
        CSSAttrImpl attr = (CSSAttrImpl) newAttr;
        // collect changed selector
        ICSSSelectorList list = new CSSSelectorListImpl(attr.getValue());
        added = new ICSSSelector[list.getLength()];
        for (int i = 0; i < list.getLength(); i++) added[i] = list.getSelector(i);
    }
    if (removed != null || added != null || getDocument().getNodeType() == ICSSNode.STYLEDECLARATION_NODE) {
        getStyleNotifier().fire(removed, added, null);
    }
    // for href attribute
    if (getStyleListeners() != null && getStyleListeners().size() > 0) {
        boolean update = false;
        if (oldAttr != null && oldAttr.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) oldAttr).getName().equals(ICSSImportRule.HREF)) {
            update = true;
        }
        if (newAttr != null && newAttr.getNodeType() == ICSSNode.ATTR_NODE && ((CSSAttrImpl) newAttr).getName().equals(ICSSImportRule.HREF)) {
            update = true;
        }
        if (update)
            ((ICSSImportRule) parentNode).getStyleSheet();
    }
}
Also used : ICSSSelectorList(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList) ICSSSelector(org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector)

Aggregations

ICSSSelectorList (org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorList)47 ICSSSelector (org.eclipse.wst.css.core.internal.provisional.document.ICSSSelector)46 ICSSSelectorItem (org.eclipse.wst.css.core.internal.provisional.document.ICSSSelectorItem)41 Iterator (java.util.Iterator)4 ICSSStyleRule (org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleRule)4 ICSSNode (org.eclipse.wst.css.core.internal.provisional.document.ICSSNode)2 ICSSImportRule (org.eclipse.wst.css.core.internal.provisional.document.ICSSImportRule)1 ICSSSimpleSelector (org.eclipse.wst.css.core.internal.provisional.document.ICSSSimpleSelector)1 ICSSValue (org.eclipse.wst.css.core.internal.provisional.document.ICSSValue)1 ImportRuleCollector (org.eclipse.wst.css.core.internal.util.ImportRuleCollector)1 ImportedCollector (org.eclipse.wst.css.core.internal.util.ImportedCollector)1 SelectorsCollector (org.eclipse.wst.css.core.internal.util.SelectorsCollector)1