private void addImportant(List candidates) { ICSSNode targetNode = fContext.getTargetNode(); while (targetNode instanceof ICSSPrimitiveValue) { targetNode = targetNode.getParentNode(); } if (!(targetNode instanceof ICSSStyleDeclItem)) { return; } // 1. has no priority region // 2. cursor position is after of last child // 3. normal isMatch method String priority = ((ICSSStyleDeclItem) targetNode).getPriority(); if (priority == null || priority.length() == 0) { ICSSNode lastChild = targetNode.getLastChild(); if (lastChild instanceof IndexedRegion) { int startOffset = ((IndexedRegion) lastChild).getStartOffset(); // int endOffset = ((IndexedRegion)lastChild).getEndOffset(); if (startOffset < fContext.getCursorPos() && isMatch(IMPORTANT)) { CSSCACandidate item = new CSSCACandidate(); item.setReplacementString(IMPORTANT); item.setCursorPosition(IMPORTANT.length()); item.setDisplayString(IMPORTANT); item.setImageType(CSSImageType.VALUE_STRING); appendSemiColon(item); candidates.add(item); } } } }
/** * @return java.lang.StringBuffer * @param node org.eclipse.wst.css.core.model.interfaces.ICSSNode * @param region org.eclipse.jface.text.IRegion */ protected final StringBuffer formatProc(ICSSNode node, IRegion region) { StringBuffer source = new StringBuffer(); int curStart = ((IndexedRegion) node).getStartOffset(); int curEnd = ((IndexedRegion) node).getEndOffset(); if (node.getChildNodes().getLength() > 0) { curEnd = ((IndexedRegion) node.getFirstChild()).getStartOffset(); if (overlaps(region, curStart, curEnd)) { if (includes(region, curStart, curEnd)) formatPre(node, source); else formatPre(node, overlappedRegion(region, curStart, curEnd), source); } curStart = curEnd; curEnd = ((IndexedRegion) node.getLastChild()).getEndOffset(); if (overlaps(region, curStart, curEnd)) { if (includes(region, curStart, curEnd)) formatChildren(node, source); else formatChildren(node, overlappedRegion(region, curStart, curEnd), source); } curStart = curEnd; curEnd = ((IndexedRegion) node).getEndOffset(); if (overlaps(region, curStart, curEnd)) { if (includes(region, curStart, curEnd)) formatPost(node, source); else formatPost(node, overlappedRegion(region, curStart, curEnd), source); } } else { curEnd = getChildInsertPos(node); if (overlaps(region, curStart, curEnd)) { if (includes(region, curStart, curEnd)) formatPre(node, source); else formatPre(node, overlappedRegion(region, curStart, curEnd), source); } curStart = curEnd; curEnd = ((IndexedRegion) node).getEndOffset(); if (overlaps(region, curStart, curEnd)) { if (includes(region, curStart, curEnd)) formatPost(node, source); else formatPost(node, overlappedRegion(region, curStart, curEnd), source); } } return source; }