Browser navigation
[gpl/argeo-suite.git] / org.argeo.suite.e4 / src / org / argeo / suite / e4 / parts / AbstractSuiteDashboard.java
index 96919019f66ef66a11789ec0d0df8db6a1c84687..521c1fca8741f107ceeb57a2e3255ab72ceb3288 100644 (file)
@@ -2,10 +2,14 @@ package org.argeo.suite.e4.parts;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import javax.inject.Inject;
 import javax.jcr.Node;
 import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.ui.eclipse.forms.FormToolkit;
 import org.argeo.cms.util.CmsUtils;
 import org.argeo.connect.SystemAppService;
@@ -16,6 +20,9 @@ import org.argeo.connect.ui.SystemWorkbenchService;
 import org.argeo.connect.util.ConnectJcrUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.JcrUtils;
+import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.rap.rwt.RWT;
+import org.eclipse.rap.rwt.client.service.BrowserNavigation;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -28,11 +35,16 @@ import org.eclipse.swt.widgets.Link;
 
 /** Generic dashboard for Argeo Suite applications */
 public abstract class AbstractSuiteDashboard {
+       private final static Log log = LogFactory.getLog(AbstractSuiteDashboard.class);
 
        // DEPENDENCY INJECTION
+       @Inject
        private Repository repository;
+       @Inject
        private ResourcesService resourcesService;
+       @Inject
        private SystemAppService systemAppService;
+       @Inject
        private SystemWorkbenchService systemWorkbenchService;
 
        private Session session;
@@ -40,17 +52,20 @@ public abstract class AbstractSuiteDashboard {
        // UI Objects
        private FormToolkit toolkit;
 
-       public void init()  {
+       // RAP specific
+       private BrowserNavigation browserNavigation;
+
+       public void init() {
                session = ConnectJcrUtils.login(repository);
-//             updateTooltip(input);
+               // updateTooltip(input);
        }
 
-//     private void updateTooltip(IEditorInput input) {
-//             if (input instanceof EntityEditorInput) {
-//                     EntityEditorInput sei = (EntityEditorInput) input;
-//                     sei.setTooltipText("My Dashboard");
-//             }
-//     }
+       // private void updateTooltip(IEditorInput input) {
+       // if (input instanceof EntityEditorInput) {
+       // EntityEditorInput sei = (EntityEditorInput) input;
+       // sei.setTooltipText("My Dashboard");
+       // }
+       // }
 
        /**
         * Implementing classes must call super in order to create the correct form
@@ -60,6 +75,7 @@ public abstract class AbstractSuiteDashboard {
        public void createPartControl(Composite parent) {
                toolkit = new FormToolkit(Display.getCurrent());
                init();
+               browserNavigation = RWT.getClient().getService(BrowserNavigation.class);
        }
 
        // UTILS
@@ -120,6 +136,10 @@ public abstract class AbstractSuiteDashboard {
                JcrUtils.logoutQuietly(session);
        }
 
+       @Focus
+       public void setFocus() {
+               browserNavigation.pushState("~", "Dashboard");
+       }
 
        // Expose to implementing classes
        protected Session getSession() {