1 19 20 package org.netbeans.modules.db.explorer.actions; 21 22 import java.text.MessageFormat ; 23 24 import org.openide.DialogDisplayer; 25 import org.openide.NotifyDescriptor; 26 import org.openide.nodes.Node; 27 import org.openide.util.RequestProcessor; 28 29 import org.netbeans.modules.db.explorer.infos.ConnectionNodeInfo; 30 import org.netbeans.modules.db.explorer.infos.DatabaseNodeInfo; 31 import org.netbeans.modules.db.explorer.nodes.DatabaseNode; 32 33 public class DisconnectAction extends DatabaseAction { 34 static final long serialVersionUID =-5994051723289754485L; 35 36 protected boolean enable(Node[] activatedNodes) { 37 if (activatedNodes == null || activatedNodes.length == 0) 38 return false; 39 40 for (int i = 0; i < activatedNodes.length; i++) { 41 Node node = activatedNodes[i]; 42 DatabaseNodeInfo info = (DatabaseNodeInfo) node.getCookie(DatabaseNodeInfo.class); 43 if (info != null) { 44 DatabaseNodeInfo nfo = info.getParent(DatabaseNode.CONNECTION); 45 if (nfo != null && nfo.getConnection() == null) 46 return false; 47 } else 48 return false; 49 } 50 return true; 51 } 52 53 protected int mode() { 54 return MODE_ALL; 55 } 56 57 public void performAction (Node[] activatedNodes) { 58 if (activatedNodes == null || activatedNodes.length == 0) 59 return; 60 61 final Node[] nodes = activatedNodes; 62 RequestProcessor.getDefault().post(new Runnable () { 63 public void run () { 64 for (int i = 0; i < nodes.length; i++) { 65 Node node = nodes[i]; 66 try { 67 DatabaseNodeInfo info = (DatabaseNodeInfo) node.getCookie(DatabaseNodeInfo.class); 68 ConnectionNodeInfo nfo = (ConnectionNodeInfo) info.getParent(DatabaseNode.CONNECTION); 69 nfo.disconnect(); 70 } catch(Exception exc) { 71 String message = MessageFormat.format(bundle().getString("ERR_UnableToDisconnect"), new String [] {node.getName(), exc.getMessage()}); DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(message, NotifyDescriptor.ERROR_MESSAGE)); 73 } 74 } 75 } 76 }, 0); 77 } 78 } 79 | Popular Tags |