Search in sources :

Example 6 with ITextRegionList

use of org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList in project webtools.sourceediting by eclipse.

the class CSSModelParser method insertMediaRule.

/**
 */
private CSSNodeImpl insertMediaRule(IStructuredDocumentRegion flatNode, IStructuredDocumentRegion braceNode) {
    CSSNodeImpl parent = fCreationContext.getTargetNode();
    if (!fParseFloating && !(parent instanceof ICSSRuleContainer)) {
        return null;
    }
    CSSMediaRuleImpl rule = fFeeder.getCSSMediaRule();
    if (rule == null) {
        return null;
    }
    ITextRegionList regions = new TextRegionListImpl(flatNode.getRegions());
    // must be "@media"
    regions.remove(0);
    CSSUtil.stripSurroundingSpace(regions);
    MediaListImpl mediaList = (MediaListImpl) rule.getMedia();
    setMediaList(mediaList, flatNode, regions);
    // setup flat container
    rule.setRangeStructuredDocumentRegion(flatNode, braceNode);
    // insert to tree
    if (!fUpdateContext.isActive() && parent != null) {
        propagateRangePreInsert(parent, rule);
        CSSNodeImpl next = fCreationContext.getNextNode();
        if (next != null) {
            parent.insertBefore(rule, next);
        } else {
            parent.appendChild(rule);
        }
    }
    fCreationContext.setTargetNode(rule);
    return rule;
}
Also used : ICSSRuleContainer(org.eclipse.wst.css.core.internal.provisional.document.ICSSRuleContainer) ITextRegionList(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList) TextRegionListImpl(org.eclipse.wst.sse.core.internal.text.TextRegionListImpl)

Example 7 with ITextRegionList

use of org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList in project webtools.sourceediting by eclipse.

the class CSSRegionContainer method getRegionCount.

/**
 * @return int
 */
int getRegionCount() {
    validateRange();
    if (getFirstRegion() == null)
        return 0;
    if (getFirstRegion() == getLastRegion())
        return 1;
    ITextRegionList regions = fParentRegion.getRegions();
    int j = 0;
    for (int i = 0; i < regions.size(); i++) {
        ITextRegion current = regions.get(i);
        if (j != 0 || current == getFirstRegion())
            j++;
        if (current == getLastRegion())
            break;
    }
    return j;
}
Also used : ITextRegionList(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList) ITextRegion(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion)

Example 8 with ITextRegionList

use of org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList in project webtools.sourceediting by eclipse.

the class CSSRegionContainer method getCssText.

/**
 * @return java.lang.String
 */
public String getCssText() {
    if (fFirstRegion == null || fLastRegion == null)
        return generateSource();
    ITextRegionList regions = fParentRegion.getRegions();
    StringBuffer source = new StringBuffer();
    boolean bIn = false;
    for (int i = 0; i < regions.size(); i++) {
        ITextRegion current = regions.get(i);
        if (bIn) {
            source.append(fParentRegion.getFullText(current));
            if (current == fLastRegion)
                break;
        } else {
            if (current == fFirstRegion) {
                bIn = true;
                source.append(fParentRegion.getFullText(current));
                if (current == fLastRegion)
                    break;
            }
        }
    }
    return source.toString();
}
Also used : ITextRegionList(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList) ITextRegion(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion)

Example 9 with ITextRegionList

use of org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList in project webtools.sourceediting by eclipse.

the class AbstractCSSSourceFormatter method getRegions.

/**
 */
