1 19 20 28 29 package org.netbeans.modules.xml.axi.impl; 30 31 import org.netbeans.modules.xml.axi.AXIComponent; 32 import org.netbeans.modules.xml.axi.AXIModel; 33 import org.netbeans.modules.xml.axi.AXIType; 34 import org.netbeans.modules.xml.axi.Attribute; 35 import org.netbeans.modules.xml.axi.datatype.StringType; 36 import org.netbeans.modules.xml.axi.datatype.DatatypeFactory; 37 import org.netbeans.modules.xml.schema.model.SchemaComponent; 38 import org.netbeans.modules.xml.schema.model.Attribute.Use; 39 import org.netbeans.modules.xml.schema.model.Form; 40 41 46 public final class AttributeImpl extends Attribute { 47 48 51 public AttributeImpl(AXIModel model) { 52 super(model); 53 setDefaultDataType(); 54 } 55 56 59 public AttributeImpl(AXIModel model, SchemaComponent schemaComponent) { 60 super(model, schemaComponent); 61 setDefaultDataType(); 62 } 63 64 69 private void setDefaultDataType() { 70 this.datatype = new StringType(); 71 } 72 73 76 public boolean isReference() { 77 return false; 78 } 79 80 83 public Attribute getReferent() { 84 return null; 85 } 86 87 90 public String getName() { 91 return name; 92 } 93 94 97 public void setName(String name) { 98 String oldName = getName(); 99 if( (oldName == null && name == null) || 100 (oldName != null && oldName.equals(name)) ) { 101 return; 102 } 103 this.name = name; 104 firePropertyChangeEvent(PROP_NAME, oldName, name); 105 } 106 107 111 public AXIType getType() { 112 if(!datatypeInitialized && getPeer() != null) { 113 datatype = DatatypeFactory.getDefault().getDatatype(getModel(), getPeer()); 114 datatypeInitialized = true; 115 } 116 117 return datatype; 118 } 119 120 123 public void setType(AXIType value) { 124 if( (this == value) || 125 (this.isGlobal() && (value instanceof Attribute)) ) 126 return; 127 128 if(value instanceof Attribute) { 129 setAttributeAsType(value); 130 return; 131 } 132 133 AXIType oldValue = getType(); 134 if( (oldValue == null && value == null) || 135 (oldValue != null && oldValue.equals(value)) ) { 136 return; 137 } 138 this.datatype = value; 139 firePropertyChangeEvent(PROP_TYPE, oldValue, value); 140 } 141 142 private void setAttributeAsType(final AXIType newValue) { 143 if(newValue == this) 144 return; 145 int index = this.getIndex(); 146 AXIComponent parent = getParent(); 147 Attribute ref = getModel().getComponentFactory().createAttributeReference((Attribute)newValue); 148 parent.removeChild(this); 149 parent.insertAtIndex(Attribute.PROP_ATTRIBUTE_REF, ref, index); 150 } 151 152 155 public Form getForm() { 156 return form; 157 } 158 159 162 public void setForm(Form value) { 163 Form oldValue = getForm(); 164 if( (oldValue == null && value == null) || 165 (oldValue != null && oldValue == value) ) { 166 return; 167 } 168 this.form = value; 169 firePropertyChangeEvent(PROP_FORM, oldValue, value); 170 } 171 172 175 public String getFixed() { 176 return fixedValue; 177 } 178 179 182 public void setFixed(String value) { 183 String oldValue = getFixed(); 184 if( (oldValue == null && value == null) || 185 (oldValue != null && oldValue.equals(value)) ) { 186 return; 187 } 188 this.fixedValue = value; 189 firePropertyChangeEvent(PROP_FIXED, oldValue, value); 190 } 191 192 195 public String getDefault() { 196 return defaultValue; 197 } 198 199 202 public void setDefault(String value) { 203 Object oldValue = getDefault(); 204 if( (oldValue == null && value == null) || 205 (oldValue != null && oldValue.equals(value)) ) { 206 return; 207 } 208 this.defaultValue = value; 209 firePropertyChangeEvent(PROP_DEFAULT, oldValue, value); 210 } 211 212 215 public Use getUse() { 216 return use; 217 } 218 219 222 public void setUse(Use value) { 223 Use oldValue = getUse(); 224 if( (oldValue == null && value == null) || 225 (oldValue != null && oldValue == value) ) { 226 return; 227 } 228 this.use = value; 229 firePropertyChangeEvent(PROP_USE, oldValue, value); 230 } 231 232 233 private boolean datatypeInitialized; 234 } 235 | Popular Tags |