1 19 20 package org.netbeans.modules.xml.schema.ui.nodes.categorized; 21 22 import java.util.List ; 23 import org.openide.nodes.Node; 24 import org.openide.util.NbBundle; 25 import org.netbeans.modules.xml.schema.model.SchemaComponent; 26 import org.netbeans.modules.xml.schema.model.ComplexContent; 27 import org.netbeans.modules.xml.schema.model.ComplexContentDefinition; 28 import org.netbeans.modules.xml.schema.model.ComplexContentRestriction; 29 import org.netbeans.modules.xml.schema.model.ComplexExtension; 30 import org.netbeans.modules.xml.schema.model.ComplexType; 31 import org.netbeans.modules.xml.schema.model.ComplexTypeDefinition; 32 import org.netbeans.modules.xml.schema.model.GlobalType; 33 import org.netbeans.modules.xml.schema.model.SchemaComponentReference; 34 import org.netbeans.modules.xml.schema.model.SimpleContent; 35 import org.netbeans.modules.xml.schema.model.SimpleContentDefinition; 36 import org.netbeans.modules.xml.schema.model.SimpleContentRestriction; 37 import org.netbeans.modules.xml.schema.model.SimpleExtension; 38 import org.netbeans.modules.xml.schema.ui.nodes.SchemaComponentNode; 39 import org.netbeans.modules.xml.schema.ui.nodes.SchemaUIContext; 40 41 45 public class ComplexTypeChildren<C extends ComplexType> 46 extends CategorizedChildren<C> 47 { 48 52 public ComplexTypeChildren(SchemaUIContext context, 53 SchemaComponentReference<C> reference) { 54 super(context,reference); 55 } 56 57 58 62 protected List <Node> createKeys() { 63 List <Node> keys=super.createKeys(); 64 65 int index=0; 66 67 if (keys.size() > 0 && keys.get(0) instanceof DetailsNode) 69 index=1; 70 71 SchemaComponent extensionOrRestriction = null; 72 GlobalType extensionBase = null; 73 ComplexType type = getReference().get(); 74 if (type.getModel() == null) { 75 return keys; 77 } 78 ComplexTypeDefinition definition = type.getDefinition(); 79 if(definition instanceof ComplexContent) { 80 ComplexContentDefinition contentDef = 81 ((ComplexContent)definition).getLocalDefinition(); 82 if (contentDef instanceof ComplexContentRestriction) { 83 extensionOrRestriction = contentDef; 84 } 85 if (contentDef instanceof ComplexExtension) { 86 extensionOrRestriction = contentDef; 87 ComplexExtension ce = (ComplexExtension)extensionOrRestriction; 88 if(ce.getBase()!=null) extensionBase = ce.getBase().get(); 89 } 90 } else if(definition instanceof SimpleContent) { 91 SimpleContentDefinition contentDef = 92 ((SimpleContent)definition).getLocalDefinition(); 93 if (contentDef instanceof SimpleContentRestriction) { 94 extensionOrRestriction = contentDef; 95 } 96 if (contentDef instanceof SimpleExtension) { 97 extensionOrRestriction = contentDef; 98 SimpleExtension ce = (SimpleExtension)extensionOrRestriction; 99 if(ce.getBase()!=null) extensionBase = ce.getBase().get(); 100 } 101 } 102 if(definition instanceof ComplexContent || 103 definition instanceof SimpleContent) { 104 for (int i=0;i<keys.size();i++) { 105 Node n = keys.get(i); 106 SchemaComponentNode scn = (SchemaComponentNode)n.getCookie 107 (SchemaComponentNode.class); 108 if(scn!=null && scn.getReference().get()==definition) { 109 index = i; 110 keys.remove(index); 111 break; 112 } 113 } 114 } 115 if(extensionOrRestriction!= null) { 116 if(extensionBase!=null) { 117 keys.add(index++, new ReadOnlySchemaComponentNode( 118 getContext().getFactory().createNode(extensionBase), 119 NbBundle.getMessage(ComplexTypeChildren.class, 120 "LBL_InheritedFrom"))); 121 } 122 for (SchemaComponent c : extensionOrRestriction.getChildren()) { 123 Node cNode = getContext().getFactory().createNode(c); 124 keys.add(index++,cNode); 125 } 126 } 127 return keys; 128 } 129 } 130 | Popular Tags |