public Object getAdapter(Class adapter) { if (Document.class.equals(adapter)) return getDocument(); return super.getAdapter(adapter); }
private ModelParserAdapter getParserAdapter() { return (ModelParserAdapter) this.model.getDocument().getAdapterFor(ModelParserAdapter.class); }
/** * This routine create an implicit Element for given parent and child, * such as HTML, BODY, HEAD, and TBODY for HTML document. */ protected Element createImplicitElement(Node parent, Node child) { ModelParserAdapter adapter = getParserAdapter(); if (adapter != null) { return adapter.createImplicitElement(this.model.getDocument(), parent, child); } return null; }
/** * replaceRegions method * * @param newRegions * java.util.Vector * @param oldRegions * java.util.Vector */ void replaceRegions(IStructuredDocumentRegion flatNode, ITextRegionList newRegions, ITextRegionList oldRegions) { if (flatNode == null) return; if (this.model.getDocument() == null) return; this.context = new XMLModelContext(this.model.getDocument()); // optimize typical cases String regionType = StructuredDocumentRegionUtil.getFirstRegionType(flatNode); if (regionType == DOMRegionContext.XML_TAG_OPEN) { changeStartTag(flatNode, newRegions, oldRegions); } else if (regionType == DOMRegionContext.XML_END_TAG_OPEN) { changeEndTag(flatNode, newRegions, oldRegions); } else { changeStructuredDocumentRegion(flatNode); } }
/** * This routine create an Element from comment data for comment style * elements, such as SSI and METADATA */ protected Element createCommentElement(String data, boolean isJSPTag) { String trimmedData = data.trim(); CommentElementConfiguration[] configs = CommentElementRegistry.getInstance().getConfigurations(); for (int iConfig = 0; iConfig < configs.length; iConfig++) { CommentElementConfiguration config = configs[iConfig]; if ((isJSPTag && !config.acceptJSPComment()) || (!isJSPTag && !config.acceptXMLComment())) { continue; } String[] prefixes = config.getPrefix(); for (int iPrefix = 0; iPrefix < prefixes.length; iPrefix++) { if (trimmedData.startsWith(prefixes[iPrefix])) { return config.createElement(this.model.getDocument(), data, isJSPTag); } } } ModelParserAdapter adapter = getParserAdapter(); if (adapter != null) { return adapter.createCommentElement(this.model.getDocument(), data, isJSPTag); } return null; }
/** * insertPI method * */ private void insertPI(IStructuredDocumentRegion flatNode) { ITextRegionList regions = flatNode.getRegions(); if (regions == null) return; String target = null; Iterator e = regions.iterator(); while (e.hasNext()) { ITextRegion region = (ITextRegion) e.next(); String regionType = region.getType(); if (regionType == DOMRegionContext.XML_PI_OPEN || regionType == DOMRegionContext.XML_PI_CLOSE) continue; if (target == null) target = flatNode.getText(region); } ProcessingInstructionImpl pi = (ProcessingInstructionImpl) this.model.getDocument().createProcessingInstruction(target, null); if (pi == null) return; pi.setStructuredDocumentRegion(flatNode); insertNode(pi); }
/** * insertCDATASection method * */ private void insertCDATASection(IStructuredDocumentRegion flatNode) { ITextRegionList regions = flatNode.getRegions(); if (regions == null) return; CDATASectionImpl cdata = null; try { cdata = (CDATASectionImpl) this.model.getDocument().createCDATASection(null); } catch (DOMException ex) { } if (cdata == null) { // CDATA section might not be supported insertInvalidDecl(flatNode); // regard as invalid decl return; } cdata.setStructuredDocumentRegion(flatNode); insertNode(cdata); }
void replaceRegions(IStructuredDocumentRegion flatNode, ITextRegionList newRegions, ITextRegionList oldRegions) { // future_TODO: optimize NodeImpl root = (NodeImpl) this.model.getDocument(); this.parentNode = root; this.nextNode = (NodeImpl) root.getFirstChild(); removeGapStructuredDocumentRegion(flatNode); insertGapStructuredDocumentRegionBefore(flatNode.getStart()); changeStructuredDocumentRegion(flatNode); insertGapStructuredDocumentRegionAfter(flatNode.getEnd()); }
if (this.model.getDocument() == null) return; this.context = new XMLModelContext(this.model.getDocument());
void changeRegion(IStructuredDocumentRegion flatNode, ITextRegion region) { // future_TODO: optimize NodeImpl root = (NodeImpl) this.model.getDocument(); this.parentNode = root; this.nextNode = (NodeImpl) root.getFirstChild(); removeGapStructuredDocumentRegion(flatNode); insertGapStructuredDocumentRegionBefore(flatNode.getStart()); changeStructuredDocumentRegion(flatNode); insertGapStructuredDocumentRegionAfter(flatNode.getEnd()); }
/** * changeStructuredDocumentRegion method * */ private void changeStructuredDocumentRegion(IStructuredDocumentRegion flatNode) { if (flatNode == null) return; if (this.model.getDocument() == null) return; setupContext(flatNode); removeStructuredDocumentRegion(flatNode); // make sure the parent is set to deepest level // when end tag has been removed this.context.setLast(); insertStructuredDocumentRegion(flatNode); cleanupText(); cleanupEndTag(); }
/** * insertText method Can be called from subclasses, not to be overrided or * re-implemented. * */ protected void insertText(IStructuredDocumentRegion flatNode) { TextImpl text = (TextImpl) this.context.findPreviousText(); if (text != null) { // existing text found text.appendStructuredDocumentRegion(flatNode); // notify the change text.notifyValueChanged(); return; } // new text text = (TextImpl) this.model.getDocument().createTextNode(null); if (text == null) return; text.setStructuredDocumentRegion(flatNode); insertNode(text); }
String value = ((DocumentImpl)this.model.getDocument()).getCharValue(name); if (value != null) { // character entity TextImpl text = (TextImpl) this.context.findPreviousText(); text = (TextImpl) this.model.getDocument().createTextNode(null); if (text == null) return; ref = (EntityReferenceImpl) this.model.getDocument().createEntityReference(name);
if (flatNode == null || region == null) return; if (this.model.getDocument() == null) return; this.context = new XMLModelContext(this.model.getDocument());
attr = (AttrImpl) this.model.getDocument().createAttribute(name); if (attr != null) { attr.setNameRegion(region); element = (ElementImpl) this.model.getDocument().createElement(tagName);
/** * insertInvalidDecl method * */ private void insertInvalidDecl(IStructuredDocumentRegion flatNode) { ITextRegionList regions = flatNode.getRegions(); if (regions == null) return; ElementImpl element = null; try { element = (ElementImpl) this.model.getDocument().createElement("!");//$NON-NLS-1$ } catch (DOMException ex) { } if (element == null) { // invalid tag insertText(flatNode); // regard as invalid text return; } element.setEmptyTag(true); element.setStartStructuredDocumentRegion(flatNode); insertNode(element); }
void replaceStructuredDocumentRegions(IStructuredDocumentRegionList newStructuredDocumentRegions, IStructuredDocumentRegionList oldStructuredDocumentRegions) { NodeImpl root = (NodeImpl) this.model.getDocument();
DocumentTypeImpl docType = (DocumentTypeImpl) this.model.getDocument().createDoctype(name); if (docType == null) return;
end = (ElementImpl) this.model.getDocument().createElement(tagName);
CommentImpl comment = (CommentImpl) this.model.getDocument().createComment(null); if (comment == null) return;