X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2FSimpleErgonomics.java;h=ca563600cc7ca139fb060f043bf987017f4a48a5;hb=92b77a90db637e71a7ccbc76fc12bad6ba4a289a;hp=b7b76e4e686e05bbfc1b91875733abe8cd1dd471;hpb=fd8f2c91e47d38445ba9702b40559939162f666d;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 b7b76e4e6..ca563600c 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,18 @@ 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 = 40; + private Integer headerHeight = 0; + private Integer footerHeight = 0; + private CmsUiProvider lead; + private CmsUiProvider end; + private CmsUiProvider footer; private CmsImageManager imageManager = new ImageManagerImpl(); private UxContext uxContext = null; @@ -48,20 +56,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))); - // createAdminArea(parent); + 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()); - uxContext = new SimpleUxContext(); + + // 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 = footerHeight; + footerArea.setLayoutData(footerData); + uiInitialized = true; refresh(); } @@ -72,7 +98,7 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { return; if (getState() == null) setState(""); - refreshHeader(); + refreshSides(); refreshBody(); if (log.isTraceEnabled()) log.trace("UI refreshed " + getNode()); @@ -81,7 +107,11 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint { protected void createAdminArea(Composite parent) { } + @Deprecated protected void refreshHeader() { + if (header == null) + return; + for (Control child : headerArea.getChildren()) child.dispose(); try { @@ -92,6 +122,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(); @@ -110,10 +162,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); } @@ -142,4 +194,37 @@ 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; + } + + public void setFooterHeight(Integer footerHeight) { + this.footerHeight = footerHeight; + } + }