X-Git-Url: http://git.phpeclipse.com 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 index 0000000..03a7f55 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/tableview/ResultSetAction.java @@ -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(); + } +}