X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2FSimpleErgonomics.java;h=de6ce1c59ff9893dc61d8489ab22322f27f895ff;hb=743fc68ed576cb578a9cc6c59e1f423d29213be1;hp=37464079155e3a4097325ae656f5b82d4c024997;hpb=bf6e7cfca0faab5138ab1591a701a532a65a9ea4;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java index 374640791..de6ce1c59 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/SimpleErgonomics.java @@ -19,6 +19,7 @@ import org.eclipse.rap.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -30,11 +31,17 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { private boolean uiInitialized = false; private Composite headerArea; + private Composite leftArea; + private Composite rightArea; + private Composite footerArea; private Composite bodyArea; private final CmsUiProvider uiProvider; private CmsUiProvider header; private Integer headerHeight = 0; + private CmsUiProvider lead; + private CmsUiProvider end; + private CmsUiProvider footer; private CmsImageManager imageManager = new ImageManagerImpl(); private UxContext uxContext = null; @@ -48,21 +55,38 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { @Override protected void initUi(Composite parent) { parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - parent.setLayout(CmsUtils.noSpaceGridLayout()); + parent.setLayout(CmsUtils.noSpaceGridLayout(new GridLayout(3, false))); uxContext = new SimpleUxContext(); if (!getUxContext().isMasterData()) createAdminArea(parent); headerArea = new Composite(parent, SWT.NONE); headerArea.setLayout(new FillLayout()); - GridData headerData = new GridData(SWT.FILL, SWT.FILL, false, false); + GridData headerData = new GridData(SWT.FILL, SWT.FILL, false, false, 3, 1); headerData.heightHint = headerHeight; headerArea.setLayoutData(headerData); + // TODO: bi-directional + leftArea = new Composite(parent, SWT.NONE); + leftArea.setLayoutData(new GridData(SWT.LEAD, SWT.TOP, false, false)); + leftArea.setLayout(CmsUtils.noSpaceGridLayout()); + bodyArea = new Composite(parent, SWT.NONE); bodyArea.setData(RWT.CUSTOM_VARIANT, CmsStyles.CMS_BODY); bodyArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); bodyArea.setLayout(CmsUtils.noSpaceGridLayout()); + + // TODO: bi-directional + rightArea = new Composite(parent, SWT.NONE); + rightArea.setLayoutData(new GridData(SWT.END, SWT.TOP, false, false)); + rightArea.setLayout(CmsUtils.noSpaceGridLayout()); + + footerArea = new Composite(parent, SWT.NONE); + // footerArea.setLayout(new FillLayout()); + GridData footerData = new GridData(SWT.FILL, SWT.FILL, false, false, 3, 1); + footerData.heightHint = headerHeight; + footerArea.setLayoutData(footerData); + uiInitialized = true; refresh(); } @@ -73,7 +97,7 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { return; if (getState() == null) setState(""); - refreshHeader(); + refreshSides(); refreshBody(); if (log.isTraceEnabled()) log.trace("UI refreshed " + getNode()); @@ -82,6 +106,7 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { protected void createAdminArea(Composite parent) { } + @Deprecated protected void refreshHeader() { if (header == null) return; @@ -96,6 +121,28 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { headerArea.layout(true, true); } + protected void refreshSides() { + refresh(headerArea, header, CmsStyles.CMS_HEADER); + refresh(leftArea, lead, CmsStyles.CMS_LEAD); + refresh(rightArea, end, CmsStyles.CMS_END); + refresh(footerArea, footer, CmsStyles.CMS_FOOTER); + } + + private void refresh(Composite area, CmsUiProvider uiProvider, String style) { + if (uiProvider == null) + return; + + for (Control child : area.getChildren()) + child.dispose(); + CmsUtils.style(area, style); + try { + uiProvider.createUi(area, getNode()); + } catch (RepositoryException e) { + throw new CmsException("Cannot refresh header", e); + } + area.layout(true, true); + } + protected void refreshBody() { // Exception Throwable exception = getException(); @@ -114,10 +161,10 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { try { Node node = getNode(); - if (node == null) - log.error("Context cannot be null"); - else - uiProvider.createUi(bodyArea, node); +// if (node == null) +// log.error("Context cannot be null"); +// else + uiProvider.createUi(bodyArea, node); } catch (RepositoryException e) { throw new CmsException("Cannot refresh body", e); } @@ -146,4 +193,33 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { public void setImageManager(CmsImageManager imageManager) { this.imageManager = imageManager; } + + public CmsUiProvider getLead() { + return lead; + } + + public void setLead(CmsUiProvider lead) { + this.lead = lead; + } + + public CmsUiProvider getEnd() { + return end; + } + + public void setEnd(CmsUiProvider end) { + this.end = end; + } + + public CmsUiProvider getFooter() { + return footer; + } + + public void setFooter(CmsUiProvider footer) { + this.footer = footer; + } + + public CmsUiProvider getHeader() { + return header; + } + }