+ class ResultObserver extends AsyncUiEventListener {
+
+ public ResultObserver(Display display) {
+ super(display);
+ }
+
+ @Override
+ protected Boolean willProcessInUiThread(List<Event> events)
+ throws RepositoryException {
+ for (Event event : events) {
+ // getLog().debug("Received event " + event);
+ int eventType = event.getType();
+ if (eventType == Event.NODE_REMOVED)
+ return true;
+ // if (event.getType() == Event.PROPERTY_ADDED) {
+ String path = event.getPath();
+ // getLog().debug(path);
+ int index = path.lastIndexOf('/');
+ String propertyName = path.substring(index + 1);
+ // Property property = session.getProperty(path);
+ // if (!property.getName().equals(SLC_COMPLETED))
+ // return true;
+ if (propertyName.equals(SLC_COMPLETED)
+ || propertyName.equals(SLC_UUID)) {
+ // getLog().debug("Kept " + propertyName);
+ return true;
+ } else {
+ // getLog().debug("Skipped " + propertyName);
+ }
+ // } else if (eventType == Event.NODE_ADDED
+ // || eventType == Event.NODE_MOVED
+ // || eventType == Event.NODE_REMOVED) {
+ // return true;
+ // } else {
+ // }
+ }
+ return false;
+ }
+
+ protected void onEventInUiThread(List<Event> events)
+ throws RepositoryException {
+ if (getLog().isDebugEnabled())
+ getLog().debug("Refresh result list");
+ viewer.refresh();
+ }
+
+ }
+