Adapt to changes in Argeo Commons.
[gpl/argeo-suite.git] / org.argeo.suite.e4 / src / org / argeo / suite / e4 / parts / AbstractSuiteDashboard.java
index 96919019f66ef66a11789ec0d0df8db6a1c84687..1271b0df0fa311dcb2508f400d96b2023f4579c8 100644 (file)
@@ -2,12 +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.Session;
 
+import org.argeo.api.NodeConstants;
 import org.argeo.cms.ui.eclipse.forms.FormToolkit;
-import org.argeo.cms.util.CmsUtils;
+import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.connect.SystemAppService;
 import org.argeo.connect.resources.ResourcesService;
 import org.argeo.connect.ui.AppWorkbenchService;
@@ -16,6 +18,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,29 +33,40 @@ 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;
+       private Session homeSession;
+       private Session mainSession;
 
        // UI Objects
        private FormToolkit toolkit;
 
-       public void init()  {
-               session = ConnectJcrUtils.login(repository);
-//             updateTooltip(input);
+       // RAP specific
+       private BrowserNavigation browserNavigation;
+
+       public void init() {
+               homeSession = ConnectJcrUtils.login(repository, NodeConstants.HOME_WORKSPACE);
+               mainSession = ConnectJcrUtils.login(repository);
+               // 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 +76,7 @@ public abstract class AbstractSuiteDashboard {
        public void createPartControl(Composite parent) {
                toolkit = new FormToolkit(Display.getCurrent());
                init();
+               browserNavigation = RWT.getClient().getService(BrowserNavigation.class);
        }
 
        // UTILS
@@ -69,20 +86,20 @@ public abstract class AbstractSuiteDashboard {
                gd.widthHint = widthHint;
                gd.heightHint = heightHint;
                gadgetCmp.setLayoutData(gd);
-               CmsUtils.style(gadgetCmp, ConnectUiStyles.GADGET_BOX);
+               CmsUiUtils.style(gadgetCmp, ConnectUiStyles.GADGET_BOX);
                return gadgetCmp;
        }
 
        protected Composite createGadgetTitleCmp(Composite parent, String title) {
                Composite titleCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE);
-               CmsUtils.style(titleCmp, ConnectUiStyles.GADGET_HEADER);
+               CmsUiUtils.style(titleCmp, ConnectUiStyles.GADGET_HEADER);
                titleCmp.setBackground(null);
                GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
                titleCmp.setLayoutData(gd);
                titleCmp.setLayout(new GridLayout());
 
                Label titleLbl = toolkit.createLabel(titleCmp, title + " ", SWT.BOLD);
-               CmsUtils.style(titleLbl, ConnectUiStyles.GADGET_HEADER);
+               CmsUiUtils.style(titleLbl, ConnectUiStyles.GADGET_HEADER);
                titleLbl.setBackground(null);
                return titleCmp;
        }
@@ -117,13 +134,22 @@ public abstract class AbstractSuiteDashboard {
        // Life cycle
        @PreDestroy
        public void dispose() {
-               JcrUtils.logoutQuietly(session);
+               JcrUtils.logoutQuietly(homeSession);
+               JcrUtils.logoutQuietly(mainSession);
        }
 
+       @Focus
+       public void setFocus() {
+               browserNavigation.pushState("~", "Dashboard");
+       }
 
        // Expose to implementing classes
-       protected Session getSession() {
-               return session;
+       protected Session getHomeSession() {
+               return homeSession;
+       }
+
+       public Session getMainSession() {
+               return mainSession;
        }
 
        public ResourcesService getResourcesService() {
@@ -143,19 +169,20 @@ public abstract class AbstractSuiteDashboard {
        }
 
        /* DEPENDENCY INJECTION */
-       public void setRepository(Repository repository) {
-               this.repository = repository;
-       }
-
-       public void setResourcesService(ResourcesService resourcesService) {
-               this.resourcesService = resourcesService;
-       }
-
-       public void setSystemAppService(SystemAppService systemAppService) {
-               this.systemAppService = systemAppService;
-       }
-
-       public void setSystemWorkbenchService(SystemWorkbenchService systemWorkbenchService) {
-               this.systemWorkbenchService = systemWorkbenchService;
-       }
+       // public void setRepository(Repository repository) {
+       // this.repository = repository;
+       // }
+       //
+       // public void setResourcesService(ResourcesService resourcesService) {
+       // this.resourcesService = resourcesService;
+       // }
+       //
+       // public void setSystemAppService(SystemAppService systemAppService) {
+       // this.systemAppService = systemAppService;
+       // }
+       //
+       // public void setSystemWorkbenchService(SystemWorkbenchService
+       // systemWorkbenchService) {
+       // this.systemWorkbenchService = systemWorkbenchService;
+       // }
 }