X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.akb.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fakb%2Fui%2Feditors%2FJdbcTestPage.java;h=f159195b30dd79eea222172cf390c519656bfe56;hb=44b4c78e6a082d51d0410c3995b5edf353d417b9;hp=65c59d20c5c0f4a4f09ae8bcb149f93d4a3fa1cf;hpb=334b8d38cca7e1305de143b8457e07c34f527d88;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcTestPage.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcTestPage.java index 65c59d20c..f159195b3 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcTestPage.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcTestPage.java @@ -14,6 +14,8 @@ import org.argeo.slc.SlcException; import org.argeo.slc.akb.AkbNames; import org.argeo.slc.akb.AkbService; import org.argeo.slc.akb.ui.AkbUiUtils; +import org.argeo.slc.akb.ui.composites.ActiveItemHeaderComposite; +import org.argeo.slc.akb.ui.utils.Refreshable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; @@ -34,8 +36,10 @@ import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; /** Test JDBC. */ -public class JdbcTestPage extends FormPage implements AkbNames { - private Node node; +public class JdbcTestPage extends FormPage implements AkbNames, Refreshable { + private Node currItem; + // A template or an active environment + private Node currEnv; private AkbService akbService; private TableViewer viewer = null; @@ -44,10 +48,11 @@ public class JdbcTestPage extends FormPage implements AkbNames { private PreparedStatement statement; public JdbcTestPage(AkbService akbService, FormEditor editor, String id, - String title, Node node) { + String title, Node currEnv, Node currItem) { super(editor, id, title); this.akbService = akbService; - this.node = node; + this.currItem = currItem; + this.currEnv = currEnv; } protected void createFormContent(IManagedForm managedForm) { @@ -58,6 +63,14 @@ public class JdbcTestPage extends FormPage implements AkbNames { parent.setLayout(AkbUiUtils.gridLayoutNoBorder()); FormToolkit toolkit = getEditor().getToolkit(); + + // the header + ActiveItemHeaderComposite header = new ActiveItemHeaderComposite( + parent, SWT.NONE, toolkit, managedForm, currEnv, currItem, + akbService); + header.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); + + // the table Table table = toolkit.createTable(parent, SWT.VIRTUAL); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); table.setHeaderVisible(true); @@ -67,40 +80,54 @@ public class JdbcTestPage extends FormPage implements AkbNames { viewer.setContentProvider(contentProvider); // viewer.setLabelProvider(new ColumnLabelProvider(){}); - statement = akbService.prepareJdbcQuery(node); - PrivilegedJob job = new PrivilegedJob("Execute query on " + node) { - - @Override - protected IStatus doRun(IProgressMonitor progressMonitor) { - try { - final ResultSet resultSet = statement.executeQuery(); - getEditorSite().getWorkbenchWindow().getShell() - .getDisplay().syncExec(new Runnable() { - - @Override - public void run() { - viewer.setInput(resultSet); - } - }); - return Status.OK_STATUS; - } catch (SQLException e) { - throw new SlcException("Cannot execute " + node, e); + forceRefresh(null); + } + + public void forceRefresh(Object object) { + silentlyCloseStatement(); + statement = akbService.prepareJdbcQuery(currEnv, currItem); + if (statement != null) { + PrivilegedJob job = new PrivilegedJob("Execute query on " + + currItem) { + + @Override + protected IStatus doRun(IProgressMonitor progressMonitor) { + try { + final ResultSet resultSet = statement.executeQuery(); + getEditorSite().getWorkbenchWindow().getShell() + .getDisplay().syncExec(new Runnable() { + + @Override + public void run() { + viewer.setInput(resultSet); + } + }); + return Status.OK_STATUS; + } catch (SQLException e) { + throw new SlcException("Cannot execute " + currItem, e); + } } - } - }; - job.schedule(); + }; + job.schedule(); + } } - @Override - public void dispose() { + private void silentlyCloseStatement() { try { - statement.close(); - statement.getConnection().close(); + if (statement != null) { + statement.close(); + statement.getConnection().close(); + } } catch (SQLException e) { // silent } } + @Override + public void dispose() { + silentlyCloseStatement(); + } + private class JdbcTestContentProvider implements ILazyContentProvider { private TableViewer viewer; private ResultSet resultSet;