X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=core%2Forg.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteApp.java;h=7087783ff55cc258ce5ae9ec3c88ffe15138b0b6;hp=c941a154d351810d5c5990b31e83ab742ced3927;hb=3afd052c9c380355ebfce9455e8fa3993f168fe0;hpb=141bd601f003f607bfa3dda6c74d4220ca63a2d3 diff --git a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index c941a15..7087783 100644 --- a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeUtils; import org.argeo.cms.CmsUserManager; import org.argeo.cms.LocaleUtils; +import org.argeo.cms.Localized; import org.argeo.cms.auth.CmsSession; import org.argeo.cms.ui.AbstractCmsApp; import org.argeo.cms.ui.CmsTheme; @@ -60,7 +61,8 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { private String headerPid; private String leadPanePid; private String loginScreenPid; -// private String DASHBOARD_PID = pidPrefix + "dashboard"; + + private String defaultLayerPid = "argeo.suite.ui.dashboardLayer"; // private String RECENT_ITEMS_PID = pidPrefix + "recentItems"; private String defaultUiName = "app"; @@ -76,7 +78,8 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { // TODO make more optimal or via CmsSession/CmsView private Map managedUis = new HashMap<>(); -// private CmsUiProvider headerPart = null; +// private Localized defaultTitle; +//// private CmsUiProvider headerPart = null; public void init(Map properties) { if (log.isDebugEnabled()) @@ -150,9 +153,13 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { Node context = null; SuiteUi ui = (SuiteUi) parent; CmsView cmsView = CmsView.getCmsView(parent); + CmsUiProvider headerUiProvider = findUiProvider(headerPid); +// if (headerUiProvider instanceof Localized) { +// defaultTitle = (Localized) headerUiProvider; +// } if (cmsView.isAnonymous() && publicBasePath == null) {// internal app, must login ui.logout(); - refreshPart(findUiProvider(headerPid), ui.getHeader(), context); + refreshPart(headerUiProvider, ui.getHeader(), context); ui.refreshBelowHeader(false); refreshPart(findUiProvider(loginScreenPid), ui.getBelowHeader(), context); ui.layout(true, true); @@ -178,7 +185,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { if (context == null) context = ui.getUserDir(); - refreshPart(findUiProvider(headerPid), ui.getHeader(), context); + refreshPart(headerUiProvider, ui.getHeader(), context); ui.refreshBelowHeader(true); for (String key : layersByPid.keySet()) { SuiteLayer layer = layersByPid.get(key).get(); @@ -186,7 +193,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { } refreshPart(findUiProvider(leadPanePid), ui.getLeadPane(), context); ui.layout(true, true); - setState(parent, state); + setState(parent, state != null ? state : defaultLayerPid); } } catch (Exception e) { CmsFeedback.show("Unexpected exception", e); @@ -213,6 +220,12 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { return uiProvidersByPid.get(pid).get(); } + private SuiteLayer findLayer(String pid) { + if (!layersByPid.containsKey(pid)) + throw new IllegalArgumentException("No UI provider registered as " + pid); + return layersByPid.get(pid).get(); + } + private T findByType(Map> byType, Node context) { if (context == null) throw new IllegalArgumentException("A node should be provided"); @@ -366,8 +379,13 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler { String layerId = get(event, SuiteEvent.LAYER); if (layerId != null) { // ui.switchToLayer(layerId, ui.getUserDir()); + SuiteLayer suiteLayer = findLayer(layerId); + Localized layerTitle = suiteLayer.getTitle(); ui.getCmsView().runAs(() -> ui.switchToLayer(layerId, ui.getUserDir())); - ui.getCmsView().navigateTo(layerId); + String title = null; + if (layerTitle != null) + title = layerTitle.lead(); + ui.getCmsView().stateChanged(layerId, title); } else { Node node = getNode(ui, event); if (node != null) {