]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/views/JcrProcessListView.java
Make UI more reactive
[gpl/argeo-slc.git] / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / views / JcrProcessListView.java
index f6a20dc10194e23fc3b963b0609f2d6044083d66..4e2cf8015b37c3d42c81be47dbc06bff66118571 100644 (file)
@@ -34,14 +34,14 @@ import javax.jcr.query.Query;
 import org.argeo.eclipse.ui.jcr.AsyncUiEventListener;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
+import org.argeo.slc.SlcNames;
+import org.argeo.slc.SlcTypes;
 import org.argeo.slc.client.ui.ClientUiPlugin;
 import org.argeo.slc.client.ui.SlcImages;
 import org.argeo.slc.client.ui.editors.ProcessEditor;
 import org.argeo.slc.client.ui.editors.ProcessEditorInput;
 import org.argeo.slc.execution.ExecutionProcess;
 import org.argeo.slc.jcr.SlcJcrUtils;
-import org.argeo.slc.jcr.SlcNames;
-import org.argeo.slc.jcr.SlcTypes;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.DoubleClickEvent;
 import org.eclipse.jface.viewers.IDoubleClickListener;
@@ -50,6 +50,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.rap.rwt.service.ServerPushSession;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
@@ -64,7 +65,9 @@ public class JcrProcessListView extends ViewPart {
        public static final String ID = ClientUiPlugin.ID + ".jcrProcessListView";
 
        private TableViewer viewer;
+       private ServerPushSession pushSession;
 
+       private Repository repository;
        private Session session;
 
        private EventListener processesObserver;
@@ -74,6 +77,14 @@ public class JcrProcessListView extends ViewPart {
        private Integer queryLimit = 2000;
 
        public void createPartControl(Composite parent) {
+               pushSession = new ServerPushSession();
+               pushSession.start();
+               try {
+                       session = repository.login();
+               } catch (RepositoryException re) {
+                       throw new SlcException("Unable to log in Repository " + repository,
+                                       re);
+               }
                Table table = createTable(parent);
                viewer = new TableViewer(table);
                viewer.setLabelProvider(new LabelProvider());
@@ -241,24 +252,16 @@ public class JcrProcessListView extends ViewPart {
 
        }
 
-       @Deprecated
-       public void setSession(Session session) {
-               this.session = session;
-       }
-
        public void dispose() {
                JcrUtils.unregisterQuietly(session.getWorkspace(), processesObserver);
                JcrUtils.logoutQuietly(session);
+               if (pushSession != null)
+                       pushSession.stop();
                super.dispose();
        }
 
        public void setRepository(Repository repository) {
-               try {
-                       session = repository.login();
-               } catch (RepositoryException re) {
-                       throw new SlcException("Unable to log in Repository " + repository,
-                                       re);
-               }
+               this.repository = repository;
        }
 
 }
\ No newline at end of file