protected CompoundRegion[] getRegions(IStructuredDocument model, IRegion reg, IRegion exceptFor, String pickupType) {
    int start = reg.getOffset();
    int end = reg.getOffset() + reg.getLength();
    int startE = (exceptFor != null) ? exceptFor.getOffset() : -1;
    int endE = (exceptFor != null) ? exceptFor.getOffset() + exceptFor.getLength() : 0;
    ArrayList list = new ArrayList();
    IStructuredDocumentRegion flatNode = model.getRegionAtCharacterOffset(start);
    boolean pickuped = false;
    while (flatNode != null && flatNode.getStartOffset() < end) {
        ITextRegionList regionList = flatNode.getRegions();
        Iterator it = regionList.iterator();
        while (it.hasNext()) {
            ITextRegion region = (ITextRegion) it.next();
            if (flatNode.getStartOffset(region) < start)
                continue;
            if (end <= flatNode.getStartOffset(region))
                break;
            if (startE >= 0 && startE <= flatNode.getStartOffset(region) && flatNode.getEndOffset(region) <= endE)
                continue;
            if (region.getType() == CSSRegionContexts.CSS_COMMENT || region.getType() == CSSRegionContexts.CSS_CDC || region.getType() == CSSRegionContexts.CSS_CDO)
                list.add(new CompoundRegion(flatNode, region));
            else if (!pickuped && region.getType() == pickupType) {
                list.add(new CompoundRegion(flatNode, region));
                pickuped = true;
            }
        }
        flatNode = flatNode.getNext();
    }
    if (list.size() > 0) {
        CompoundRegion[] regions = new CompoundRegion[list.size()];
        list.toArray(regions);
        return regions;
    }
    return new CompoundRegion[0];
}
Also used : ITextRegionList(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList) IStructuredDocumentRegion(org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion) ITextRegion(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion) ArrayList(java.util.ArrayList) RegionIterator(org.eclipse.wst.css.core.internal.util.RegionIterator) Iterator(java.util.Iterator)

Example 10 with ITextRegionList

use of org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList in project webtools.sourceediting by eclipse.

the class AbstractCSSSourceFormatter method getRegionsWithoutWhiteSpaces.

/**
 */
protected CompoundRegion[] getRegionsWithoutWhiteSpaces(IStructuredDocument model, IRegion reg, CSSCleanupStrategy stgy) {
    int start = reg.getOffset();
    int end = reg.getOffset() + reg.getLength() - 1;
    ArrayList list = new ArrayList();
    IStructuredDocumentRegion flatNode = model.getRegionAtCharacterOffset(start);
    while (flatNode != null && flatNode.getStartOffset() <= end) {
        ITextRegionList regionList = flatNode.getRegions();
        Iterator it = regionList.iterator();
        while (it.hasNext()) {
            ITextRegion region = (ITextRegion) it.next();
            if (flatNode.getStartOffset(region) < start)
                continue;
            if (end < flatNode.getStartOffset(region))
                break;
            if (// for
            region.getType() != CSSRegionContexts.CSS_S || (isCleanup() && !stgy.isFormatSource()))
                // not
                // formatting
                // case
                // on
                // cleanup
                // action
                list.add(new CompoundRegion(flatNode, region));
        }
        flatNode = flatNode.getNext();
    }
    if (list.size() > 0) {
        CompoundRegion[] regions = new CompoundRegion[list.size()];
        list.toArray(regions);
        return regions;
    }
    return new CompoundRegion[0];
}
Also used : ITextRegionList(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList) IStructuredDocumentRegion(org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion) ITextRegion(org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion) ArrayList(java.util.ArrayList) RegionIterator(org.eclipse.wst.css.core.internal.util.RegionIterator) Iterator(java.util.Iterator)

Aggregations

ITextRegionList (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList)193 ITextRegion (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion)171 IStructuredDocumentRegion (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion)74 Iterator (java.util.Iterator)46 IDOMNode (org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode)27 ITextRegionContainer (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer)24 ArrayList (java.util.ArrayList)21 List (java.util.List)18 IStructuredDocument (org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument)16 StyleRange (org.eclipse.swt.custom.StyleRange)13 TextAttribute (org.eclipse.jface.text.TextAttribute)12 LocalizedMessage (org.eclipse.wst.validation.internal.operations.LocalizedMessage)12 TextRegionListImpl (org.eclipse.wst.sse.core.internal.text.TextRegionListImpl)10 IDOMModel (org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel)9 IExtensionPoint (org.eclipse.core.runtime.IExtensionPoint)8 CustomCompletionProposal (org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal)8 DOMException (org.w3c.dom.DOMException)8 BadLocationException (org.eclipse.jface.text.BadLocationException)7 IndexedRegion (org.eclipse.wst.sse.core.internal.provisional.IndexedRegion)7 ITextRegionCollection (org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection)7