]> git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/AsyncUiEventListener.java
Provide Display to ui event listener
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui.jcr / src / main / java / org / argeo / eclipse / ui / jcr / AsyncUiEventListener.java
1 package org.argeo.eclipse.ui.jcr;
2
3 import javax.jcr.observation.EventIterator;
4 import javax.jcr.observation.EventListener;
5
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.core.runtime.IStatus;
8 import org.eclipse.core.runtime.Status;
9 import org.eclipse.core.runtime.jobs.Job;
10 import org.eclipse.swt.widgets.Display;
11
12 /** {@link EventListener} which simplifies running actions within the UI thread. */
13 public abstract class AsyncUiEventListener implements EventListener {
14 private final Display display;
15
16 public AsyncUiEventListener(Display display) {
17 super();
18 this.display = display;
19 }
20
21 /** Called asynchronously in the UI thread. */
22 protected abstract void onEventInUiThread(EventIterator events);
23
24 public void onEvent(final EventIterator events) {
25 Job job = new Job("JCR Events") {
26 protected IStatus run(IProgressMonitor monitor) {
27 //Display display = Display.getCurrent();
28 //Display display = PlatformUI.getWorkbench().getDisplay();
29
30 display.asyncExec(new Runnable() {
31 public void run() {
32 onEventInUiThread(events);
33 }
34 });
35 return Status.OK_STATUS;
36 }
37 };
38 job.schedule();
39
40 // PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
41 // public void run() {
42 // onEventInUiThread(events);
43 // }
44 // });
45 }
46 }