/** * Determines whether the IStructuredDocumentRegion is a XML "start tag" * since they need to be checked for proper XML attribute region sequences * * @param structuredDocumentRegion * */ private boolean isStartTag(IStructuredDocumentRegion structuredDocumentRegion) { if ((structuredDocumentRegion == null) || structuredDocumentRegion.isDeleted()) { return false; } return structuredDocumentRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN; }
/** * Determines if the IStructuredDocumentRegion is XML Content * * @param structuredDocumentRegion * */ private boolean isXMLContent(IStructuredDocumentRegion structuredDocumentRegion) { if ((structuredDocumentRegion == null) || structuredDocumentRegion.isDeleted()) { return false; } return structuredDocumentRegion.getFirstRegion().getType() == DOMRegionContext.XML_CONTENT; }
/** * Determines whether the IStructuredDocumentRegion is a XML "end tag" * since they're not allowed to have attribute ITextRegions * * @param structuredDocumentRegion */ private boolean isEndTag(IStructuredDocumentRegion structuredDocumentRegion) { if ((structuredDocumentRegion == null) || structuredDocumentRegion.isDeleted()) { return false; } return structuredDocumentRegion.getFirstRegion().getType() == DOMRegionContext.XML_END_TAG_OPEN; }
/** * Determines if the IStructuredDocumentRegion is an XML Processing * Instruction * * @param structuredDocumentRegion * */ private boolean isPI(IStructuredDocumentRegion structuredDocumentRegion) { if ((structuredDocumentRegion == null) || structuredDocumentRegion.isDeleted()) { return false; } return structuredDocumentRegion.getFirstRegion().getType() == DOMRegionContext.XML_PI_OPEN; }
protected void handleTaglib() { // get/create TLDCMDocument TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(fStructuredDocument); if (mgr != null) { List trackers = mgr.getCMDocumentTrackers(getCurrentNode().getEnd()); Iterator it = trackers.iterator(); CMDocumentTracker tracker = null; Iterator taglibRegions = null; IStructuredDocumentRegion sdRegion = null; ITextRegion r = null; while (it.hasNext()) { tracker = (CMDocumentTracker) it.next(); sdRegion = tracker.getStructuredDocumentRegion(); // since may be call from another thread (like a background // job) // this check is to be safer if (sdRegion != null && !sdRegion.isDeleted()) { taglibRegions = sdRegion.getRegions().iterator(); while (sdRegion != null && !sdRegion.isDeleted() && taglibRegions.hasNext()) { r = (ITextRegion) taglibRegions.next(); if (r.getType().equals(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)) { if (sdRegion.getText(r).equals(JSP12TLDNames.TAGLIB)) { addBlockMarkers(tracker.getDocument()); } } } } } } }
private void checkForSpaceBeforeName(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; } String sdRegionText = structuredDocumentRegion.getFullText(); if (sdRegionText.startsWith(" ")) { //$NON-NLS-1$ IStructuredDocumentRegion prev = structuredDocumentRegion.getPrevious(); if (prev != null) { // this is possibly the case of "< tag" if ((prev.getRegions().size() == 1) && isStartTag(prev)) { // add the error for preceding space in tag name String messageText = XMLUIMessages.ReconcileStepForMarkup_2; int start = structuredDocumentRegion.getStartOffset(); // find length of whitespace int length = sdRegionText.trim().equals("") ? sdRegionText.length() : sdRegionText.indexOf(sdRegionText.trim()); //$NON-NLS-1$ LocalizedMessage message = new LocalizedMessage(IMessage.HIGH_SEVERITY, messageText); message.setOffset(start); message.setLength(length); message.setLineNo(getLineNumber(start)); MarkupQuickAssistProcessor processor = new MarkupQuickAssistProcessor(); processor.setProblemId(ProblemIDsXML.SpacesBeforeTagName); message.setAttribute(QUICKASSISTPROCESSOR, processor); AnnotationInfo info = new AnnotationInfo(message); ((IncrementalReporter) reporter).addAnnotationInfo(this, info); } } } }
private void checkNoNamespaceInPI(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; ITextRegion r = null; int errorCount = 0; for (int i = 0; (i < regions.size()) && (errorCount < AbstractStructuredTextReconcilingStrategy.ELEMENT_ERROR_LIMIT) && !structuredDocumentRegion.isDeleted(); i++) { r = regions.get(i); if (r.getType() == DOMRegionContext.XML_TAG_NAME) {
private void checkClosingBracket(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; } ITextRegionList regions = structuredDocumentRegion.getRegions(); ITextRegion r = null; boolean closed = false; for (int i = 0; (i < regions.size()) && !structuredDocumentRegion.isDeleted(); i++) { r = regions.get(i); if ((r.getType() == DOMRegionContext.XML_TAG_CLOSE) || (r.getType() == DOMRegionContext.XML_EMPTY_TAG_CLOSE)) { closed = true; } } if (!closed) { String messageText = XMLUIMessages.ReconcileStepForMarkup_6; int start = structuredDocumentRegion.getStartOffset(); int length = structuredDocumentRegion.getText().trim().length(); int lineNo = getLineNumber(start); LocalizedMessage message = new LocalizedMessage(IMessage.HIGH_SEVERITY, messageText); message.setOffset(start); message.setLength(length); message.setLineNo(lineNo); MarkupQuickAssistProcessor processor = new MarkupQuickAssistProcessor(); processor.setProblemId(ProblemIDsXML.MissingClosingBracket); message.setAttribute(QUICKASSISTPROCESSOR, processor); AnnotationInfo info = new AnnotationInfo(message); ((IncrementalReporter) reporter).addAnnotationInfo(this, info); } }
private void checkStartingSpaceForPI(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; if ((prev != null) && !prev.isDeleted()) { String prevText = prev.getFullText(); if ((prev.getType() == DOMRegionContext.XML_CONTENT) && prevText.endsWith(" ")) { //$NON-NLS-1$
private void addAttributeError(String messageText, String attributeValueText, int start, int length, int problemId, IStructuredDocumentRegion sdRegion, IReporter reporter) { if (sdRegion.isDeleted()) { return; } int lineNo = getLineNumber(start); LocalizedMessage message = new LocalizedMessage(IMessage.HIGH_SEVERITY, messageText); message.setOffset(start); message.setLength(length); message.setLineNo(lineNo); MarkupQuickAssistProcessor processor = new MarkupQuickAssistProcessor(); processor.setProblemId(problemId); processor.setAdditionalFixInfo(attributeValueText); message.setAttribute(QUICKASSISTPROCESSOR, processor); AnnotationInfo info = new AnnotationInfo(message); ((IncrementalReporter) reporter).addAnnotationInfo(this, info); }
private void checkAttributesInEndTag(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; int start = structuredDocumentRegion.getEndOffset(); int end = structuredDocumentRegion.getEndOffset(); for (int i = 0; (i < textRegions.size()) && (errorCount < AbstractStructuredTextReconcilingStrategy.ELEMENT_ERROR_LIMIT) && !structuredDocumentRegion.isDeleted(); i++) { ITextRegion textRegion = textRegions.get(i); if ((textRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) || (textRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS) || (textRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)) {
private void checkForAttributeValue(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return;
private void checkEmptyTag(IStructuredDocumentRegion structuredDocumentRegion, IReporter reporter) { if (structuredDocumentRegion.isDeleted()) { return; } // navigate to name ITextRegionList regions = structuredDocumentRegion.getRegions(); if (regions.size() == 2) { // missing name region if ((regions.get(0).getType() == DOMRegionContext.XML_TAG_OPEN) && (regions.get(1).getType() == DOMRegionContext.XML_TAG_CLOSE)) { String messageText = XMLUIMessages.ReconcileStepForMarkup_3; int start = structuredDocumentRegion.getStartOffset(); int length = structuredDocumentRegion.getLength(); int lineNo = getLineNumber(start); LocalizedMessage message = new LocalizedMessage(IMessage.HIGH_SEVERITY, messageText); message.setOffset(start); message.setLength(length); message.setLineNo(lineNo); MarkupQuickAssistProcessor processor = new MarkupQuickAssistProcessor(); processor.setProblemId(ProblemIDsXML.EmptyTag); message.setAttribute(QUICKASSISTPROCESSOR, processor); AnnotationInfo info = new AnnotationInfo(message); ((IncrementalReporter) reporter).addAnnotationInfo(this, info); } } }