KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > ejbcore > ui > logicalview > ejb > session > SessionNode


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
20
21 package org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.session;
22
23 import javax.swing.Action JavaDoc;
24 import org.netbeans.api.java.classpath.ClassPath;
25 import org.netbeans.modules.j2ee.api.ejbjar.EjbReference;
26 import org.netbeans.modules.j2ee.dd.api.ejb.Session;
27 import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.action.DeleteEJBDialog;
28 import org.openide.actions.*;
29 import org.openide.loaders.DataObject;
30 import org.openide.util.HelpCtx;
31 import org.openide.util.Utilities;
32 import org.openide.util.actions.SystemAction;
33 import java.awt.datatransfer.Transferable JavaDoc;
34 import java.beans.PropertyChangeEvent JavaDoc;
35 import java.beans.PropertyChangeListener JavaDoc;
36 import java.io.IOException JavaDoc;
37 import java.util.ArrayList JavaDoc;
38 import java.util.List JavaDoc;
39 import org.netbeans.modules.j2ee.dd.api.ejb.EjbJar;
40 import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.shared.EjbTransferable;
41 import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.shared.EjbViewController;
42 import org.openide.util.WeakListeners;
43 import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.action.AddActionGroup;
44 import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.action.GoToSourceActionGroup;
45 import org.openide.cookies.OpenCookie;
46 import org.openide.nodes.AbstractNode;
47 import org.openide.nodes.Node;
48 import org.openide.util.Lookup;
49 import org.openide.util.lookup.AbstractLookup;
50 import org.openide.util.lookup.InstanceContent;
51
52
53 /**
54  * @author Chris Webster
55  * @author Ludovic Champenois
56  * @author Martin Adamek
57  */

58 public final class SessionNode extends AbstractNode implements OpenCookie {
59     
60     private final PropertyChangeListener JavaDoc nameChangeListener;
61     private final EjbViewController ejbViewController;
62     
63     public SessionNode(Session session, EjbJar ejbJar, ClassPath classPath) {
64         this(new InstanceContent(), session, ejbJar, classPath);
65     }
66     
67     private SessionNode(InstanceContent instanceContent, Session session, EjbJar ejbJar, ClassPath classPath) {
68         super(new SessionChildren(session, classPath), new AbstractLookup(instanceContent));
69         setIconBaseWithExtension("org/netbeans/modules/j2ee/ejbcore/ui/logicalview/ejb/session/SessionNodeIcon.gif");
70         setName(session.getEjbName() + "");
71         ejbViewController = new EjbViewController(session, ejbJar, classPath);
72         setDisplayName();
73         nameChangeListener = new PropertyChangeListener JavaDoc() {
74             public void propertyChange(PropertyChangeEvent JavaDoc pce) {
75                 setDisplayName();
76             }
77         };
78         session.addPropertyChangeListener(WeakListeners.propertyChange(nameChangeListener, session));
79         instanceContent.add(this);
80         instanceContent.add(ejbViewController.getBeanClass());
81         if (ejbViewController.getBeanDo() != null) {
82             instanceContent.add(ejbViewController.getBeanDo());
83         }
84         EjbReference ejbReference = ejbViewController.createEjbReference();
85         if (ejbReference != null) {
86             instanceContent.add(ejbReference);
87         }
88     }
89     
90     private void setDisplayName() {
91         setDisplayName(ejbViewController.getDisplayName());
92     }
93     
94     public Action JavaDoc[] getActions(boolean context) {
95         int nodesCount = Utilities.actionsGlobalContext().lookup(new Lookup.Template<Node>(Node.class)).allInstances().size();
96         List JavaDoc<SystemAction> list = new ArrayList JavaDoc<SystemAction>();
97         list.add(SystemAction.get(OpenAction.class));
98         list.add(null);
99         list.add(SystemAction.get(DeleteAction.class));
100         if (nodesCount == 1) {
101             list.add(SystemAction.get(AddActionGroup.class));
102             list.add(null);
103             list.add(SystemAction.get(GoToSourceActionGroup.class));
104         }
105         return list.toArray(new SystemAction[list.size()]);
106     }
107     
108     public HelpCtx getHelpCtx() {
109         return HelpCtx.DEFAULT_HELP;
110     }
111     
112     public boolean canDestroy() {
113         return true;
114     }
115     
116     public void destroy() throws IOException JavaDoc {
117         super.destroy();
118         String JavaDoc deleteOptions = DeleteEJBDialog.open(ejbViewController.getDisplayName());
119         if (!deleteOptions.equals(DeleteEJBDialog.DELETE_NOTHING)) {
120             if (deleteOptions.equals(DeleteEJBDialog.DELETE_ONLY_DD)) {
121                 ejbViewController.delete(false);
122             } else {
123                 ejbViewController.delete(true);
124             }
125         }
126     }
127     
128     public boolean canCopy() {
129         return true;
130     }
131     
132     public boolean canCut() {
133         return true;
134     }
135     
136     public Transferable JavaDoc clipboardCopy() throws IOException JavaDoc {
137         EjbReference ejbRef = ejbViewController.createEjbReference();
138         StringBuffer JavaDoc ejbRefString = new StringBuffer JavaDoc();
139         if (ejbRef.supportsRemoteInvocation()) {
140             ejbRefString.append(ejbViewController.getRemoteStringRepresentation("Session"));
141         }
142         if (ejbRef.supportsLocalInvocation()) {
143             ejbRefString.append(ejbViewController.getLocalStringRepresentation("Session"));
144         }
145         return new EjbTransferable(ejbRefString.toString(), ejbRef);
146     }
147     
148     public Transferable JavaDoc clipboardCut() throws IOException JavaDoc {
149         return clipboardCopy();
150     }
151     
152     public void open() {
153         DataObject dataObject = ejbViewController.getBeanDo();
154         if (dataObject != null) {
155             OpenCookie cookie = dataObject.getCookie(OpenCookie.class);
156             if(cookie != null){
157                 cookie.open();
158             }
159         }
160     }
161     
162     public Action JavaDoc getPreferredAction() {
163         return SystemAction.get(OpenAction.class);
164     }
165     
166     /**
167      * Adds possibility to display custom delete dialog
168      */

169     public Object JavaDoc getValue(String JavaDoc attributeName) {
170         Object JavaDoc retValue;
171         if ("customDelete".equals(attributeName)) {
172             retValue = Boolean.TRUE;
173         } else {
174             retValue = super.getValue(attributeName);
175         }
176         return retValue;
177     }
178
179 }
180
Popular Tags