1 19 20 package org.netbeans.modules.xml.schema.ui.nodes.categorized.customizer; 21 22 import java.io.IOException ; 23 import java.util.List ; 24 import java.util.Map ; 25 import org.netbeans.modules.xml.schema.model.Import; 26 import org.netbeans.modules.xml.schema.model.Schema; 27 import org.netbeans.modules.xml.schema.model.SchemaModel; 28 import org.netbeans.modules.xml.schema.ui.basic.NameGenerator; 29 import org.netbeans.modules.xml.xam.Model; 30 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent; 31 import org.netbeans.modules.xml.xam.ui.customizer.ExternalReferenceCreator; 32 import org.netbeans.modules.xml.xam.ui.customizer.ExternalReferenceDataNode; 33 import org.netbeans.modules.xml.xam.ui.customizer.ExternalReferenceDecorator; 34 import org.openide.nodes.Node; 35 import org.openide.util.HelpCtx; 36 import org.openide.util.NbBundle; 37 38 44 public class ImportCreator extends ExternalReferenceCreator<Schema> { 45 46 private static final long serialVersionUID = 1L; 47 48 private ExternalReferenceDecorator decorator; 49 50 55 public ImportCreator(Schema schema) { 56 super(schema, null); 57 } 58 59 @Override 60 public void applyChanges() throws IOException { 61 super.applyChanges(); 62 Schema schema = getModelComponent(); 63 SchemaModel model = schema.getModel(); 64 List <Node> nodes = getSelectedNodes(); 65 for (Node node : nodes) { 66 Import imp = model.getFactory().createImport(); 67 imp.setSchemaLocation(getLocation(node)); 69 70 String namespace = getNamespace(node); 72 if (mustNamespaceDiffer()) { 73 imp.setNamespace(namespace); 74 } 75 76 if (node instanceof ExternalReferenceDataNode) { 78 String prefix = ((ExternalReferenceDataNode) node).getPrefix(); 79 if (prefix.length() > 0) { 80 AbstractDocumentComponent adc = 83 (AbstractDocumentComponent) schema; 84 Map prefixes = adc.getPrefixes(); 85 if (!prefixes.containsKey(prefix)) { 86 adc.addPrefix(prefix, namespace); 87 } 88 } 89 } 90 schema.addExternalReference(imp); 91 92 if (NameGenerator.getNamespacePrefix(imp.getNamespace(), schema) == null) { 95 String prefix = NameGenerator.getInstance().generateNamespacePrefix(null, model); 97 ((AbstractDocumentComponent) schema).addPrefix(prefix, imp.getNamespace()); 98 } 99 } 100 } 101 102 public HelpCtx getHelpCtx() { 103 return new HelpCtx(ImportCreator.class); 104 } 105 106 protected String getTargetNamespace(Model model) { 107 return ((SchemaModel) model).getSchema().getTargetNamespace(); 108 } 109 110 @SuppressWarnings ("unchecked") 111 protected Map <String , String > getPrefixes(Model model) { 112 SchemaModel sm = (SchemaModel) model; 113 AbstractDocumentComponent schema = 114 (AbstractDocumentComponent) sm.getSchema(); 115 return schema.getPrefixes(); 116 } 117 118 protected ExternalReferenceDecorator getNodeDecorator() { 119 if (decorator == null) { 120 decorator = new SchemaReferenceDecorator(this); 121 } 122 return decorator; 123 } 124 125 public boolean mustNamespaceDiffer() { 126 return true; 127 } 128 129 protected String referenceTypeName() { 130 return NbBundle.getMessage(ImportCreator.class, 131 "LBL_ImportCreator_Type"); 132 } 133 } 134 | Popular Tags |