1 19 20 21 package org.netbeans.modules.j2ee.ejbcore.ui.logicalview.ejb.session; 22 23 import javax.swing.Action ; 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 ; 34 import java.beans.PropertyChangeEvent ; 35 import java.beans.PropertyChangeListener ; 36 import java.io.IOException ; 37 import java.util.ArrayList ; 38 import java.util.List ; 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 58 public final class SessionNode extends AbstractNode implements OpenCookie { 59 60 private final PropertyChangeListener 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 () { 74 public void propertyChange(PropertyChangeEvent 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 [] getActions(boolean context) { 95 int nodesCount = Utilities.actionsGlobalContext().lookup(new Lookup.Template<Node>(Node.class)).allInstances().size(); 96 List <SystemAction> list = new ArrayList <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 { 117 super.destroy(); 118 String 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 clipboardCopy() throws IOException { 137 EjbReference ejbRef = ejbViewController.createEjbReference(); 138 StringBuffer ejbRefString = new StringBuffer (); 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 clipboardCut() throws IOException { 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 getPreferredAction() { 163 return SystemAction.get(OpenAction.class); 164 } 165 166 169 public Object getValue(String attributeName) { 170 Object 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 |