001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.xml.axi;
042:
043: import java.util.List;
044: import org.netbeans.modules.xml.axi.datatype.Datatype;
045: import org.netbeans.modules.xml.axi.visitor.AXIVisitor;
046: import org.netbeans.modules.xml.schema.model.Form;
047: import org.netbeans.modules.xml.schema.model.SchemaComponent;
048:
049: /**
050: * Represents an Element in XML Schema.
051: *
052: * @author Samaresh (Samaresh.Panda@Sun.Com)
053: */
054: public abstract class Element extends AbstractElement implements
055: AXIType {
056:
057: /**
058: * Creates a new instance of Element
059: */
060: public Element(AXIModel model) {
061: super (model);
062: }
063:
064: /**
065: * Creates a new instance of Element
066: */
067: public Element(AXIModel model, SchemaComponent schemaComponent) {
068: super (model, schemaComponent);
069: }
070:
071: /**
072: * Creates a proxy for this Element.
073: */
074: public Element(AXIModel model, AXIComponent sharedComponent) {
075: super (model, sharedComponent);
076: }
077:
078: /**
079: * Allows a visitor to visit this Element.
080: */
081: public void accept(AXIVisitor visitor) {
082: visitor.visit(this );
083: }
084:
085: /**
086: * Returns true if it is a reference, false otherwise.
087: */
088: public abstract boolean isReference();
089:
090: /**
091: * Returns the referent if isReference() is true.
092: */
093: public abstract Element getReferent();
094:
095: /**
096: * Returns abstract property.
097: */
098: public abstract boolean getAbstract();
099:
100: /**
101: * Sets the abstract property.
102: */
103: public abstract void setAbstract(boolean value);
104:
105: /**
106: * Returns the block.
107: */
108: public abstract String getBlock();
109:
110: /**
111: * Sets the block property.
112: */
113: public abstract void setBlock(String value);
114:
115: /**
116: * Returns the final property.
117: */
118: public abstract String getFinal();
119:
120: /**
121: * Sets the final property.
122: */
123: public abstract void setFinal(String value);
124:
125: /**
126: * Returns the fixed value.
127: */
128: public abstract String getFixed();
129:
130: /**
131: * Sets the fixed value.
132: */
133: public abstract void setFixed(String value);
134:
135: /**
136: * Returns the default value.
137: */
138: public abstract String getDefault();
139:
140: /**
141: * Sets the default value.
142: */
143: public abstract void setDefault(String value);
144:
145: /**
146: * Returns the form.
147: */
148: public abstract Form getForm();
149:
150: /**
151: * Sets the form.
152: */
153: public abstract void setForm(Form value);
154:
155: /**
156: * Returns the nillable.
157: */
158: public abstract boolean getNillable();
159:
160: /**
161: * Sets the nillable property.
162: */
163: public abstract void setNillable(boolean value);
164:
165: /**
166: * used by property editor
167: */
168: public Boolean isNillable() {
169: return Boolean.valueOf(getNillable());
170: }
171:
172: /**
173: * used by property editor
174: */
175: public void setNillable(Boolean nillable) {
176: if (nillable != null)
177: setNillable(nillable.booleanValue());
178: }
179:
180: /**
181: * Returns the complex type of this element, if there is one.
182: * Null for element with simple type or anonymous type.
183: */
184: public abstract AXIType getType();
185:
186: /**
187: * sets the type of this element.
188: */
189: public abstract void setType(AXIType type);
190:
191: /**
192: * String representation of this Element.
193: */
194: public String toString() {
195: return getName();
196: }
197:
198: ////////////////////////////////////////////////////////////////////
199: ////////////////////////// member variables ////////////////////////
200: ////////////////////////////////////////////////////////////////////
201: protected String finalValue;
202: protected String fixedValue;
203: protected String defaultValue;
204: protected Form form;
205: protected String block;
206: protected boolean isAbstract;
207: protected boolean isNillable;
208:
209: ////////////////////////////////////////////////////////////////////
210: ////////////////// Properties for firing events ////////////////////
211: ////////////////////////////////////////////////////////////////////
212: public static final String PROP_FINAL = "final"; // NOI18N
213: public static final String PROP_FIXED = "fixed"; // NOI18N
214: public static final String PROP_DEFAULT = "default"; // NOI18N
215: public static final String PROP_FORM = "form"; // NOI18N
216: public static final String PROP_BLOCK = "block"; // NOI18N
217: public static final String PROP_ABSTRACT = "abstract"; // NOI18N
218: public static final String PROP_NILLABLE = "nillable"; // NOI18N
219: public static final String PROP_TYPE = "type"; // NOI18N
220: public static final String PROP_ELEMENT_REF = "elementRef"; // NOI18N
221: }
|