1 19 20 package org.netbeans.modules.xml.wsdl.ui.wsdl.nodes; 21 22 import java.util.ArrayList ; 23 import java.util.Collection ; 24 import java.util.Collections ; 25 import java.util.List ; 26 27 import org.netbeans.modules.xml.schema.model.GlobalComplexType; 28 import org.netbeans.modules.xml.schema.model.GlobalElement; 29 import org.netbeans.modules.xml.schema.model.GlobalSimpleType; 30 import org.netbeans.modules.xml.schema.model.Schema; 31 import org.netbeans.modules.xml.schema.model.SchemaComponent; 32 import org.netbeans.modules.xml.schema.model.SchemaModelReference; 33 import org.netbeans.modules.xml.schema.ui.nodes.categorized.CategorizedSchemaNodeFactory; 34 import org.openide.nodes.FilterNode; 35 import org.openide.nodes.Node; 36 import org.openide.util.Lookup; 37 import org.openide.util.NbBundle; 38 39 40 41 47 public class XSDTypesNode extends FilterNode { 48 49 private Collection mSchemas; 50 51 52 public XSDTypesNode(Node typesNode, Collection schemas) { 53 super(typesNode); 54 mSchemas = schemas; 55 this.setDisplayName(NbBundle.getMessage(XSDTypesNode.class, "INLINE_SCHEMATYPE_NAME")); 56 this.setChildren(new XSDTypesChildren()); 57 } 58 59 public XSDTypesNode(Node typesNode, Collection schemas, List <Class <? extends SchemaComponent>> filters) { 60 super(typesNode); 61 mSchemas = schemas; 62 this.setDisplayName(NbBundle.getMessage(XSDTypesNode.class, "INLINE_SCHEMATYPE_NAME")); 63 this.setChildren(new XSDTypesChildren(filters)); 64 } 65 66 public class XSDTypesChildren extends Children.Keys { 67 private List <Class <? extends SchemaComponent>> filters; 68 public XSDTypesChildren(List <Class <? extends SchemaComponent>> filters) { 69 this.filters = filters; 70 } 71 72 public XSDTypesChildren() { 73 } 74 75 @Override 76 protected Node[] createNodes(Object key) { 77 if (filters == null) { 78 filters = new ArrayList <Class <? extends SchemaComponent>>(); 79 filters.add(GlobalSimpleType.class); 80 filters.add(GlobalComplexType.class); 81 filters.add(GlobalElement.class); 82 filters.add(SchemaModelReference.class); 83 } 84 CategorizedSchemaNodeFactory factory = new CategorizedSchemaNodeFactory( 85 ((Schema)key).getModel(), filters, Lookup.EMPTY); 86 Node node = factory.createNode((Schema) key); 87 return new Node[] { node }; 88 89 } 90 91 92 @Override 93 protected void addNotify() { 94 resetKeys(); 95 } 96 97 @Override 98 protected void removeNotify() { 99 this.setKeys(Collections.EMPTY_SET); 100 101 } 102 103 private void resetKeys() { 104 this.setKeys(mSchemas); 105 } 106 107 @Override 108 public boolean remove (final Node[] arr) { 109 resetKeys(); 119 return super.remove(arr); 120 } 121 } 122 123 } 124 | Popular Tags |