1 19 20 package org.netbeans.modules.xml.text.syntax.dom; 21 22 import java.util.*; 23 24 import org.w3c.dom.*; 25 import org.netbeans.modules.xml.text.syntax.*; 26 import org.netbeans.modules.xml.spi.dom.*; 27 import org.netbeans.editor.*; 28 29 public class StartTag extends Tag { 30 31 public StartTag(XMLSyntaxSupport support, TokenItem from, int to, String name, Collection attribs) { 32 super( support, from, to, name, attribs ); 33 } 34 35 public boolean hasChildNodes() { 36 SyntaxElement next = getNext(); 37 if (next == null) return false; 38 if (next instanceof StartTag && ((StartTag)next).getEndTag() == null) return false; 40 if (next instanceof EndTag) return false; 41 return true; 42 } 43 44 public NodeList getChildNodes() { 45 46 List list = new ArrayList(); 47 Node next = hasChildNodes() ? findNext(this) : null; 48 49 while (next != null) { 50 list.add(next); 51 next = next.getNextSibling(); 52 } 53 54 return new NodeListImpl(list); 55 } 56 57 protected Tag getStartTag() { 58 return this; 59 } 60 61 protected Tag getEndTag() { 62 63 SyntaxNode next = findNext(); 64 65 while (next != null) { 66 if (next instanceof EndTag) { 67 EndTag endTag = (EndTag) next; 69 if (endTag.getTagName().equals(getTagName())) { 70 return endTag; 71 } else { 72 return null; 73 } 74 } else if (next instanceof StartTag) { 75 Tag startTag = (Tag) next; 76 next = startTag.getEndTag(); 77 if (next == null) return null; 78 next = next.findNext(); 79 } else { 80 next = next.findNext(); 81 } 82 } 83 84 return null; 85 } 86 87 public String toString() { 88 StringBuffer ret = new StringBuffer ( "StartTag(\"" + name + "\" " ); 89 ret.append(getAttributes().toString()); 90 return ret.toString() + " " + first + ")"; 91 } 92 93 } 94 95 | Popular Tags |