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.AXIComponent.ComponentType; 33 import org.netbeans.modules.xml.axi.AXIModel; 34 import org.netbeans.modules.xml.axi.AXIType; 35 import org.netbeans.modules.xml.axi.Attribute; 36 import org.netbeans.modules.xml.schema.model.SchemaComponent; 37 import org.netbeans.modules.xml.schema.model.Attribute.Use; 38 import org.netbeans.modules.xml.schema.model.Form; 39 40 49 public class AttributeRef extends Attribute { 50 51 54 public AttributeRef(AXIModel model, Attribute referent) { 55 super(model, referent); 56 } 57 58 61 public AttributeRef(AXIModel model, SchemaComponent component, Attribute referent) { 62 super(model, component); 63 super.setSharedComponent(referent); 64 } 65 66 71 public ComponentType getComponentType() { 72 return ComponentType.REFERENCE; 73 } 74 75 78 public Attribute getReferent() { 79 return (Attribute)getSharedComponent(); 80 } 81 82 85 public void setRef(Attribute referent) { 86 AttributeImpl oldRef = (AttributeImpl) getReferent(); 87 if(oldRef == referent) 88 return; 89 oldRef.removeListener(this); 90 super.setSharedComponent(referent); 91 firePropertyChangeEvent(PROP_ATTRIBUTE_REF, oldRef, referent); 92 forceFireEvent(); 93 } 94 95 98 public boolean isReference() { 99 return true; 100 } 101 102 105 public String getName() { 106 return getReferent().getName(); 107 } 108 109 112 public void setName(String name) { 113 for(Attribute a : getModel().getRoot().getAttributes()) { 114 if(a.getName().equals(name)) { 115 setRef(a); 116 return; 117 } 118 } 119 getReferent().setName(name); 120 } 121 122 126 public AXIType getType() { 127 return getReferent().getType(); 128 } 129 130 133 public void setType(AXIType type) { 134 if(type instanceof Attribute) { 135 setRef((Attribute)type); 136 return; 137 } 138 139 int index = this.getIndex(); 140 AXIComponent parent = getParent(); 141 Attribute a = getModel().getComponentFactory().createAttribute(); 142 a.setName(getReferent().getName()); 143 parent.removeChild(this); 144 parent.insertAtIndex(Attribute.PROP_ATTRIBUTE, a, index); 145 a.setType(type); 146 } 147 148 151 public Form getForm() { 152 return getReferent().getForm(); 153 } 154 155 158 public void setForm(Form form) { 159 getReferent().setForm(form); 160 } 161 162 165 public String getFixed() { 166 return fixedValue; 167 } 168 169 172 public void setFixed(String value) { 173 String oldValue = getFixed(); 174 if( (oldValue == null && value == null) || 175 (oldValue != null && oldValue.equals(value)) ) { 176 return; 177 } 178 this.fixedValue = value; 179 firePropertyChangeEvent(PROP_FIXED, oldValue, value); 180 } 181 182 185 public String getDefault() { 186 return defaultValue; 187 } 188 189 192 public void setDefault(String value) { 193 String oldValue = getDefault(); 194 if( (oldValue == null && value == null) || 195 (oldValue != null && oldValue.equals(value)) ) { 196 return; 197 } 198 this.defaultValue = value; 199 firePropertyChangeEvent(PROP_DEFAULT, oldValue, value); 200 } 201 202 205 public Use getUse() { 206 return use; 207 } 208 209 212 public void setUse(Use value) { 213 Use oldValue = getUse(); 214 if( (oldValue == null && value == null) || 215 (oldValue != null && oldValue.equals(value)) ) { 216 return; 217 } 218 this.use = value; 219 firePropertyChangeEvent(PROP_USE, oldValue, value); 220 } 221 222 227 void forceFireEvent() { 228 firePropertyChangeEvent(Attribute.PROP_NAME, null, getReferent().getName()); 229 } 230 231 } 232 | Popular Tags |