1 19 20 package org.netbeans.modules.xml.schema.ui.nodes.categorized.customizer; 21 22 import java.io.IOException ; 23 import java.util.Map ; 24 import org.netbeans.modules.xml.schema.ui.basic.NameGenerator; 25 import org.netbeans.modules.xml.xam.ui.customizer.ExternalReferenceDecorator; 26 import org.openide.util.HelpCtx; 27 import org.netbeans.modules.xml.schema.model.Import; 28 import org.netbeans.modules.xml.schema.model.Schema; 29 import org.netbeans.modules.xml.schema.model.SchemaModel; 30 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 31 import org.netbeans.modules.xml.xam.Model; 32 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent; 33 import org.netbeans.modules.xml.xam.ui.ModelCookie; 34 import org.netbeans.modules.xml.xam.ui.customizer.ExternalReferenceCustomizer; 35 import org.openide.filesystems.FileObject; 36 import org.openide.loaders.DataObject; 37 38 44 public class ImportCustomizer extends ExternalReferenceCustomizer<Import> { 45 private static final long serialVersionUID = 1L; 46 private ExternalReferenceDecorator decorator; 47 48 53 public ImportCustomizer(Import _import) { 54 super(_import, null); 55 } 56 57 @Override 58 public void applyChanges() throws IOException { 59 super.applyChanges(); 60 Import _import = getModelComponent(); 61 if (isLocationChanged()) { 62 _import.setSchemaLocation(getEditedLocation()); 64 } 65 66 String namespace = getEditedNamespace(); 67 if (mustNamespaceDiffer() && isNamespaceChanged()) { 68 _import.setNamespace(namespace); 70 } 71 72 if (mustNamespaceDiffer()) { 77 SchemaModel model = getModelComponent().getModel(); 79 String prefix = getEditedPrefix(); 80 if (prefix.length() > 0) { 81 model.getSchema().addPrefix(prefix, namespace); 83 } 84 } 85 } 86 87 protected String getReferenceLocation() { 88 Import _import = getModelComponent(); 89 return _import.getSchemaLocation(); 90 } 91 92 protected String getNamespace() { 93 Import _import = getModelComponent(); 94 return _import.getNamespace(); 95 } 96 97 105 private static String findPrefix(SchemaModel model, String namespace) { 106 Map <String , String > prefixMap = model.getSchema().getPrefixes(); 107 for (Map.Entry <String , String > entry : prefixMap.entrySet()) { 108 if (entry.getValue().equals(namespace)) { 109 return entry.getKey(); 110 } 111 } 112 return null; 113 } 114 115 123 @SuppressWarnings ("unchecked") 124 private static String findPrefix(WSDLModel model, String namespace) { 125 AbstractDocumentComponent def = 126 (AbstractDocumentComponent) model.getDefinitions(); 127 Map <Object , Object > prefixMap = def.getPrefixes(); 128 for (Map.Entry <Object , Object > entry : prefixMap.entrySet()) { 129 if (entry.getValue().equals(namespace)) { 130 return entry.getKey().toString(); 131 } 132 } 133 return null; 134 } 135 136 protected String getPrefix() { 137 Import _import = getModelComponent(); 138 String namespace = _import.getNamespace(); 139 SchemaModel model = getModelComponent().getModel(); 140 String prefix = findPrefix(model, namespace); 141 if (prefix != null) { 142 return prefix; 143 } 144 FileObject fobj = (FileObject) model.getModelSource().getLookup(). 149 lookup(FileObject.class); 150 if (fobj != null) { 151 try { 152 DataObject dobj = DataObject.find(fobj); 153 ModelCookie modelCookie = (ModelCookie) dobj.getCookie( 154 ModelCookie.class); 155 if (modelCookie != null) { 156 Model model2 = modelCookie.getModel(); 157 if (model2 != null && !model.equals(model2)) { 158 if (model2 instanceof SchemaModel) { 159 return findPrefix((SchemaModel) model2, namespace); 160 } else if (model2 instanceof WSDLModel) { 161 return findPrefix((WSDLModel) model2, namespace); 162 } 163 } 164 } 165 } catch (IOException ioe) { 166 } 168 } 169 return null; 170 } 171 172 public HelpCtx getHelpCtx() { 173 return new HelpCtx(ImportCustomizer.class); 174 } 175 176 protected String getTargetNamespace(Model model) { 177 if (model instanceof SchemaModel) { 178 SchemaModel sm = (SchemaModel) model; 179 Schema schema = sm.getSchema(); 180 if (schema != null) { 181 return schema.getTargetNamespace(); 182 } 183 } 184 return null; 185 } 186 187 protected Map <String , String > getPrefixes(Model model) { 188 if (model instanceof SchemaModel) { 189 SchemaModel sm = (SchemaModel) model; 190 Schema schema = sm.getSchema(); 191 if (schema != null) { 192 return schema.getPrefixes(); 193 } 194 } 195 return null; 196 } 197 198 protected ExternalReferenceDecorator getNodeDecorator() { 199 if (decorator == null) { 200 decorator = new SchemaReferenceDecorator(this); 201 } 202 return decorator; 203 } 204 205 protected String generatePrefix() { 206 SchemaModel model = getModelComponent().getModel(); 207 return NameGenerator.getInstance().generateNamespacePrefix(null, model); 208 } 209 210 public boolean mustNamespaceDiffer() { 211 return true; 212 } 213 } 214 | Popular Tags |