Repair switch to post login state
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Sep 2022 10:07:31 +0000 (12:07 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Sep 2022 10:07:31 +0000 (12:07 +0200)
org.argeo.app.ui/src/org/argeo/app/ui/SuiteApp.java
org.argeo.app.ui/src/org/argeo/app/ui/SuiteUi.java

index ef4aaff9545953eb3530bf09f52a964f00c22f81..a8b9b2e26901c966a4ead4d6b8b4b3ed026516ba 100644 (file)
@@ -209,6 +209,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber {
 
                        if (cmsView.isAnonymous() && publicBasePath == null) {// internal app, must login
                                ui.logout();
+                               ui.setLoginScreen(true);
                                if (headerUiProvider != null)
                                        refreshPart(headerUiProvider, ui.getHeader(), context);
                                ui.refreshBelowHeader(false);
@@ -220,6 +221,12 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber {
                        } else {
                                if (LOGIN.equals(state))
                                        state = null;
+                               if (ui.isLoginScreen()) {
+//                                     if (state == null)
+//                                             state = ui.getPostLoginState();
+                                       ui.setLoginScreen(false);
+//                                     ui.setPostLoginState(null);
+                               }
                                CmsSession cmsSession = cmsView.getCmsSession();
                                if (ui.getUserDirNode() == null) {
                                        // FIXME NPE on CMSSession when logging in from anonymous
@@ -423,6 +430,11 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber {
                        return;
                }
                SuiteUi suiteUi = (SuiteUi) cmsUi;
+               if (suiteUi.isLoginScreen()) {
+//                     suiteUi.setPostLoginState(state);
+                       return;
+               }
+
                Content node = stateToNode(suiteUi, state);
                if (node == null) {
                        suiteUi.getCmsView().navigateTo(HOME_STATE);
@@ -551,7 +563,7 @@ public class SuiteApp extends AbstractCmsApp implements CmsEventSubscriber {
                                        }
                                }
                        } catch (Exception e) {
-                               CmsFeedback.error("Cannot handle event " + event, e);
+                               CmsFeedback.error("Cannot handle event " + topic + " " + event, e);
 //                             log.error("Cannot handle event " + event, e);
                        }
                });
index de060df0b086563f90d5653039bc8fe35b726c42..02ff38e73a2b969759b493466609bc04c24d6e8b 100644 (file)
@@ -5,16 +5,15 @@ import java.util.Map;
 
 import org.argeo.api.acr.Content;
 import org.argeo.api.cms.CmsLog;
-import org.argeo.api.cms.ux.CmsUi;
-import org.argeo.api.cms.ux.CmsView;
 import org.argeo.cms.Localized;
+import org.argeo.cms.swt.CmsSwtUi;
 import org.argeo.cms.swt.CmsSwtUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FormLayout;
 import org.eclipse.swt.widgets.Composite;
 
 /** The view for the default ergonomics of Argeo Suite. */
-class SuiteUi extends Composite implements CmsUi {
+class SuiteUi extends CmsSwtUi {
        private static final long serialVersionUID = 6207018859086689108L;
        private final static CmsLog log = CmsLog.getLog(SuiteUi.class);
 
@@ -34,11 +33,11 @@ class SuiteUi extends Composite implements CmsUi {
        private Map<String, Composite> workAreas = new HashMap<>();
        private String currentLayerId = null;
 
-       private CmsView cmsView;
+       private boolean loginScreen = false;
+//     private String postLoginState;
 
        public SuiteUi(Composite parent, int style) {
                super(parent, style);
-               cmsView = CmsSwtUtils.getCmsView(parent);
                this.setLayout(CmsSwtUtils.noSpaceGridLayout());
 
                header = new Composite(this, SWT.NONE);
@@ -116,7 +115,7 @@ class SuiteUi extends Composite implements CmsUi {
                                return current;
                }
                if (context == null) {
-                       if (!cmsView.isAnonymous())
+                       if (!getCmsView().isAnonymous())
                                context = getUserDirNode();
                }
                Composite toShow = getLayer(layerId, context);
@@ -166,7 +165,7 @@ class SuiteUi extends Composite implements CmsUi {
        }
 
        protected Composite initLayer(String id, SuiteLayer layer, Content context) {
-               Composite workArea = cmsView.doAs(() -> (Composite) layer.createUiPart(dynamicArea, context));
+               Composite workArea = getCmsView().doAs(() -> (Composite) layer.createUiPart(dynamicArea, context));
                CmsSwtUtils.style(workArea, SuiteStyle.workArea);
                workArea.setLayoutData(CmsSwtUtils.coverAll());
                workAreas.put(id, workArea);
@@ -249,10 +248,6 @@ class SuiteUi extends Composite implements CmsUi {
 //                     throw new IllegalArgumentException("Unknown workspace " + workspaceName);
 //     }
 
-       public CmsView getCmsView() {
-               return cmsView;
-       }
-
        public Localized getTitle() {
                return title;
        }
@@ -261,4 +256,20 @@ class SuiteUi extends Composite implements CmsUi {
                this.title = title;
        }
 
+       public boolean isLoginScreen() {
+               return loginScreen;
+       }
+
+       public void setLoginScreen(boolean loginScreen) {
+               this.loginScreen = loginScreen;
+       }
+
+//     public String getPostLoginState() {
+//             return postLoginState;
+//     }
+//
+//     public void setPostLoginState(String postLoginState) {
+//             this.postLoginState = postLoginState;
+//     }
+
 }