1 19 20 package org.netbeans.modules.xml.schema.ui.nodes.categorized; 21 22 import org.openide.nodes.Children; 23 import org.openide.util.NbBundle; 24 import org.netbeans.modules.xml.xam.ComponentEvent; 25 import org.netbeans.modules.xml.schema.model.SimpleContentDefinition; 26 import org.netbeans.modules.xml.schema.model.SimpleContent; 27 import org.netbeans.modules.xml.schema.model.GlobalComplexType; 28 import org.netbeans.modules.xml.schema.model.SchemaComponentReference; 29 import org.netbeans.modules.xml.schema.model.ComplexContent; 30 import org.netbeans.modules.xml.schema.model.ComplexContentDefinition; 31 import org.netbeans.modules.xml.schema.model.ComplexContentRestriction; 32 import org.netbeans.modules.xml.schema.model.ComplexExtension; 33 import org.netbeans.modules.xml.schema.model.ComplexTypeDefinition; 34 import org.netbeans.modules.xml.schema.model.GlobalType; 35 import org.netbeans.modules.xml.schema.model.SimpleContentRestriction; 36 import org.netbeans.modules.xml.schema.model.SimpleExtension; 37 import org.netbeans.modules.xml.schema.ui.nodes.schema.GlobalComplexTypeNode; 38 import org.netbeans.modules.xml.schema.ui.nodes.NewTypesFactory; 39 import org.netbeans.modules.xml.schema.ui.nodes.RefreshableChildren; 40 import org.netbeans.modules.xml.schema.ui.nodes.SchemaUIContext; 41 import org.netbeans.modules.xml.schema.ui.nodes.categorized.customizer.ComplexTypeCustomizer; 42 import org.netbeans.modules.xml.xam.ui.customizer.Customizer; 43 import org.netbeans.modules.xml.xam.ui.customizer.CustomizerProvider; 44 45 49 public class AdvancedGlobalComplexTypeNode extends GlobalComplexTypeNode { 50 54 public AdvancedGlobalComplexTypeNode(SchemaUIContext context, 55 SchemaComponentReference<GlobalComplexType> reference, 56 Children children) { 57 super(context,reference,children); 58 } 59 60 61 65 protected NewTypesFactory getNewTypesFactory() { 66 return new AdvancedNewTypesFactory(); 67 } 68 69 70 89 90 public void childrenDeleted(ComponentEvent evt) { 91 super.childrenDeleted(evt); 92 if (isValid()) { 93 Object source = evt.getSource(); 94 GlobalComplexType type = getReference().get(); 95 ComplexTypeDefinition definition = type.getDefinition(); 96 if(source == type || source == definition) { 97 fireDisplayNameChange(null,getDisplayName()); 98 } 99 if(definition instanceof ComplexContent) { 100 if(source == ((ComplexContent)definition).getLocalDefinition()) { 101 ((RefreshableChildren) getChildren()).refreshChildren(); 102 } 103 } else if(definition instanceof SimpleContent) { 104 if(source == ((SimpleContent)definition).getLocalDefinition()) { 105 ((RefreshableChildren) getChildren()).refreshChildren(); 106 } 107 } 108 } 109 } 110 111 public void childrenAdded(ComponentEvent evt) { 112 if (! isValid()) return; 113 super.childrenAdded(evt); 114 Object source = evt.getSource(); 115 GlobalComplexType type = getReference().get(); 116 ComplexTypeDefinition definition = type.getDefinition(); 117 if(source == type || source == definition) { 118 fireDisplayNameChange(null,getDisplayName()); 119 } 120 if(definition instanceof ComplexContent) { 121 if(source == definition || 122 source == ((ComplexContent)definition).getLocalDefinition()) { 123 ((RefreshableChildren) getChildren()).refreshChildren(); 124 } 125 } else if(definition instanceof SimpleContent) { 126 if(source == definition || 127 source == ((SimpleContent)definition).getLocalDefinition()) { 128 ((RefreshableChildren) getChildren()).refreshChildren(); 129 } 130 } 131 } 132 133 public void valueChanged(ComponentEvent evt) { 134 if (! isValid()) return; 135 super.valueChanged(evt); 136 Object source = evt.getSource(); 137 GlobalComplexType type = getReference().get(); 138 ComplexTypeDefinition definition = type.getDefinition(); 139 if(definition instanceof ComplexContent) { 140 ComplexContentDefinition contentDef = 141 ((ComplexContent)definition).getLocalDefinition(); 142 if(source == contentDef) { 143 fireDisplayNameChange(null,getDisplayName()); 144 if(contentDef instanceof ComplexExtension) { 145 ((RefreshableChildren) getChildren()).refreshChildren(); 146 } 147 } 148 } else if(definition instanceof SimpleContent) { 149 SimpleContentDefinition contentDef = 150 ((SimpleContent)definition).getLocalDefinition(); 151 if(source == contentDef) { 152 fireDisplayNameChange(null,getDisplayName()); 153 if(contentDef instanceof SimpleExtension) { 154 ((RefreshableChildren) getChildren()).refreshChildren(); 155 } 156 } 157 } 158 } 159 160 @Override 161 public boolean hasCustomizer() { 162 return isEditable(); 163 } 164 165 public CustomizerProvider getCustomizerProvider() { 166 return new CustomizerProvider() { 167 168 public Customizer getCustomizer() { 169 return new ComplexTypeCustomizer<GlobalComplexType>(getReference()); 170 } 171 }; 172 } 173 174 public String getHtmlDisplayName() { 175 String gtName = getSuperDefinitionName(); 176 if(gtName == null) return super.getHtmlDisplayName(); 177 String retValue = getDefaultDisplayName(); 178 ComplexTypeDefinition definition = getReference().get().getDefinition(); 179 String supertypeLabel = null; 180 if(definition instanceof ComplexContent && 181 ((ComplexContent)definition).getLocalDefinition() 182 instanceof ComplexContentRestriction || 183 definition instanceof SimpleContent && 184 ((SimpleContent)definition).getLocalDefinition() 185 instanceof SimpleContentRestriction) { 186 supertypeLabel = NbBundle.getMessage(AdvancedGlobalComplexTypeNode.class, 187 "LBL_ComplexType_Restriction",gtName); 188 } else if(definition instanceof ComplexContent && 189 ((ComplexContent)definition).getLocalDefinition() 190 instanceof ComplexExtension || 191 definition instanceof SimpleContent && 192 ((SimpleContent)definition).getLocalDefinition() 193 instanceof SimpleExtension) { 194 supertypeLabel = NbBundle.getMessage(AdvancedGlobalComplexTypeNode.class, 195 "LBL_ComplexType_Extension",gtName); 196 } 197 if(supertypeLabel!=null) { 198 retValue = retValue+"<font color='#999999'> ("+supertypeLabel+")</font>"; 199 } 200 return applyHighlights(retValue); 201 } 202 } 203 | Popular Tags |