1 19 package org.netbeans.modules.xml.wsdl.ui.api.property; 20 21 import javax.xml.namespace.QName ; 22 23 import org.netbeans.modules.xml.wsdl.model.ExtensibilityElement; 24 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 25 import org.netbeans.modules.xml.wsdl.ui.actions.ActionHelper; 26 import org.netbeans.modules.xml.wsdl.ui.netbeans.module.Utility; 27 28 public class DefaultElementOrTypeProvider implements ElementOrTypeProvider { 29 30 private final ExtensibilityElement extensibilityElement; 31 private final String typeAttributeName; 32 private final String elementAttributeName; 33 34 public DefaultElementOrTypeProvider(ExtensibilityElement extensibilityElement, String elementAttributeName, String typeAttributeName) { 35 this.extensibilityElement = extensibilityElement; 36 this.elementAttributeName = elementAttributeName; 37 this.typeAttributeName = typeAttributeName; 38 } 39 40 public void setElementOrType(ElementOrType o) { 41 if (o == null) { 42 return; 43 } 44 getModel().startTransaction(); 45 if (o.isElement()) { 46 Utility.addSchemaImport(o.getElement(), getModel()); 47 Utility.addNamespacePrefix(o.getElement().getModel().getSchema(), extensibilityElement.getModel(), null); 48 extensibilityElement.setAttribute(elementAttributeName, o.toString()); 49 extensibilityElement.setAttribute(typeAttributeName, null); 50 } else { 51 Utility.addSchemaImport(o.getType(), getModel()); 52 Utility.addNamespacePrefix(o.getType().getModel().getSchema(), extensibilityElement.getModel(), null); 53 extensibilityElement.setAttribute(typeAttributeName, o.toString()); 54 extensibilityElement.setAttribute(elementAttributeName, null); 55 } 56 getModel().endTransaction(); 57 ActionHelper.selectNode(extensibilityElement); 58 } 59 60 public ElementOrType getElementOrType() { 61 boolean isElement = false; 62 String value = extensibilityElement.getAttribute(typeAttributeName); 63 if (value == null) { 64 value = extensibilityElement.getAttribute(elementAttributeName); 65 } else { 66 isElement = false; 67 } 68 if (value != null) { 69 isElement = true; 70 } 71 72 if (extensibilityElement.getModel() == null) { return null; 74 } 75 76 if (value != null && value.trim().length() > 0) { 77 String [] parts = value.split(":"); 78 if (parts != null && parts.length == 2) { 79 String prefix = parts[0]; 80 String localPart = parts[1]; 81 String namespace = Utility.getNamespaceURI(prefix, extensibilityElement); 82 return new ElementOrType(new QName (namespace, localPart, prefix), extensibilityElement.getModel(), isElement); 83 } 84 return new ElementOrType(new QName (value), extensibilityElement.getModel(), false); 85 } 86 87 return new ElementOrType(new QName (""), extensibilityElement.getModel(), false); 88 } 89 90 public WSDLModel getModel() { 91 return extensibilityElement.getModel(); 92 } 93 94 } 95 | Popular Tags |