KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > websvc > core > webservices > ui > panels > ClientExplorerPanel


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.websvc.core.webservices.ui.panels;
20
21 import java.awt.Image JavaDoc;
22 import java.util.ArrayList JavaDoc;
23 import java.util.List JavaDoc;
24 import javax.swing.JPanel JavaDoc;
25 import java.beans.PropertyChangeEvent JavaDoc;
26 import java.beans.PropertyChangeListener JavaDoc;
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.registry.WebServiceMethod;
47
import org.netbeans.modules.websvc.api.client.WebServicesClientSupport;
48 import org.netbeans.modules.websvc.api.client.WebServicesClientView;
49
50 /**
51  *
52  * @author Peter Williams, Milan Kuchtiak
53  */

54 public class ClientExplorerPanel extends JPanel JavaDoc implements ExplorerManager.Provider, PropertyChangeListener JavaDoc {
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 JavaDoc<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 JavaDoc<Node>();
72             /*
73             clientSupport = WebServicesClientSupport.getWebServicesClientSupport(fo);
74             project = FileOwnerQuery.getOwner(fo);
75             clientView = WebServicesClientView.getWebServicesClientView(fo);
76              */

77         manager = new ExplorerManager();
78         selectedMethod = null;
79         
80         initComponents();
81         initUserComponents();
82     }
83     
84     /** This method is called from within the constructor to
85      * initialize the form.
86      * WARNING: Do NOT modify this code. The content of this method is
87      * always regenerated by the Form Editor.
88      */

89     private void initComponents() {//GEN-BEGIN:initComponents
90
java.awt.GridBagConstraints JavaDoc gridBagConstraints;
91
92         jLblTreeView = new javax.swing.JLabel JavaDoc();
93
94         setLayout(new java.awt.GridBagLayout JavaDoc());
95
96         jLblTreeView.setText(NbBundle.getMessage(ClientExplorerPanel.class, "LBL_AvailableWebServices"));
97         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(11, 11, 0, 11);
102         add(jLblTreeView, gridBagConstraints);
103
104     }//GEN-END:initComponents
105

106     
107     // Variables declaration - do not modify//GEN-BEGIN:variables
108
private javax.swing.JLabel JavaDoc jLblTreeView;
109     // End of variables declaration//GEN-END:variables
110

111     private void initUserComponents() {
112         treeView = new BeanTreeView();
113         treeView.setRootVisible(false);
114         treeView.setPopupAllowed(false);
115         
116         java.awt.GridBagConstraints JavaDoc gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
117         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
118         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
119         gridBagConstraints.insets = new java.awt.Insets JavaDoc(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                     //boolean jaxWsServices=false;
141
Node servicesNode = ProjectClientView.createClientView(projects[i]);
142                     //Node servicesNode = JAXWSClientView.getJAXWSClientView().createJAXWSClientView(projects[i]);
143
if (servicesNode!=null) {
144                         Children children = new Children.Array();
145                         Node[] nodes= servicesNode.getChildren().getNodes();
146                         if (nodes!=null && nodes.length>0) {
147                             //jaxWsServices=true;
148
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 // if (!jaxWsServices && srcFileProject==projects[i]) {
155
// FileObject wsdlFolder = WebServicesClientSupport.getWebServicesClientSupport(srcFileObject).getWsdlFolder();
156
// servicesNode = WebServicesClientView.getWebServicesClientView(srcFileObject).createWebServiceClientView(wsdlFolder);
157
// if (servicesNode!=null) {
158
// Children children = new Children.Array();
159
// Node[] nodes= servicesNode.getChildren().getNodes();
160
// if (nodes!=null && nodes.length>0) {
161
// jaxWsServices=true;
162
// Node[] filterNodes = new Node[nodes.length];
163
// for (int j=0;j<nodes.length;j++) filterNodes[j] = new FilterNode(nodes[j]);
164
// children.add(filterNodes);
165
// projectNodeList.add(new ProjectNode(children, rootNode));
166
// }
167
// }
168
// }
169
}
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         // !PW If we preselect a node, this can go away.
180
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 JavaDoc 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/* || node.getCookie(WebServiceMethod.class) != null*/) {
203                         // This is a method node.
204
selectedMethod = node;
205                         descriptor.setValid(true);
206                     } else {
207                         // This is not a method node.
208
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 JavaDoc getIcon(int type) {
226             return rootNode.getIcon(type);
227         }
228         
229         public Image JavaDoc getOpenedIcon(int type) {
230             return rootNode.getOpenedIcon(type);
231         }
232         
233     }
234     
235 }
236
Popular Tags