1 19 20 26 27 package org.netbeans.modules.xml.schema.ui.nodes; 28 29 import java.util.ArrayList ; 30 import org.netbeans.modules.xml.schema.model.Annotation; 31 import org.netbeans.modules.xml.schema.model.SchemaComponent; 32 import org.netbeans.modules.xml.schema.model.SchemaComponentReference; 33 import org.netbeans.modules.xml.schema.model.visitor.DeepSchemaVisitor; 34 import org.netbeans.modules.xml.schema.ui.nodes.categorized.newtype.AdvancedSchemaComponentNewType; 35 import org.openide.util.datatransfer.NewType; 36 37 41 public class NewTypesFactory extends DeepSchemaVisitor 42 { 43 private ArrayList <Class <? extends SchemaComponent>> childTypes; 44 47 public NewTypesFactory() 48 { 49 childTypes = new ArrayList <Class <? extends SchemaComponent>>(); 50 } 51 52 public NewType[] getNewTypes( 53 SchemaComponentReference<? extends SchemaComponent> reference, 54 Class <? extends SchemaComponent> filterClass) 55 { 56 childTypes.clear(); 57 reference.get().accept(this); 58 ArrayList <NewType> result = new ArrayList <NewType>(); 59 for(Class <? extends SchemaComponent>childType:childTypes) 60 { 61 if(filterClass==null|| filterClass.isAssignableFrom(childType)) 62 { 63 AdvancedSchemaComponentNewType newType = 64 new AdvancedSchemaComponentNewType(reference,childType); 65 if (newType.canCreate()) 66 { 67 result.add(newType); 68 } 69 } 70 } 71 childTypes.clear(); 72 return result.toArray(new NewType[result.size()]); 73 } 74 75 protected void visitChildren(SchemaComponent sc) 76 { 77 addChildType(Annotation.class); 78 } 79 80 protected void addChildType(Class <? extends SchemaComponent> childType) 81 { 82 childTypes.add(childType); 83 } 84 85 } 86 | Popular Tags |