-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
package org.argeo.eclipse.ui.jcr;
import java.util.ArrayList;
import org.argeo.eclipse.ui.EclipseUiException;
import org.eclipse.swt.widgets.Display;
-/** {@link EventListener} which simplifies running actions within the UI thread. */
+/**
+ * {@link EventListener} which simplifies running actions within the UI thread.
+ */
public abstract class AsyncUiEventListener implements EventListener {
-// private final static Log logSuper = LogFactory
-// .getLog(AsyncUiEventListener.class);
+ // private final static Log logSuper = LogFactory
+ // .getLog(AsyncUiEventListener.class);
private final Log logThis = LogFactory.getLog(getClass());
private final Display display;
}
/** Called asynchronously in the UI thread. */
- protected abstract void onEventInUiThread(List<Event> events)
- throws RepositoryException;
+ protected abstract void onEventInUiThread(List<Event> events) throws RepositoryException;
/**
* Whether these events should be processed in the UI or skipped with no UI
* job created.
*/
- protected Boolean willProcessInUiThread(List<Event> events)
- throws RepositoryException {
+ protected Boolean willProcessInUiThread(List<Event> events) throws RepositoryException {
return true;
}
throw new EclipseUiException("Cannot test skip events " + events, e);
}
-// Job job = new Job("JCR Events") {
-// protected IStatus run(IProgressMonitor monitor) {
-// if (display.isDisposed()) {
-// logSuper.warn("Display is disposed cannot update UI");
-// return Status.CANCEL_STATUS;
-// }
+ // Job job = new Job("JCR Events") {
+ // protected IStatus run(IProgressMonitor monitor) {
+ // if (display.isDisposed()) {
+ // logSuper.warn("Display is disposed cannot update UI");
+ // return Status.CANCEL_STATUS;
+ // }
- display.asyncExec(new Runnable() {
- public void run() {
- try {
- onEventInUiThread(events);
- } catch (RepositoryException e) {
- throw new EclipseUiException("Cannot process events "
- + events, e);
- }
+ if (!display.isDisposed())
+ display.asyncExec(new Runnable() {
+ public void run() {
+ try {
+ onEventInUiThread(events);
+ } catch (RepositoryException e) {
+ throw new EclipseUiException("Cannot process events " + events, e);
}
- });
+ }
+ });
-// return Status.OK_STATUS;
-// }
-// };
-// job.schedule();
+ // return Status.OK_STATUS;
+ // }
+ // };
+ // job.schedule();
}
}