KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > text > syntax > dom > StartTag


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

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 JavaDoc 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 not well-formed
39
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                 // check well-formedness
68
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 JavaDoc toString() {
88         StringBuffer JavaDoc ret = new StringBuffer JavaDoc( "StartTag(\"" + name + "\" " );
89         ret.append(getAttributes().toString());
90         return ret.toString() + " " + first + ")";
91     }
92     
93 }
94
95
Popular Tags