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;
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;
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) {
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);
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;
col.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
- return ((Object[]) element)[index].toString();
+ Object obj = ((Object[]) element)[index];
+ if (obj == null)
+ return null;
+ return obj.toString();
}
});
}