private boolean isParentStyleTag(Node node) { if (node == null) return false; if (node.getNodeType() != Node.TEXT_NODE) return false; if (!(node instanceof IDOMNode)) return false; IStructuredDocumentRegion flatNode = ((IDOMNode) node).getFirstStructuredDocumentRegion(); if (flatNode == null) return false; if (flatNode.getType() != DOMRegionContext.BLOCK_TEXT) return false; // check if the parent is STYLE element Node parent = node.getParentNode(); if (parent == null) return false; if (parent.getNodeType() != Node.ELEMENT_NODE) return false; String name = parent.getNodeName(); if (name == null) return false; if (!name.equalsIgnoreCase("STYLE"))//$NON-NLS-1$ return false; return true; }
protected boolean firstStructuredDocumentRegionContainsLineDelimiters(IDOMNode node) { boolean result = false; if (node != null) { IStructuredDocumentRegion firstStructuredDocumentRegion = node.getFirstStructuredDocumentRegion(); if (firstStructuredDocumentRegion != null) { String firstStructuredDocumentRegionText = firstStructuredDocumentRegion.getText(); result = StringUtils.containsLineDelimiter(firstStructuredDocumentRegionText); } } return result; }
IStructuredDocumentRegion flatNode = ((IDOMNode) node).getFirstStructuredDocumentRegion();
IStructuredDocumentRegion flatNode = ((IDOMNode) node).getFirstStructuredDocumentRegion();
protected String getNodeText(IDOMNode node) { String text = null; if ((node instanceof CharacterDataImpl) && !(node instanceof CommentImpl) && !(node instanceof CDATASectionImpl) && !isJSPTag(node)) text = ((CharacterDataImpl) node).getSource(); else text = node.getFirstStructuredDocumentRegion().getText(); return text; }
protected String getUndefinedRegions(IDOMNode node, int startOffset, int length) { String result = new String(); IStructuredDocumentRegion flatNode = node.getFirstStructuredDocumentRegion(); ITextRegionList regions = flatNode.getRegions(); for (int i = 0; i < regions.size(); i++) { ITextRegion region = regions.get(i); String regionType = region.getType(); int regionStartOffset = flatNode.getStartOffset(region); if (regionType.compareTo(DOMRegionContext.UNDEFINED) == 0 && regionStartOffset >= startOffset && regionStartOffset < startOffset + length) result = result + flatNode.getFullText(region); } if (result.length() > 0) return SPACE_CHAR + result.trim(); else return result; } }
private Object[] getStartEndFixInfo(IDOMNode xmlNode, String tagName, ITextRegion r) { // quick fix info String tagClose = "/>"; //$NON-NLS-1$ int tagCloseOffset = xmlNode.getFirstStructuredDocumentRegion().getEndOffset(); if ((r != null) && (r.getType() == DOMRegionContext.XML_TAG_CLOSE)) { tagClose = "/"; //$NON-NLS-1$ tagCloseOffset--; } IDOMNode firstChild = (IDOMNode) xmlNode.getFirstChild(); while ((firstChild != null) && (firstChild.getNodeType() == Node.TEXT_NODE)) { firstChild = (IDOMNode) firstChild.getNextSibling(); } int endOffset = xmlNode.getEndOffset(); int firstChildStartOffset = firstChild == null ? endOffset : firstChild.getStartOffset(); Object[] additionalFixInfo = {tagName, tagClose, new Integer(tagCloseOffset), new Integer(xmlNode.getFirstStructuredDocumentRegion().getEndOffset()), // startTagEndOffset new Integer(firstChildStartOffset), // firstChildStartOffset new Integer(endOffset)}; // endOffset return additionalFixInfo; }
/** * Find the region of the attribute name for the given attribute value * region * */ protected ITextRegion getAttrNameRegion(IDOMNode node, ITextRegion region) { // Find the attribute name for which this position should have a value IStructuredDocumentRegion open = node.getFirstStructuredDocumentRegion(); ITextRegionList openRegions = open.getRegions(); int i = openRegions.indexOf(region); if (i < 0) { return null; } ITextRegion nameRegion = null; while (i >= 0) { nameRegion = openRegions.get(i--); if (nameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) { break; } } return nameRegion; }
private IDOMNode compressEmptyElementTag(IDOMNode node) { boolean compressEmptyElementTags = getCleanupPreferences().getCompressEmptyElementTags(); IDOMNode newNode = node; IStructuredDocumentRegion startTagStructuredDocumentRegion = newNode.getFirstStructuredDocumentRegion(); IStructuredDocumentRegion endTagStructuredDocumentRegion = newNode.getLastStructuredDocumentRegion(); if (compressEmptyElementTags && startTagStructuredDocumentRegion != endTagStructuredDocumentRegion && startTagStructuredDocumentRegion != null) { ITextRegionList regions = startTagStructuredDocumentRegion.getRegions(); ITextRegion lastRegion = regions.get(regions.size() - 1); // format children and end tag if not empty element tag if (lastRegion.getType() != DOMRegionContext.XML_EMPTY_TAG_CLOSE) { NodeList childNodes = newNode.getChildNodes(); if (childNodes == null || childNodes.getLength() == 0 || (childNodes.getLength() == 1 && (childNodes.item(0)).getNodeType() == Node.TEXT_NODE && ((childNodes.item(0)).getNodeValue().trim().length() == 0))) { IDOMModel structuredModel = newNode.getModel(); IStructuredDocument structuredDocument = structuredModel.getStructuredDocument(); int startTagStartOffset = newNode.getStartOffset(); int offset = endTagStructuredDocumentRegion.getStart(); int length = endTagStructuredDocumentRegion.getLength(); structuredDocument.replaceText(structuredDocument, offset, length, ""); //$NON-NLS-1$ newNode = (IDOMNode) structuredModel.getIndexedRegion(startTagStartOffset); // save offset = startTagStructuredDocumentRegion.getStart() + lastRegion.getStart(); structuredDocument.replaceText(structuredDocument, offset, 0, "/"); //$NON-NLS-1$ newNode = (IDOMNode) structuredModel.getIndexedRegion(startTagStartOffset); // save } } } return newNode; }
protected ContentAssistRequest computeAttributeProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { ContentAssistRequest contentAssistRequest = null; IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition); if (documentPosition < sdRegion.getStartOffset(completionRegion)) { // setup to insert new attributes contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, documentPosition, 0, matchString); } else { // Setup to replace an existing attribute name contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, sdRegion.getStartOffset(completionRegion), completionRegion.getTextLength(), matchString); } addAttributeNameProposals(contentAssistRequest); contentAssistRequest.setReplacementBeginPosition(documentPosition); contentAssistRequest.setReplacementLength(0); if ((node.getFirstStructuredDocumentRegion() != null) && (!node.getFirstStructuredDocumentRegion().isEnded())) { addTagCloseProposals(contentAssistRequest); } return contentAssistRequest; }
IStructuredDocumentRegion structuredDocumentRegionElement = element.getFirstStructuredDocumentRegion();
IStructuredDocumentRegion sdRegion = xmlNode.getFirstStructuredDocumentRegion(); ITextRegionList regions = sdRegion.getRegions(); ITextRegion r = null;
protected ContentAssistRequest computeAttributeValueProposals(int documentPosition, String matchString, ITextRegion completionRegion, IDOMNode nodeAtOffset, IDOMNode node) { ContentAssistRequest contentAssistRequest = null; IStructuredDocumentRegion sdRegion = getStructuredDocumentRegion(documentPosition); if ((documentPosition > sdRegion.getStartOffset(completionRegion) + completionRegion.getTextLength()) && (sdRegion.getStartOffset(completionRegion) + completionRegion.getTextLength() != sdRegion.getStartOffset(completionRegion) + completionRegion.getLength())) { // setup to add a new attribute at the documentPosition IDOMNode actualNode = (IDOMNode) node.getModel().getIndexedRegion(sdRegion.getStartOffset(completionRegion)); contentAssistRequest = newContentAssistRequest(actualNode, actualNode, sdRegion, completionRegion, documentPosition, 0, matchString); addAttributeNameProposals(contentAssistRequest); if ((actualNode.getFirstStructuredDocumentRegion() != null) && !actualNode.getFirstStructuredDocumentRegion().isEnded()) { addTagCloseProposals(contentAssistRequest); } } else { // setup to replace the existing value if (!nodeAtOffset.getFirstStructuredDocumentRegion().isEnded() && (documentPosition < sdRegion.getStartOffset(completionRegion))) { // if the IStructuredDocumentRegion isn't closed and the // cursor is in front of the value, add contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, documentPosition, 0, matchString); addAttributeNameProposals(contentAssistRequest); } else { contentAssistRequest = newContentAssistRequest(nodeAtOffset, node, sdRegion, completionRegion, sdRegion.getStartOffset(completionRegion), completionRegion.getTextLength(), matchString); addAttributeValueProposals(contentAssistRequest); } } return contentAssistRequest; }
if (nodeAtOffset.getFirstStructuredDocumentRegion() == sdRegion) {
protected boolean isEndTagMissing(IDOMNode node) { boolean result = false; if ((node != null) && (node.getNodeType() != Node.DOCUMENT_NODE) && !isJSPTag(node)) { IStructuredDocumentRegion startTagStructuredDocumentRegion = node.getFirstStructuredDocumentRegion(); IStructuredDocumentRegion endTagStructuredDocumentRegion = node.getLastStructuredDocumentRegion(); ITextRegion startTagNameRegion = null; if (startTagStructuredDocumentRegion.getRegions().size() > 1) startTagNameRegion = startTagStructuredDocumentRegion.getRegions().get(1); ITextRegion endTagNameRegion = null; if (endTagStructuredDocumentRegion.getRegions().size() > 1) endTagNameRegion = endTagStructuredDocumentRegion.getRegions().get(1); ITextRegionList startTagRegions = startTagStructuredDocumentRegion.getRegions(); if (startTagNameRegion == endTagNameRegion && startTagNameRegion != null && (startTagRegions.get(0)).getType() != DOMRegionContext.XML_END_TAG_OPEN && (startTagRegions.get(startTagRegions.size() - 1).getType()) != DOMRegionContext.XML_EMPTY_TAG_CLOSE) // end tag missing result = true; } return result; }
IStructuredDocumentRegion flatNode = newNode.getFirstStructuredDocumentRegion(); if (flatNode != null) { ITextRegionList regions = flatNode.getRegions();
switch (segType) { case SEG_WHOLE_TAG : startTag = target.getFirstStructuredDocumentRegion(); if (startTag != null) { endTag = target.getLastStructuredDocumentRegion();
addTagCloseProposals(contentAssistRequest); if (sdRegion == nodeAtOffset.getFirstStructuredDocumentRegion()) { contentAssistRequest.setReplacementBeginPosition(documentPosition); contentAssistRequest.setReplacementLength(0);
if ((elementDeclaration == null) || (elementDeclaration.getContentType() != CMElementDeclaration.EMPTY)) { replace(structuredDocument, node.getFirstStructuredDocumentRegion().getEndOffset(), 0, lineDelimiter + nodeIndentation);