+ private void asynchronousRefresh() {
+ RefreshJob job = new RefreshJob(artifactTxt.getText(), viewer,
+ getSite().getShell().getDisplay());
+ job.setUser(true);
+ job.schedule();
+ }
+
+ private class RefreshJob extends PrivilegedJob {
+ private TableViewer viewer;
+ private String filter;
+ private Display display;
+
+ public RefreshJob(String filter, TableViewer viewer, Display display) {
+ super("Get bundle list");
+ this.filter = filter;
+ this.viewer = viewer;
+ this.display = display;
+ }
+
+ @Override
+ protected IStatus doRun(IProgressMonitor progressMonitor) {
+ try {
+ ArgeoMonitor monitor = new EclipseArgeoMonitor(progressMonitor);
+ monitor.beginTask("Getting bundle list", -1);
+ final List<Node> result = JcrUtils
+ .nodeIteratorToList(listBundleArtifacts(session, filter));
+
+ 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);
+ }
+ return Status.OK_STATUS;
+ }
+ }
+