synchronized from quantum plugin
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / actions / DisconnectAction.java
1 package com.quantum.actions;
2
3 import java.util.Iterator;
4 import java.util.List;
5 import java.util.Vector;
6
7 import com.quantum.Messages;
8 import com.quantum.QuantumPlugin;
9 import com.quantum.model.Bookmark;
10 import com.quantum.model.ConnectionException;
11 import com.quantum.view.bookmark.BookmarkNode;
12
13 import org.eclipse.jface.viewers.IStructuredSelection;
14 import org.eclipse.ui.IViewPart;
15 import org.eclipse.ui.actions.SelectionListenerAction;
16
17 /**
18  * Disconnects from the database
19  * 
20  * @author root
21  */
22 public class DisconnectAction extends SelectionListenerAction {
23     private IViewPart view;
24     private List selections = new Vector();
25
26     /**
27      * @param text
28      */
29     public DisconnectAction(IViewPart view) {
30         super(Messages.getString(DisconnectAction.class.getName() + ".text"));
31         this.view = view;
32         setImageDescriptor(
33             QuantumPlugin.getImageDescriptor("disconnect.gif")); //$NON-NLS-1$
34     }
35
36
37     public void run() {
38         for (Iterator i = this.selections.iterator(); i.hasNext();) {
39             Bookmark bookmark = (Bookmark) i.next();
40             try {
41                 bookmark.disconnect();
42             } catch (ConnectionException e) {
43                 e.printStackTrace();
44             }
45         }
46         updateStatusLine(getMessage("message"));
47     }
48
49     private String getMessage(String key) {
50         return Messages.getString(getClass().getName() + "." + key);
51     }
52     
53     /**
54      * Updates the message shown in the status line.
55      *
56      * @param message the message to display
57      */
58     protected void updateStatusLine(String message) {
59         this.view.getViewSite().getActionBars().getStatusLineManager().setMessage(message);
60     }
61     
62
63     /**
64      * 
65      */
66     public boolean updateSelection(IStructuredSelection selection) {
67         boolean enabled = super.updateSelection(selection);
68         this.selections.clear();
69         for (Iterator i = selection.iterator(); enabled && i.hasNext(); ) {
70             Object object = i.next();
71             if (object instanceof BookmarkNode) {
72                 BookmarkNode node = (BookmarkNode) object;
73                 this.selections.add(node.getBookmark());
74                 enabled &= node.getBookmark().isConnected();
75             } else {
76                 enabled = false;
77             }
78         }
79         return enabled;
80     }
81 }