initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / actions / ViewTableDetailsAction.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/actions/ViewTableDetailsAction.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/actions/ViewTableDetailsAction.java
new file mode 100644 (file)
index 0000000..5215912
--- /dev/null
@@ -0,0 +1,66 @@
+package com.quantum.actions;
+
+import java.sql.Connection;
+import java.util.List;
+
+import com.quantum.Messages;
+import com.quantum.QuantumPlugin;
+import com.quantum.model.Bookmark;
+import com.quantum.model.Entity;
+import com.quantum.sql.SQLResults;
+import com.quantum.util.connection.ConnectionUtil;
+import com.quantum.view.ViewHelper;
+import com.quantum.view.bookmark.EntityNode;
+import com.quantum.view.tableview.TableView;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.actions.SelectionListenerAction;
+
+public class ViewTableDetailsAction extends SelectionListenerAction  {
+       private IViewPart view;
+    private ConnectionUtil connectionUtil = new ConnectionUtil();
+       
+       public ViewTableDetailsAction(IViewPart view) {
+        super(Messages.getString(ViewTableDetailsAction.class, "text"));
+        setImageDescriptor(QuantumPlugin.getImageDescriptor("table.gif")); //$NON-NLS-1$
+               this.view = view;
+       }
+
+       public void run() {
+        Entity entity = getEntity();
+               StringBuffer query = new StringBuffer();
+               query.append(Messages.getString("MetaDataKey")+Messages.getString("MetaDataKeySeparator")); //$NON-NLS-1$ //$NON-NLS-2$
+           query.append(entity.getQuotedTableName());
+        Connection connection = connectionUtil.getConnection(getBookmark(), getShell());
+        if (connection != null) {
+            SQLResults results = ViewHelper.tryGetResults(view, connection, query.toString());
+            if (results != null && ! results.isError()) 
+                TableView.getInstance().loadQuery(entity.getBookmark(), results);
+        }
+       }
+       public void selectionChanged(IAction action, ISelection selection) {
+       }
+    protected Bookmark getBookmark() {
+        return getEntity().getBookmark();
+    }
+    protected Shell getShell() {
+        return this.view.getViewSite().getShell();
+    }
+    protected Entity getEntity() {
+        List list = getSelectedNonResources();
+        return ((EntityNode) list.get(0)).getEntity();
+    }
+
+    /**
+     * @see org.eclipse.ui.actions.SelectionListenerAction#updateSelection(org.eclipse.jface.viewers.IStructuredSelection)
+     */
+    protected boolean updateSelection(IStructuredSelection selection) {
+        boolean enabled = super.updateSelection(selection);
+        return enabled && selection.size() == 1;
+    }
+
+}