X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Feditors%2FDistributionOverviewPage.java;h=4401f7da9b2574442e296eeeb28d07c61e9eabdc;hb=b7ad99f6fc4414eeb82b9a4ae65aa20e02af66ce;hp=403617654b0c443a5d04f4b09eaefa08e9ccce47;hpb=de4970e4ea18056ef32137834bb0ac59b23117ce;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java index 403617654..4401f7da9 100644 --- a/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java +++ b/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistributionOverviewPage.java @@ -41,6 +41,7 @@ import org.argeo.slc.SlcException; import org.argeo.slc.client.ui.dist.DistConstants; import org.argeo.slc.client.ui.dist.DistImages; import org.argeo.slc.client.ui.dist.DistPlugin; +import org.argeo.slc.client.ui.dist.PrivilegedJob; import org.argeo.slc.client.ui.dist.commands.DeleteArtifacts; import org.argeo.slc.client.ui.dist.utils.CommandHelpers; import org.argeo.slc.client.ui.dist.utils.NodeViewerComparator; @@ -49,7 +50,6 @@ import org.argeo.slc.jcr.SlcTypes; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -73,6 +73,7 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Table; @@ -97,9 +98,9 @@ public class DistributionOverviewPage extends FormPage implements SlcNames { // This page widgets private NodeViewerComparator comparator; private TableViewer viewer; - private Text artifactTxt; private FormToolkit tk; private Composite header; + private Text artifactTxt; private final static String FILTER_HELP_MSG = "Enter filter criterion separated by a space"; public DistributionOverviewPage(FormEditor formEditor, String title, @@ -109,32 +110,37 @@ public class DistributionOverviewPage extends FormPage implements SlcNames { } private void asynchronousRefresh() { - refreshFilteredList(); - // FIXME Does not work yet: how can the job set the viewer input ? - // RefreshJob job = new RefreshJob(session, artifactTxt.getText()); - // job.setUser(true); - // job.schedule(); - // viewer.setInput(nodes); + RefreshJob job = new RefreshJob(artifactTxt.getText(), viewer, + getSite().getShell().getDisplay()); + job.setUser(true); + job.schedule(); } - private class RefreshJob extends Job { - private Session session; - private List nodes; + private class RefreshJob extends PrivilegedJob { + private TableViewer viewer; private String filter; + private Display display; - public RefreshJob(Session session, String filter, List nodes) { + public RefreshJob(String filter, TableViewer viewer, Display display) { super("Get bundle list"); - this.session = session; + this.filter = filter; + this.viewer = viewer; + this.display = display; } @Override - protected IStatus run(IProgressMonitor progressMonitor) { + protected IStatus doRun(IProgressMonitor progressMonitor) { try { ArgeoMonitor monitor = new EclipseArgeoMonitor(progressMonitor); monitor.beginTask("Getting bundle list", -1); - List result = JcrUtils + final List result = JcrUtils .nodeIteratorToList(listBundleArtifacts(session, filter)); - nodes.addAll(result); + + display.asyncExec(new Runnable() { + public void run() { + viewer.setInput(result); + } + }); } catch (Exception e) { return new Status(IStatus.ERROR, DistPlugin.ID, "Cannot get bundle list", e); @@ -331,7 +337,7 @@ public class DistributionOverviewPage extends FormPage implements SlcNames { // Version col = new TableViewerColumn(viewer, SWT.NONE); - col.getColumn().setWidth(100); + col.getColumn().setWidth(130); col.getColumn().setText("Version"); col.setLabelProvider(new ColumnLabelProvider() { @Override