1 19 20 21 package org.netbeans.modules.xml.wsdl.ui.view.treeeditor; 22 23 import java.awt.Image ; 24 import java.util.ArrayList ; 25 import java.util.Arrays ; 26 import java.util.List ; 27 import java.util.logging.Level ; 28 29 import javax.xml.namespace.QName ; 30 31 import org.netbeans.modules.xml.wsdl.model.Message; 32 import org.netbeans.modules.xml.wsdl.model.WSDLComponent; 33 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 34 import org.netbeans.modules.xml.wsdl.ui.actions.NameGenerator; 35 import org.netbeans.modules.xml.wsdl.ui.commands.ConstraintNamedPropertyAdapter; 36 import org.netbeans.modules.xml.wsdl.ui.extensibility.model.WSDLExtensibilityElements; 37 import org.netbeans.modules.xml.wsdl.ui.view.property.BaseAttributeProperty; 38 import org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype.DocumentationNewType; 39 import org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype.ExtensibilityElementNewTypesFactory; 40 import org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype.MessagePartNewType; 41 import org.netbeans.modules.xml.wsdl.ui.view.treeeditor.newtype.NewTypesFactory; 42 import org.openide.ErrorManager; 43 import org.openide.nodes.Node; 44 import org.openide.util.HelpCtx; 45 import org.openide.util.NbBundle; 46 import org.openide.util.Utilities; 47 import org.openide.util.datatransfer.NewType; 48 49 50 51 56 public class MessageNode extends WSDLExtensibilityElementNode { 57 58 Image ICON = Utilities.loadImage 59 ("org/netbeans/modules/xml/wsdl/ui/view/resources/message.png"); 60 61 62 private MessagePropertyAdapter mPropertyAdapter; 63 64 public MessageNode(Message wsdlConstruct) { 65 super(new GenericWSDLComponentChildren(wsdlConstruct), wsdlConstruct, new MessageNewTypesFactory()); 66 67 this.mPropertyAdapter = new MessagePropertyAdapter(); 68 super.setNamedPropertyAdapter(this.mPropertyAdapter); 69 } 70 71 @Override 72 public String getNameInLayer() { 73 return WSDLExtensibilityElements.ELEMENT_MESSAGE; 74 } 75 76 @Override 77 public Image getIcon(int type) { 78 return ICON; 79 } 80 81 @Override 82 public Image getOpenedIcon(int type) { 83 return ICON; 84 } 85 86 @Override 87 protected Node.Property createAttributeProperty(QName attrQName) { 88 Node.Property attrValueProperty = null; 89 try { 90 String attrName = attrQName.getLocalPart(); 91 if(attrName.equals(NAME_PROP)) { attrValueProperty = createNameProperty(); 95 96 } else { 97 attrValueProperty = super.createAttributeProperty(attrQName); 98 } 99 100 } catch(Exception ex) { 101 mLogger.log(Level.SEVERE, "failed to create property sheet for "+ getWSDLComponent(), ex); 102 ErrorManager.getDefault().notify(ex); 103 } 104 return attrValueProperty; 105 } 106 107 108 @Override 109 protected List <Node.Property> createAlwaysPresentAttributeProperty() throws Exception { 110 ArrayList <Node.Property> alwaysPresentAttrProperties = new ArrayList <Node.Property>(); 111 alwaysPresentAttrProperties.add(createNameProperty()); 112 113 return alwaysPresentAttrProperties; 114 } 115 116 117 private Node.Property createNameProperty() throws NoSuchMethodException { 118 Node.Property attrValueProperty; 119 attrValueProperty = new BaseAttributeProperty(mPropertyAdapter, 120 String .class, NAME_PROP); 121 attrValueProperty.setName(NbBundle.getMessage(MessageNode.class, "PROP_NAME_DISPLAYNAME")); 122 attrValueProperty.setShortDescription(NbBundle.getMessage(MessageNode.class, "MESSAGE_NAME_DESC")); 123 124 return attrValueProperty; 125 } 126 127 @Override 128 public HelpCtx getHelpCtx() { 129 return new HelpCtx(MessageNode.class); 130 } 131 132 public class MessagePropertyAdapter extends ConstraintNamedPropertyAdapter { 133 134 public MessagePropertyAdapter() { 135 super(getWSDLComponent()); 136 } 137 138 @Override 139 public boolean isNameExists(String name) { 140 WSDLModel document = getWSDLComponent().getModel(); 141 return NameGenerator.getInstance().isMessageExists(name, document); 142 } 143 144 } 145 146 public static final class MessageNewTypesFactory implements NewTypesFactory{ 147 148 public NewType[] getNewTypes(WSDLComponent def) { 149 ArrayList <NewType> list = new ArrayList <NewType>(); 150 list.add(new MessagePartNewType(def)); 151 if (def.getDocumentation() == null) { 152 list.add(new DocumentationNewType(def)); 153 } 154 list.addAll(Arrays.asList(new ExtensibilityElementNewTypesFactory(WSDLExtensibilityElements.ELEMENT_MESSAGE).getNewTypes(def))); 155 return list.toArray(new NewType[]{}); 156 } 157 158 } 159 160 @Override 161 public String getTypeDisplayName() { 162 return NbBundle.getMessage(MessageNode.class, "LBL_MessageNode_TypeDisplayName"); 163 } 164 } 165 | Popular Tags |