1 19 20 package org.netbeans.modules.websvc.jaxrpc.nodes; 21 22 import java.awt.Image ; 23 import java.beans.PropertyChangeEvent ; 24 import java.beans.PropertyChangeListener ; 25 import javax.swing.Action ; 26 import org.openide.nodes.Children; 27 import org.openide.nodes.FilterNode; 28 import org.openide.nodes.Node; 29 import org.openide.filesystems.FileObject; 30 import org.openide.util.Lookup; 31 import org.netbeans.modules.websvc.api.registry.WebServicesRegistryView; 32 import org.netbeans.modules.websvc.core.webservices.action.ConfigureHandlerAction; 33 import org.netbeans.api.project.FileOwnerQuery; 34 import org.netbeans.api.project.Project; 35 import org.netbeans.modules.websvc.core.webservices.action.ConfigureHandlerCookie; 36 import org.netbeans.modules.websvc.api.client.WebServicesClientSupport; 37 import org.netbeans.modules.websvc.jaxrpc.ServiceInformation; 38 import org.netbeans.modules.websvc.wsdl.config.ServiceInformationImpl; 42 import org.openide.loaders.DataObject; 43 import org.openide.util.actions.SystemAction; 44 45 46 52 53 public class ServiceClientNode extends FilterNode implements PropertyChangeListener { 54 55 private String serviceName; 56 private Node registerNode; 57 private DataObject dobj; 58 59 public ServiceClientNode(Node wsdlNode, Node registerNode) { 60 super(wsdlNode, (registerNode != null) ? new FilterNode.Children(registerNode) : Children.LEAF); 61 62 this.registerNode = registerNode; 63 this.serviceName = null; 64 65 dobj = (DataObject) wsdlNode.getCookie(DataObject.class); 68 if(dobj != null) { 69 ServiceInformationImpl wsdlModel = new ServiceInformationImpl(dobj); 70 String [] serviceNames = wsdlModel.getServiceNames(); if(serviceNames != null && serviceNames.length > 0) { 72 this.serviceName = serviceNames[0]; 73 } 74 } 75 76 WebServicesRegistryView registryView = (WebServicesRegistryView) Lookup.getDefault().lookup(WebServicesRegistryView.class); 77 registryView.addPropertyChangeListener(this); 78 } 79 80 public void destroy() throws java.io.IOException { 81 super.destroy(); 82 83 WebServicesRegistryView registryView = (WebServicesRegistryView) Lookup.getDefault().lookup(WebServicesRegistryView.class); 84 registryView.removePropertyChangeListener(this); 85 } 86 87 public String getName() { 88 return (registerNode != null) ? registerNode.getName() : super.getName(); 89 } 90 91 public String getDisplayName() { 92 return (registerNode != null) ? registerNode.getDisplayName() : super.getDisplayName(); 93 } 94 95 public String getShortDescription() { 96 100 return registerNode != null ? registerNode.getShortDescription() : "Unregistered service"; 102 } 103 104 public Node.PropertySet[] getPropertySets() { 105 109 return registerNode != null ? registerNode.getPropertySets() : new Node.PropertySet [0]; 111 } 112 113 public Image getIcon(int type) { 114 Image wsdlIcon = super.getIcon(type); 116 117 return registerNode != null ? registerNode.getIcon(type) : wsdlIcon; 119 } 120 121 public Image getOpenedIcon(int type) { 122 Image wsdlOpenedIcon = super.getOpenedIcon(type); 124 125 return registerNode != null ? registerNode.getOpenedIcon(type) : wsdlOpenedIcon; 127 } 128 129 public Action [] getActions(boolean context) { 130 FileObject fo = dobj.getPrimaryFile(); 131 WebServicesClientSupport clientSupport = WebServicesClientSupport.getWebServicesClientSupport(fo); 132 if (clientSupport.getDeploymentDescriptor() == null) { 134 return new Action [] { 135 org.openide.util.actions.SystemAction.get( org.netbeans.modules.websvc.jaxrpc.actions.RefreshServiceAction.class ), 136 org.openide.util.actions.SystemAction.get( org.openide.actions.FindAction.class ), 137 null, 138 org.openide.util.actions.SystemAction.get( org.openide.actions.DeleteAction.class ), 139 null, 140 org.openide.util.actions.SystemAction.get( org.openide.actions.ToolsAction.class ), 141 null, 142 org.openide.util.actions.SystemAction.get( org.openide.actions.PropertiesAction.class ) 143 }; 144 } 145 return new Action [] { 146 org.openide.util.actions.SystemAction.get( org.netbeans.modules.websvc.jaxrpc.actions.RefreshServiceAction.class ), 147 org.openide.util.actions.SystemAction.get(ConfigureHandlerAction.class), 148 org.openide.util.actions.SystemAction.get( org.openide.actions.FindAction.class ), 149 null, 150 org.openide.util.actions.SystemAction.get( org.openide.actions.DeleteAction.class ), 153 null, 154 org.openide.util.actions.SystemAction.get( org.openide.actions.ToolsAction.class ), 155 null, 156 org.openide.util.actions.SystemAction.get( org.openide.actions.PropertiesAction.class ) 157 }; 158 } 159 160 public Node.Cookie getCookie(Class type) { 161 if (type == ConfigureHandlerCookie.class) { 162 FileObject fo = dobj.getPrimaryFile(); 163 Project project = FileOwnerQuery.getOwner(fo); 164 WebServicesClientSupport clientSupport = WebServicesClientSupport.getWebServicesClientSupport(fo); 165 if (clientSupport.getDeploymentDescriptor() != null) { return new ConfigureHandlerCookieImpl(serviceName, project, clientSupport, fo ); 167 } 168 } 169 else if (type == ServiceInformation.class){ 173 return new ServiceInformationImpl(dobj); 174 } 175 176 Node.Cookie result = super.getCookie(type); 177 178 if(result == null && registerNode != null) { 179 result = registerNode.getCookie(type); 180 } 181 182 return result; 183 } 184 185 public void propertyChange(PropertyChangeEvent evt) { 186 if(WebServicesRegistryView.WEB_SERVICE_ADDED.equals(evt.getPropertyName())) { 187 if(registerNode == null && serviceName != null) { 188 Node addedServiceNode = (Node) evt.getNewValue(); 189 if(serviceName.equalsIgnoreCase(addedServiceNode.getName())) { 192 registerNode = addedServiceNode; 193 setChildren(new FilterNode.Children(registerNode)); 194 fireIconChange(); 195 } 196 } 197 } else if(WebServicesRegistryView.WEB_SERVICE_REMOVED.equals(evt.getPropertyName())) { 198 if(registerNode != null && serviceName != null) { 199 String removedServiceName = (String ) evt.getOldValue(); 200 if(serviceName.equalsIgnoreCase(removedServiceName)) { 203 registerNode = null; 204 setChildren(Children.LEAF); 205 fireIconChange(); 206 } 207 } 208 } 209 } 210 } 211 212 | Popular Tags |