1 19 package org.netbeans.modules.websvc.core.webservices.ui.panels; 20 21 import java.awt.Image ; 22 import java.util.ArrayList ; 23 import java.util.List ; 24 import javax.swing.JPanel ; 25 import java.beans.PropertyChangeEvent ; 26 import java.beans.PropertyChangeListener ; 27 import org.netbeans.api.project.FileOwnerQuery; 28 import org.netbeans.api.project.Project; 29 import org.netbeans.api.project.ui.OpenProjects; 30 import org.netbeans.modules.websvc.api.jaxws.client.JAXWSClientView; 31 import org.netbeans.modules.websvc.api.jaxws.wsdlmodel.WsdlOperation; 32 import org.netbeans.modules.websvc.core.ProjectClientView; 33 import org.netbeans.modules.websvc.core.JaxWsUtils; 34 import org.netbeans.spi.project.ui.LogicalViewProvider; 35 36 import org.openide.DialogDescriptor; 37 import org.openide.explorer.ExplorerManager; 38 import org.openide.explorer.view.BeanTreeView; 39 import org.openide.filesystems.FileObject; 40 import org.openide.nodes.AbstractNode; 41 import org.openide.nodes.Children; 42 import org.openide.nodes.Node; 43 import org.openide.nodes.FilterNode; 44 import org.openide.util.NbBundle; 45 46 import org.netbeans.modules.websvc.api.client.WebServicesClientSupport; 48 import org.netbeans.modules.websvc.api.client.WebServicesClientView; 49 50 54 public class ClientExplorerPanel extends JPanel implements ExplorerManager.Provider, PropertyChangeListener { 55 56 private DialogDescriptor descriptor; 57 private ExplorerManager manager; 58 private BeanTreeView treeView; 59 private FileObject srcFileObject; 60 private Node selectedMethod; 61 private Project[] projects; 62 private Children rootChildren; 63 private Node explorerClientRoot; 64 private List <Node> projectNodeList; 65 66 public ClientExplorerPanel(FileObject srcFileObject) { 67 this.srcFileObject=srcFileObject; 68 projects = OpenProjects.getDefault().getOpenProjects(); 69 rootChildren = new Children.Array(); 70 explorerClientRoot = new AbstractNode(rootChildren); 71 projectNodeList = new ArrayList <Node>(); 72 77 manager = new ExplorerManager(); 78 selectedMethod = null; 79 80 initComponents(); 81 initUserComponents(); 82 } 83 84 89 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 91 92 jLblTreeView = new javax.swing.JLabel (); 93 94 setLayout(new java.awt.GridBagLayout ()); 95 96 jLblTreeView.setText(NbBundle.getMessage(ClientExplorerPanel.class, "LBL_AvailableWebServices")); 97 gridBagConstraints = new java.awt.GridBagConstraints (); 98 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 99 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 100 gridBagConstraints.weightx = 1.0; 101 gridBagConstraints.insets = new java.awt.Insets (11, 11, 0, 11); 102 add(jLblTreeView, gridBagConstraints); 103 104 } 106 107 private javax.swing.JLabel jLblTreeView; 109 111 private void initUserComponents() { 112 treeView = new BeanTreeView(); 113 treeView.setRootVisible(false); 114 treeView.setPopupAllowed(false); 115 116 java.awt.GridBagConstraints gridBagConstraints = new java.awt.GridBagConstraints (); 117 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 118 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 119 gridBagConstraints.insets = new java.awt.Insets (11, 11, 0, 11); 120 gridBagConstraints.weightx = 1.0; 121 gridBagConstraints.weighty = 1.0; 122 add(treeView, gridBagConstraints); 123 jLblTreeView.setLabelFor(treeView); 124 } 125 126 public ExplorerManager getExplorerManager() { 127 return manager; 128 } 129 130 public void addNotify() { 131 super.addNotify(); 132 manager.addPropertyChangeListener(this); 133 134 for (int i=0;i<projects.length;i++) { 135 Project srcFileProject = FileOwnerQuery.getOwner(srcFileObject); 136 if (srcFileProject!=null && JaxWsUtils.isProjectReferenceable (projects[i], srcFileProject)) { 137 LogicalViewProvider logicalProvider = (LogicalViewProvider)projects[i].getLookup().lookup(LogicalViewProvider.class); 138 if (logicalProvider!=null) { 139 Node rootNode = logicalProvider.createLogicalView(); 140 Node servicesNode = ProjectClientView.createClientView(projects[i]); 142 if (servicesNode!=null) { 144 Children children = new Children.Array(); 145 Node[] nodes= servicesNode.getChildren().getNodes(); 146 if (nodes!=null && nodes.length>0) { 147 Node[] filterNodes = new Node[nodes.length]; 149 for (int j=0;j<nodes.length;j++) filterNodes[j] = new FilterNode(nodes[j]); 150 children.add(filterNodes); 151 projectNodeList.add(new ProjectNode(children, rootNode)); 152 } 153 } 154 } 170 } 171 172 } 173 Node[] projectNodes = new Node[projectNodeList.size()]; 174 projectNodeList.<Node>toArray(projectNodes); 175 rootChildren.add(projectNodes); 176 manager.setRootContext(explorerClientRoot); 177 treeView.expandAll(); 178 179 descriptor.setValid(false); 181 } 182 183 public void removeNotify() { 184 manager.removePropertyChangeListener(this); 185 super.removeNotify(); 186 } 187 188 public void setDescriptor(DialogDescriptor descriptor) { 189 this.descriptor = descriptor; 190 } 191 192 public Node getSelectedMethod() { 193 return selectedMethod; 194 } 195 196 public void propertyChange(PropertyChangeEvent evt) { 197 if(evt.getSource() == manager) { 198 if(ExplorerManager.PROP_SELECTED_NODES.equals(evt.getPropertyName())) { 199 Node nodes[] = manager.getSelectedNodes(); 200 if(nodes != null && nodes.length > 0 ) { 201 Node node = nodes[0]; 202 if(node.getLookup().lookup(WsdlOperation.class)!=null) { 203 selectedMethod = node; 205 descriptor.setValid(true); 206 } else { 207 selectedMethod = null; 209 descriptor.setValid(false); 210 } 211 } 212 } 213 } 214 } 215 216 private class ProjectNode extends AbstractNode { 217 private Node rootNode; 218 219 ProjectNode(Children children, Node rootNode) { 220 super(children); 221 this.rootNode=rootNode; 222 setName(rootNode.getDisplayName()); 223 } 224 225 public Image getIcon(int type) { 226 return rootNode.getIcon(type); 227 } 228 229 public Image getOpenedIcon(int type) { 230 return rootNode.getOpenedIcon(type); 231 } 232 233 } 234 235 } 236 | Popular Tags |