blob: a2d48603da7ec14716905b2141b587eb3e6071c1 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1998-2004 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26package javax.swing.text.html.parser;
27
28import java.util.Vector;
29import java.util.Hashtable;
30import java.util.Enumeration;
31import java.io.*;
32
33/**
34 * This class defines the attributes of an SGML element
35 * as described in a DTD using the ATTLIST construct.
36 * An AttributeList can be obtained from the Element
37 * class using the getAttributes() method.
38 * <p>
39 * It is actually an element in a linked list. Use the
40 * getNext() method repeatedly to enumerate all the attributes
41 * of an element.
42 *
43 * @see Element
44 * @author Arthur Van Hoff
45 *
46 */
47public final
48class AttributeList implements DTDConstants, Serializable {
49 public String name;
50 public int type;
51 public Vector<?> values;
52 public int modifier;
53 public String value;
54 public AttributeList next;
55
56 AttributeList() {
57 }
58
59 /**
60 * Create an attribute list element.
61 */
62 public AttributeList(String name) {
63 this.name = name;
64 }
65
66 /**
67 * Create an attribute list element.
68 */
69 public AttributeList(String name, int type, int modifier, String value, Vector<?> values, AttributeList next) {
70 this.name = name;
71 this.type = type;
72 this.modifier = modifier;
73 this.value = value;
74 this.values = values;
75 this.next = next;
76 }
77
78 /**
79 * @return attribute name
80 */
81 public String getName() {
82 return name;
83 }
84
85 /**
86 * @return attribute type
87 * @see DTDConstants
88 */
89 public int getType() {
90 return type;
91 }
92
93 /**
94 * @return attribute modifier
95 * @see DTDConstants
96 */
97 public int getModifier() {
98 return modifier;
99 }
100
101 /**
102 * @return possible attribute values
103 */
104 public Enumeration<?> getValues() {
105 return (values != null) ? values.elements() : null;
106 }
107
108 /**
109 * @return default attribute value
110 */
111 public String getValue() {
112 return value;
113 }
114
115 /**
116 * @return the next attribute in the list
117 */
118 public AttributeList getNext() {
119 return next;
120 }
121
122 /**
123 * @return string representation
124 */
125 public String toString() {
126 return name;
127 }
128
129 /**
130 * Create a hashtable of attribute types.
131 */
132 static Hashtable attributeTypes = new Hashtable();
133
134 static void defineAttributeType(String nm, int val) {
135 Integer num = new Integer(val);
136 attributeTypes.put(nm, num);
137 attributeTypes.put(num, nm);
138 }
139
140 static {
141 defineAttributeType("CDATA", CDATA);
142 defineAttributeType("ENTITY", ENTITY);
143 defineAttributeType("ENTITIES", ENTITIES);
144 defineAttributeType("ID", ID);
145 defineAttributeType("IDREF", IDREF);
146 defineAttributeType("IDREFS", IDREFS);
147 defineAttributeType("NAME", NAME);
148 defineAttributeType("NAMES", NAMES);
149 defineAttributeType("NMTOKEN", NMTOKEN);
150 defineAttributeType("NMTOKENS", NMTOKENS);
151 defineAttributeType("NOTATION", NOTATION);
152 defineAttributeType("NUMBER", NUMBER);
153 defineAttributeType("NUMBERS", NUMBERS);
154 defineAttributeType("NUTOKEN", NUTOKEN);
155 defineAttributeType("NUTOKENS", NUTOKENS);
156
157 attributeTypes.put("fixed", new Integer(FIXED));
158 attributeTypes.put("required", new Integer(REQUIRED));
159 attributeTypes.put("current", new Integer(CURRENT));
160 attributeTypes.put("conref", new Integer(CONREF));
161 attributeTypes.put("implied", new Integer(IMPLIED));
162 }
163
164 public static int name2type(String nm) {
165 Integer i = (Integer)attributeTypes.get(nm);
166 return (i == null) ? CDATA : i.intValue();
167 }
168
169 public static String type2name(int tp) {
170 return (String)attributeTypes.get(new Integer(tp));
171 }
172}