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%2FArgeoSuiteUi.java;h=72210ad24065b41d5f928d6ecacb19e938a53182;hp=73dc2f4e4be0d2eeaf6485d5ba720cd7bd475da6;hb=643015b2ea9a066531250059a31b23358a38aa72;hpb=29abcc0fa99e1c3fdee5beb9fff62b70b9dff519 diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java index 73dc2f4..72210ad 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/ArgeoSuiteUi.java @@ -1,44 +1,34 @@ package org.argeo.suite.ui; -import static org.argeo.suite.ui.SuiteIcon.dashboard; +import java.util.HashMap; +import java.util.Map; import javax.jcr.Session; -import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsUiUtils; +import org.argeo.cms.ui.widgets.TabbedArea; import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.FormLayout; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; /** The {@link CmsView} for the work ergonomics of Argeo Suite. */ public class ArgeoSuiteUi extends Composite { private static final long serialVersionUID = 6207018859086689108L; + public final static String DASHBOARD_LAYER = "dashboard"; private Composite header; private Composite belowHeader; private Composite leadPane; + private Composite dynamicArea; - private SashForm dynamicArea; - private Composite entryArea; - private Composite editorArea; - private CTabFolder editorTabFolder; - - private Composite defaultBody; - - private CmsTheme theme; - private Session session; + private Map layers = new HashMap<>(); + private String currentLayer = DASHBOARD_LAYER; + public ArgeoSuiteUi(Composite parent, int style) { super(parent, style); - theme = CmsTheme.getCmsTheme(parent); this.setLayout(CmsUiUtils.noSpaceGridLayout()); header = new Composite(this, SWT.NONE); @@ -47,85 +37,87 @@ public class ArgeoSuiteUi extends Composite { belowHeader = new Composite(this, SWT.NONE); belowHeader.setLayoutData(CmsUiUtils.fillAll()); - belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2)); + } - if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. - dynamicArea = new SashForm(belowHeader, SWT.HORIZONTAL); - leadPane = new Composite(belowHeader, SWT.NONE); - } else { - leadPane = new Composite(belowHeader, SWT.NONE); - dynamicArea = new SashForm(belowHeader, SWT.HORIZONTAL); - } - leadPane.setLayoutData(CmsUiUtils.fillHeight()); - CmsUiUtils.style(leadPane, SuiteStyle.leadPane); - dynamicArea.setLayoutData(CmsUiUtils.fillAll()); + public void refreshBelowHeader(boolean initApp) { + CmsUiUtils.clear(belowHeader); + int style = getStyle(); + if (initApp) { + belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout(2)); + + if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. + 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); + } + leadPane.setLayoutData(CmsUiUtils.fillHeight()); + CmsUiUtils.style(leadPane, SuiteStyle.leadPane); + dynamicArea.setLayoutData(CmsUiUtils.fillAll()); + + dynamicArea.setLayout(new FormLayout()); - if (SWT.RIGHT_TO_LEFT == (style & SWT.RIGHT_TO_LEFT)) {// arabic, hebrew, etc. - editorArea = new Composite(dynamicArea, SWT.BORDER); - entryArea = new Composite(dynamicArea, SWT.BORDER); } else { - entryArea = new Composite(dynamicArea, SWT.NONE); - editorArea = new Composite(dynamicArea, SWT.NONE); + belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout()); } - int[] weights = new int[] { 2000, 8000 }; - dynamicArea.setWeights(weights); - editorArea.setLayout(new GridLayout()); - - editorTabFolder = new CTabFolder(editorArea, SWT.NONE); - editorTabFolder.setLayoutData(CmsUiUtils.fillAll()); - - // TODO make it dynamic - Composite buttons = new Composite(editorTabFolder, SWT.NONE); - buttons.setLayout(CmsUiUtils.noSpaceGridLayout()); - ToolBar toolBar = new ToolBar(buttons, SWT.NONE); - toolBar.setLayoutData(new GridData(SWT.END, SWT.TOP, false, false)); - ToolItem deleteItem = new ToolItem(toolBar, SWT.PUSH); - deleteItem.setImage(SuiteIcon.delete.getSmallIcon(theme)); - deleteItem.setEnabled(false); - editorTabFolder.setTopRight(buttons); - - CTabItem defaultTab = new CTabItem(editorTabFolder, SWT.NONE); - // defaultTab.setText("Home"); - defaultTab.setImage(dashboard.getSmallIcon(theme)); - defaultBody = new Composite(editorTabFolder, SWT.NONE); - defaultTab.setControl(defaultBody); - editorTabFolder.setSelection(defaultTab); - - // editorArea.setSingle(true); } /* - * GETTERS / SETTERS + * LAYERS */ - Composite getHeader() { - return header; + Composite getCurrentLayer() { + if (currentLayer == null) + throw new IllegalStateException("No current layer"); + return layers.get(currentLayer).getArea(); } - Composite getLeadPane() { - return leadPane; + Composite getLayer(String id) { + if (!layers.containsKey(id)) + throw new IllegalArgumentException("No layer " + id + " is available."); + return layers.get(id).getArea(); } - SashForm getDynamicArea() { - return dynamicArea; + Composite switchToLayer(String layer) { + Composite current = getCurrentLayer(); + if (currentLayer.equals(layer)) + return current; + Composite toShow = getLayer(layer); + getDisplay().syncExec(() -> toShow.moveAbove(current)); + currentLayer = layer; + return toShow; } - Composite getEntryArea() { - return entryArea; + void addLayer(String layer) { + WorkLayer workLayer = new WorkLayer(dynamicArea, getStyle()); + layers.put(layer, workLayer); } - CTabFolder getEditorTabFolder() { - return editorTabFolder; + /* + * GETTERS / SETTERS + */ + + Composite getHeader() { + return header; } - Composite getDefaultBody() { - return defaultBody; + Composite getLeadPane() { + return leadPane; } Composite getBelowHeader() { return belowHeader; } + Composite getEntryArea() { + return layers.get(currentLayer).getEntryArea(); + } + + TabbedArea getTabbedArea() { + return layers.get(currentLayer).getTabbedArea(); + } + Session getSession() { return session; } @@ -135,4 +127,5 @@ public class ArgeoSuiteUi extends Composite { } + }