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%2FSuiteUi.java;fp=core%2Forg.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FSuiteUi.java;h=0000000000000000000000000000000000000000;hp=469e36f466ba770ff081f331a1d1c086076e789a;hb=3440f51df3e4c015972c7b6a0efb3ce16188b89b;hpb=752a7b2614895002a3d184be166ef4162caf0d05 diff --git a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java deleted file mode 100644 index 469e36f..0000000 --- a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java +++ /dev/null @@ -1,258 +0,0 @@ -package org.argeo.suite.ui; - -import java.util.HashMap; -import java.util.Map; - -import javax.jcr.Node; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -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; -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 { - 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 Node userDir; - - private Map layers = new HashMap<>(); - private Map workAreas = new HashMap<>(); - private String currentLayerId = null; - - private CmsView cmsView; - - public SuiteUi(Composite parent, int style) { - super(parent, style); - cmsView = CmsView.getCmsView(parent); - 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(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.setLayout(new FormLayout()); - - } else { - belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout()); - } - } - - /* - * LAYERS - */ - - Composite getCurrentWorkArea() { - if (currentLayerId == null) - throw new IllegalStateException("No current layer"); - return workAreas.get(currentLayerId); - } - - String getCurrentLayerId() { - return currentLayerId; - } - - private Composite getLayer(String id, Node context) { - if (!layers.containsKey(id)) - 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) { - current = getCurrentWorkArea(); - if (currentLayerId.equals(layerId)) - return current; - } - if (context == null) { - if (!cmsView.isAnonymous()) - context = userDir; - } - 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."); - toShow = initLayer(layerId, layers.get(layerId), context); - toShow.moveAbove(null); - } - dynamicArea.layout(true, true); -// }); - } - return toShow; - } else { - return current; - } - } - - Composite switchToLayer(SuiteLayer layer, Node context) { - // TODO make it more robust - for (String layerId : layers.keySet()) { - SuiteLayer l = layers.get(layerId); - if (layer == l) { - return switchToLayer(layerId, context); - } - } - throw new IllegalArgumentException("Layer is not registered."); - } - - void addLayer(String id, SuiteLayer layer) { - layers.put(id, layer); - } - - void removeLayer(String id) { - layers.remove(id); - if (workAreas.containsKey(id)) { - Composite workArea = workAreas.remove(id); - if (!workArea.isDisposed()) - workArea.dispose(); - } - } - - 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; - } - - synchronized void logout() { - userDir = null; - Jcr.logout(sysSession); - Jcr.logout(homeSession); - currentLayerId = null; - workAreas.clear(); - } - - /* - * GETTERS / SETTERS - */ - - Composite getHeader() { - return header; - } - - Composite getFooter() { - return footer; - } - - Composite getLeadPane() { - return leadPane; - } - - Composite getSidePane() { - return sidePane; - } - - Composite getBelowHeader() { - return belowHeader; - } - -// Session getSysSession() { -// return sysSession; -// } -// - synchronized void initSessions(Repository repository, String userDirPath) throws RepositoryException { - this.sysSession = repository.login(); - this.homeSession = repository.login(NodeConstants.HOME_WORKSPACE); - userDir = sysSession.getNode(userDirPath); - addDisposeListener((e) -> { - Jcr.logout(sysSession); - Jcr.logout(homeSession); - }); - } - - Node getUserDir() { - return userDir; - } - - Session getSysSession() { - return sysSession; - } - - Session getSession(String workspaceName) { - if (workspaceName == null) - return sysSession; - if (NodeConstants.SYS_WORKSPACE.equals(workspaceName)) - return sysSession; - else if (NodeConstants.HOME_WORKSPACE.equals(workspaceName)) - return homeSession; - else - throw new IllegalArgumentException("Unknown workspace " + workspaceName); - } - - public CmsView getCmsView() { - return cmsView; - } - - public Localized getTitle() { - return title; - } - - public void setTitle(Localized title) { - this.title = title; - } - -}