KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > db > explorer > actions > DisconnectAction


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 package org.netbeans.modules.db.explorer.actions;
21
22 import java.text.MessageFormat JavaDoc;
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 JavaDoc() {
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 JavaDoc exc) {
71                         String JavaDoc message = MessageFormat.format(bundle().getString("ERR_UnableToDisconnect"), new String JavaDoc[] {node.getName(), exc.getMessage()}); // NOI18N
72
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(message, NotifyDescriptor.ERROR_MESSAGE));
73                     }
74                 }
75             }
76         }, 0);
77     }
78 }
79
Popular Tags