Auto refresh quick search view
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 12 Mar 2018 12:10:24 +0000 (13:10 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 12 Mar 2018 12:10:24 +0000 (13:10 +0100)
org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/QuickSearchView.java

index 50340be5afd7f50d679bbbb71754a57642365ba0..e0afd192921a5d29a353f214e76c86a8894da059 100644 (file)
@@ -6,6 +6,9 @@ import javax.jcr.NodeIterator;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryResult;
 
@@ -81,6 +84,20 @@ public class QuickSearchView extends ViewPart implements Refreshable {
                entityViewer = createListPart(parent, new EntitySingleColumnLabelProvider(resourcesService, activitiesService,
                                peopleService, systemWorkbenchService));
                refreshFilteredList();
+
+               try {
+                       session.getWorkspace().getObservationManager().addEventListener(new EventListener() {
+
+                               @Override
+                               public void onEvent(EventIterator events) {
+                                       parent.getDisplay().asyncExec(() -> refreshFilteredList());
+                               }
+                       }, Event.PROPERTY_CHANGED | Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED, "/", true, null,
+                                       new String[] { ConnectTypes.CONNECT_ENTITY }, true);
+               } catch (RepositoryException e) {
+                       throw new SuiteWorkbenchException("Cannot add JCR observer", e);
+               }
+
        }
 
        public void addFilterPanel(Composite parent) {
@@ -223,11 +240,11 @@ public class QuickSearchView extends ViewPart implements Refreshable {
        public void setResourcesService(ResourcesService resourcesService) {
                this.resourcesService = resourcesService;
        }
-       
+
        public void setActivitiesService(ActivitiesService activitiesService) {
                this.activitiesService = activitiesService;
        }
-       
+
        public void setPeopleService(PeopleService peopleService) {
                this.peopleService = peopleService;
        }