Quantum version 2.4.1
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / tableview / ResultSetAction.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/tableview/ResultSetAction.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/tableview/ResultSetAction.java
new file mode 100644 (file)
index 0000000..03a7f55
--- /dev/null
@@ -0,0 +1,72 @@
+package com.quantum.view.tableview;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import com.quantum.sql.SQLResultSetResults;
+import com.quantum.ui.dialog.ExceptionDisplayDialog;
+import com.quantum.util.connection.ConnectionUtil;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.actions.SelectionListenerAction;
+
+/**
+ * @author BC Holmes
+ */
+public abstract class ResultSetAction extends SelectionListenerAction {
+       private IViewPart view;
+       private ConnectionUtil connectionUtil = new ConnectionUtil();
+       private final ISelectionProvider selectionProvider;
+       
+       /**
+        * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart)
+        */
+       public ResultSetAction(IViewPart view, ISelectionProvider selectionProvider) {
+               super("");
+               this.selectionProvider = selectionProvider;
+               this.view = view;
+               this.selectionProvider.addSelectionChangedListener(this);
+       }
+
+       public void run() {
+               try {
+                       IStructuredSelection selection = 
+                               (IStructuredSelection) this.selectionProvider.getSelection();
+                       if (!selection.isEmpty()) {
+                               SQLResultSetResults results = (SQLResultSetResults) selection.getFirstElement();
+                               executeResultSetAction(results);
+                       }
+               } catch (SQLException e) {
+                       ExceptionDisplayDialog.openError(getShell(), null, null, e);
+               } catch (RuntimeException e) {
+                       ExceptionDisplayDialog.openError(getShell(), null, null, e);
+               }
+       }
+
+       protected boolean updateSelection(IStructuredSelection selection) {
+               return selection != null && !selection.isEmpty();
+       }
+       /**
+        * @param results
+        * @throws SQLException
+        */
+       protected abstract void executeResultSetAction(SQLResultSetResults results) throws SQLException;
+
+       /**
+        * @param results
+        * @return
+        */
+       protected Connection getConnection(SQLResultSetResults results) {
+               return this.connectionUtil.connect(results.getBookmark(), getShell());
+       }
+
+       /**
+        * @return
+        */
+       private Shell getShell() {
+               return this.view.getSite().getShell();
+       }
+}