+ AtomicReference<ArrayList<CommandSessionImportEntry>> assignedImports = new AtomicReference<>();
+
+ private class SetImportsJob extends Job {
+
+ public SetImportsJob() {
+ super(Messages.SCLConsoleView_SetImports);
+ setUser(true);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ ArrayList<CommandSessionImportEntry> entries = assignedImports.getAndSet(null);
+ if (entries != null)
+ setCurrentImports(entries);
+ return Status.OK_STATUS;
+ } finally {
+ monitor.done();
+ }
+ }
+
+ @Override
+ public boolean shouldSchedule() {
+ return PlatformUI.isWorkbenchRunning();
+ }
+
+ @Override
+ public boolean shouldRun() {
+ return PlatformUI.isWorkbenchRunning();
+ }
+
+ }
+
+ SetImportsJob setImportsJob = new SetImportsJob();
+
+ private void scheduleSetCurrentImports(ArrayList<CommandSessionImportEntry> entries) {
+ boolean scheduled = assignedImports.getAndSet(entries) != null;
+ if (!scheduled)
+ setImportsJob.schedule();
+ }
+