X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteUi.java;h=469e36f466ba770ff081f331a1d1c086076e789a;hb=d7d9881c3a7e83c39015ac48e232292d7efc17d2;hp=d93c3a8b38eb54de555474f13853e6d72646b28b;hpb=377d822958ec57c8fe39716d8af129c3ff258eaf;p=gpl%2Fargeo-suite.git 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 d93c3a8..469e36f 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,6 +11,7 @@ import javax.jcr.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.api.NodeConstants; +import org.argeo.cms.Localized; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.jcr.Jcr; @@ -22,13 +23,17 @@ import org.eclipse.swt.widgets.Composite; class SuiteUi extends Composite { private static final long serialVersionUID = 6207018859086689108L; private final static Log log = LogFactory.getLog(SuiteUi.class); + + private Localized title; private Composite header; + private Composite footer; private Composite belowHeader; private Composite leadPane; + private Composite sidePane; private Composite dynamicArea; private Session sysSession; -// private Session homeSession; + private Session homeSession; private Node userDir; private Map layers = new HashMap<>(); @@ -43,30 +48,43 @@ class SuiteUi extends Composite { this.setLayout(CmsUiUtils.noSpaceGridLayout()); header = new Composite(this, SWT.NONE); + header.setLayout(CmsUiUtils.noSpaceGridLayout()); CmsUiUtils.style(header, SuiteStyle.header); header.setLayoutData(CmsUiUtils.fillWidth()); belowHeader = new Composite(this, SWT.NONE); belowHeader.setLayoutData(CmsUiUtils.fillAll()); + + footer = new Composite(this, SWT.NONE); + footer.setLayout(CmsUiUtils.noSpaceGridLayout()); + CmsUiUtils.style(footer, SuiteStyle.footer); + footer.setLayoutData(CmsUiUtils.fillWidth()); } public void refreshBelowHeader(boolean initApp) { CmsUiUtils.clear(belowHeader); int style = getStyle(); if (initApp) { - belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2)); + belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(3)); if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. + sidePane = new Composite(belowHeader, SWT.NONE); + sidePane.setLayout(CmsUiUtils.noSpaceGridLayout()); + sidePane.setLayoutData(CmsUiUtils.fillHeight()); dynamicArea = new Composite(belowHeader, SWT.NONE); leadPane = new Composite(belowHeader, SWT.NONE); } else { leadPane = new Composite(belowHeader, SWT.NONE); dynamicArea = new Composite(belowHeader, SWT.NONE); + sidePane = new Composite(belowHeader, SWT.NONE); + sidePane.setLayout(CmsUiUtils.noSpaceGridLayout()); + sidePane.setLayoutData(CmsUiUtils.fillHeight()); } leadPane.setLayoutData(CmsUiUtils.fillHeight()); + leadPane.setLayout(CmsUiUtils.noSpaceGridLayout()); CmsUiUtils.style(leadPane, SuiteStyle.leadPane); - dynamicArea.setLayoutData(CmsUiUtils.fillAll()); + dynamicArea.setLayoutData(CmsUiUtils.fillAll()); dynamicArea.setLayout(new FormLayout()); } else { @@ -110,14 +128,18 @@ class SuiteUi extends Composite { Composite toShow = getLayer(layerId, context); 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); - }); + if (!isDisposed()) { +// getDisplay().syncExec(() -> { + if (!toShow.isDisposed()) { + toShow.moveAbove(null); + } else { + log.warn("Cannot show work area because it is disposed."); + toShow = initLayer(layerId, layers.get(layerId), context); + toShow.moveAbove(null); + } + dynamicArea.layout(true, true); +// }); + } return toShow; } else { return current; @@ -150,6 +172,7 @@ class SuiteUi extends Composite { protected Composite initLayer(String id, SuiteLayer layer, Node context) { Composite workArea = cmsView.doAs(() -> (Composite) layer.createUiPart(dynamicArea, context)); + CmsUiUtils.style(workArea, SuiteStyle.workArea); workArea.setLayoutData(CmsUiUtils.coverAll()); workAreas.put(id, workArea); return workArea; @@ -158,7 +181,7 @@ class SuiteUi extends Composite { synchronized void logout() { userDir = null; Jcr.logout(sysSession); -// Jcr.logout(homeSession); + Jcr.logout(homeSession); currentLayerId = null; workAreas.clear(); } @@ -171,10 +194,18 @@ class SuiteUi extends Composite { return header; } + Composite getFooter() { + return footer; + } + Composite getLeadPane() { return leadPane; } + Composite getSidePane() { + return sidePane; + } + Composite getBelowHeader() { return belowHeader; } @@ -185,11 +216,11 @@ class SuiteUi extends Composite { // synchronized void initSessions(Repository repository, String userDirPath) throws RepositoryException { this.sysSession = repository.login(); -// this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE); + this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE); userDir = sysSession.getNode(userDirPath); addDisposeListener((e) -> { Jcr.logout(sysSession); -// Jcr.logout(homeSession); + Jcr.logout(homeSession); }); } @@ -206,8 +237,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); } @@ -216,4 +247,12 @@ class SuiteUi extends Composite { return cmsView; } + public Localized getTitle() { + return title; + } + + public void setTitle(Localized title) { + this.title = title; + } + }