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=e6f38a3451e876a27e7fc4a6cd69f6b3119128a6;hp=e30360c092dbb3d21c565f2227eae6f6a6648183;hb=1d2cf517d6e79f2e6ed50eeeb1e0e450db5b5194;hpb=b5427b28d889738c2a4bd12f6be5e271f68aa60f 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 e30360c..e6f38a3 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,7 +1,5 @@ package org.argeo.suite.ui; -import static org.argeo.suite.ui.SuiteIcon.dashboard; - import java.util.HashMap; import java.util.Map; @@ -10,21 +8,18 @@ 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.FormLayout; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; 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; @@ -35,7 +30,7 @@ public class ArgeoSuiteUi extends Composite { private Session session; private Map layers = new HashMap<>(); - private String currentLayer = "dashboard"; + private String currentLayer = DASHBOARD_LAYER; public ArgeoSuiteUi(Composite parent, int style) { super(parent, style); @@ -48,28 +43,39 @@ 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 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()); + 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()); + dynamicArea.setLayout(new FormLayout()); - layers.put("dashboard", new WorkLayer(dynamicArea, style)); - layers.put("documents", new WorkLayer(dynamicArea, style)); - layers.put("locations", new WorkLayer(dynamicArea, style)); - layers.put("people", new WorkLayer(dynamicArea, style)); + } else { + belowHeader.setLayout(CmsUiUtils.noSpaceGridLayout()); + } } + /* + * LAYERS + */ + Composite getCurrentLayer() { + if (currentLayer == null) + throw new IllegalStateException("No current layer"); return layers.get(currentLayer).getArea(); } @@ -89,6 +95,11 @@ public class ArgeoSuiteUi extends Composite { return toShow; } + void addLayer(String layer) { + WorkLayer workLayer = new WorkLayer(dynamicArea, getStyle()); + layers.put(layer, workLayer); + } + /* * GETTERS / SETTERS */ @@ -109,8 +120,8 @@ public class ArgeoSuiteUi extends Composite { return layers.get(currentLayer).getEntryArea(); } - Composite getDefaultBody() { - return layers.get(currentLayer).getDefaultBody(); + TabbedArea getTabbedArea() { + return layers.get(currentLayer).getTabbedArea(); } Session getSession() { @@ -125,9 +136,7 @@ public class ArgeoSuiteUi extends Composite { private SashForm area; private Composite entryArea; private Composite editorArea; - private CTabFolder editorTabFolder; - - private Composite defaultBody; + private TabbedArea tabbedArea; WorkLayer(Composite parent, int style) { area = new SashForm(parent, SWT.HORIZONTAL); @@ -144,25 +153,28 @@ public class ArgeoSuiteUi extends Composite { area.setWeights(weights); editorArea.setLayout(new GridLayout()); - editorTabFolder = new CTabFolder(editorArea, SWT.NONE); - editorTabFolder.setLayoutData(CmsUiUtils.fillAll()); + tabbedArea = new TabbedArea(editorArea, SWT.NONE); + tabbedArea.setTabStyle(SuiteStyle.mainTab.toStyleClass()); + tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.toStyleClass()); + tabbedArea.setCloseIcon(SuiteIcon.close.getSmallIcon(theme)); + tabbedArea.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); +// 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); } @@ -174,14 +186,9 @@ public class ArgeoSuiteUi extends Composite { return entryArea; } - CTabFolder getEditorTabFolder() { - return editorTabFolder; - } - - Composite getDefaultBody() { - return defaultBody; + TabbedArea getTabbedArea() { + return tabbedArea; } - } }