1 19 20 26 package org.netbeans.modules.xml.wsdl.ui.view.treeeditor; 27 28 import java.util.logging.Level ; 29 30 import javax.xml.namespace.QName ; 31 32 import org.netbeans.modules.xml.wsdl.model.WSDLComponent; 33 import org.netbeans.modules.xml.wsdl.ui.commands.NamedPropertyAdapter; 34 import org.netbeans.modules.xml.wsdl.ui.model.StringAttribute; 35 import org.netbeans.modules.xml.wsdl.ui.view.property.BaseAttributeProperty; 36 import org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype.NewTypesFactory; 37 import org.netbeans.modules.xml.xam.ComponentEvent; 38 import org.netbeans.modules.xml.xam.Named; 39 import org.openide.ErrorManager; 40 import org.openide.nodes.Children; 41 import org.openide.nodes.Node; 42 import org.openide.util.NbBundle; 43 44 45 51 public abstract class WSDLNamedElementNode extends WSDLElementContainerNode { 52 public static final String NAME_PROP = "name"; 53 54 private NamedPropertyAdapter mPropertyAdapter; 55 private String nameAttributeName; 56 57 public WSDLNamedElementNode(Children children, 58 WSDLComponent element, 59 NewTypesFactory newTypesFactory) { 60 super(children, element, newTypesFactory); 61 } 62 public WSDLNamedElementNode(Children children, 63 WSDLComponent element) { 64 super(children, element); 65 } 66 67 68 public void setNamedPropertyAdapter(NamedPropertyAdapter adapter) { 69 nameAttributeName = Named.NAME_PROPERTY; 70 this.mPropertyAdapter = adapter; 71 if(this.mPropertyAdapter != null) { 72 super.setName(this.mPropertyAdapter.getName()); 73 } 74 } 75 76 public void setNamedPropertyAdapter(String attributeName, NamedPropertyAdapter adapter) { 77 nameAttributeName = attributeName; 78 this.mPropertyAdapter = adapter; 79 if(this.mPropertyAdapter != null) { 80 super.setName(this.mPropertyAdapter.getName()); 81 } 82 } 83 84 @Override 85 public void setName(String name) { 86 if(this.mPropertyAdapter != null && isEditable()) { 87 this.mPropertyAdapter.setName(name); 88 } 89 90 } 91 92 @Override 93 public String getName() { 94 if (super.getName() == null) 95 return ""; 96 return super.getName(); 97 } 98 99 100 @Override 102 public boolean canRename() { 103 return isEditable(); 104 } 105 106 @Override 107 protected Node.Property createAttributeProperty(QName attrQName) { 108 Node.Property attrValueProperty = null; 109 try { 110 String attrName = attrQName.getLocalPart(); 111 if(attrName.equals(nameAttributeName) && mPropertyAdapter != null) { attrValueProperty = new BaseAttributeProperty(mPropertyAdapter, 114 String .class, 115 "getName", 116 "setName"); 117 attrValueProperty.setName(NbBundle.getMessage(WSDLNamedElementNode.class, "PROP_NAME_NAME")); 118 119 } else { 120 attrValueProperty = super.createAttributeProperty(attrQName); 121 } 122 123 } catch(Exception ex) { 124 mLogger.log(Level.SEVERE, "failed to create property sheet for "+ getWSDLComponent(), ex); 125 ErrorManager.getDefault().notify(ex); 126 } 127 return attrValueProperty; 128 } 129 130 131 132 @Override 133 public void valueChanged(ComponentEvent evt) { 134 Object source = evt.getSource(); 135 if(!(source instanceof WSDLComponent)) { 136 return; 137 } 138 139 WSDLComponent wsdlComponent = (WSDLComponent) source; 140 141 if(!isSameAsMyWSDLElement(wsdlComponent)) { 142 return; 143 } 144 145 String nodeName = getName(); 146 String nameAttrValue = ""; 147 if (mPropertyAdapter != null) { 148 nameAttrValue = mPropertyAdapter.getName(); 149 } else { 150 if(nameAttributeName != null) { 151 nameAttrValue = wsdlComponent.getAttribute(new StringAttribute(nameAttributeName)); 152 } 153 } 154 155 if(nameAttrValue != null && !nameAttrValue.equals(nodeName)) { 156 super.setName(nameAttrValue); 157 setDisplayName(nameAttrValue); 158 } 159 160 super.valueChanged(evt); 161 } 162 163 164 165 166 } 167 | Popular Tags |