X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteUi.java;h=d93c3a8b38eb54de555474f13853e6d72646b28b;hp=1231d9262efda834e893a75f6a4dd81b670f79af;hb=377d822958ec57c8fe39716d8af129c3ff258eaf;hpb=d21b6765434d473fe04de867e2c3e773a6da8030 diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java index 1231d92..d93c3a8 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java @@ -11,7 +11,6 @@ import javax.jcr.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; -import org.argeo.api.NodeUtils; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.jcr.Jcr; @@ -29,8 +28,8 @@ class SuiteUi extends Composite { private Composite dynamicArea; private Session sysSession; - private Session homeSession; - private Node userHome; +// private Session homeSession; + private Node userDir; private Map layers = new HashMap<>(); private Map workAreas = new HashMap<>(); @@ -91,33 +90,38 @@ class SuiteUi extends Composite { private Composite getLayer(String id, Node context) { if (!layers.containsKey(id)) - throw new IllegalArgumentException("No layer " + id + " is available."); + return null; if (!workAreas.containsKey(id)) initLayer(id, layers.get(id), context); return workAreas.get(id); } Composite switchToLayer(String layerId, Node context) { + Composite current = null; if (currentLayerId != null) { - Composite current = getCurrentWorkArea(); + current = getCurrentWorkArea(); if (currentLayerId.equals(layerId)) return current; } if (context == null) { if (!cmsView.isAnonymous()) - context = userHome; + context = userDir; } Composite toShow = getLayer(layerId, context); - currentLayerId = layerId; - if (!isDisposed()) - getDisplay().syncExec(() -> { - if (!toShow.isDisposed()) - toShow.moveAbove(null); - else - log.warn("Cannot show work area because it is disposed."); - dynamicArea.layout(true, true); - }); - return toShow; + if (toShow != null) { + currentLayerId = layerId; + if (!isDisposed()) + getDisplay().syncExec(() -> { + if (!toShow.isDisposed()) + toShow.moveAbove(null); + else + log.warn("Cannot show work area because it is disposed."); + dynamicArea.layout(true, true); + }); + return toShow; + } else { + return current; + } } Composite switchToLayer(SuiteLayer layer, Node context) { @@ -152,9 +156,9 @@ class SuiteUi extends Composite { } synchronized void logout() { - userHome = null; + userDir = null; Jcr.logout(sysSession); - Jcr.logout(homeSession); +// Jcr.logout(homeSession); currentLayerId = null; workAreas.clear(); } @@ -179,18 +183,18 @@ class SuiteUi extends Composite { // return sysSession; // } // - synchronized void initSessions(Repository repository) throws RepositoryException { + synchronized void initSessions(Repository repository, String userDirPath) throws RepositoryException { this.sysSession = repository.login(); - this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE); - userHome = NodeUtils.getUserHome(homeSession); +// this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE); + userDir = sysSession.getNode(userDirPath); addDisposeListener((e) -> { Jcr.logout(sysSession); - Jcr.logout(homeSession); +// Jcr.logout(homeSession); }); } - Node getUserHome() { - return userHome; + Node getUserDir() { + return userDir; } Session getSysSession() { @@ -202,8 +206,8 @@ class SuiteUi extends Composite { return sysSession; if (NodeConstants.SYS_WORKSPACE.equals(workspaceName)) return sysSession; - else if (NodeConstants.HOME_WORKSPACE.equals(workspaceName)) - return homeSession; +// else if (NodeConstants.HOME_WORKSPACE.equals(workspaceName)) +// return homeSession; else throw new IllegalArgumentException("Unknown workspace " + workspaceName); }