Extend CMS view.
[lgpl/argeo-commons.git] / org.argeo.cms.e4.rap / src / org / argeo / cms / e4 / rap / CmsLoginLifecycle.java
index 91b08f96ffa0d9ffb102ae0a06a4bf525a68adcf..300c7566b4efcd9f348e2950f9f4160aad23d8bc 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.cms.e4.rap;
 
 import java.security.AccessController;
+import java.util.UUID;
 
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginContext;
@@ -8,15 +9,16 @@ import javax.security.auth.login.LoginException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.argeo.api.NodeConstants;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.CmsImageManager;
 import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.ui.UxContext;
 import org.argeo.cms.ui.dialogs.CmsFeedback;
-import org.argeo.cms.util.SimpleUxContext;
-import org.argeo.cms.widgets.auth.CmsLoginShell;
-import org.argeo.node.NodeConstants;
+import org.argeo.cms.ui.util.SimpleImageManager;
+import org.argeo.cms.ui.util.SimpleUxContext;
+import org.argeo.cms.ui.widgets.auth.CmsLoginShell;
 import org.eclipse.e4.core.services.events.IEventBroker;
 import org.eclipse.e4.ui.workbench.UIEvents;
 import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate;
@@ -34,14 +36,17 @@ public class CmsLoginLifecycle implements CmsView {
        private final static Log log = LogFactory.getLog(CmsLoginLifecycle.class);
 
        private UxContext uxContext;
+       private CmsImageManager imageManager;
 
        private LoginContext loginContext;
        private BrowserNavigation browserNavigation;
 
        private String state = null;
+       private String uid;
 
        @PostContextCreate
        boolean login(final IEventBroker eventBroker) {
+               uid = UUID.randomUUID().toString();
                browserNavigation = RWT.getClient().getService(BrowserNavigation.class);
                if (browserNavigation != null)
                        browserNavigation.addBrowserNavigationListener(new BrowserNavigationListener() {
@@ -50,7 +55,6 @@ public class CmsLoginLifecycle implements CmsView {
                                @Override
                                public void navigated(BrowserNavigationEvent event) {
                                        state = event.getState();
-                                       System.out.println("state=" + state);
                                        if (uxContext != null)// is logged in
                                                stateChanged();
                                }
@@ -58,7 +62,9 @@ public class CmsLoginLifecycle implements CmsView {
 
                Subject subject = Subject.getSubject(AccessController.getContext());
                Display display = Display.getCurrent();
+//             UiContext.setData(CmsView.KEY, this);
                CmsLoginShell loginShell = new CmsLoginShell(this);
+               CmsView.registerCmsView(loginShell.getShell(), this);
                loginShell.setSubject(subject);
                try {
                        // try pre-auth
@@ -76,6 +82,7 @@ public class CmsLoginLifecycle implements CmsView {
                if (CurrentUser.getUsername(getSubject()) == null)
                        return false;
                uxContext = new SimpleUxContext();
+               imageManager = new SimpleImageManager();
 
                eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new EventHandler() {
                        @Override
@@ -139,7 +146,7 @@ public class CmsLoginLifecycle implements CmsView {
 
        @Override
        public CmsImageManager getImageManager() {
-               throw new UnsupportedOperationException();
+               return imageManager;
        }
 
        protected Subject getSubject() {
@@ -151,6 +158,11 @@ public class CmsLoginLifecycle implements CmsView {
                return CurrentUser.isAnonymous(getSubject());
        }
 
+       @Override
+       public String getUid() {
+               return uid;
+       }
+
        // CALLBACKS
        protected void startupComplete() {
        }