Remove unused package.
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / util / SimpleErgonomics.java
index b7b76e4e686e05bbfc1b91875733abe8cd1dd471..3f06d88e881e814cc36f1f7a0adab322c2fa5e91 100644 (file)
@@ -14,11 +14,11 @@ import org.argeo.cms.ui.CmsImageManager;
 import org.argeo.cms.ui.CmsStyles;
 import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.UxContext;
-import org.argeo.cms.ui.internal.ImageManagerImpl;
 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,13 +30,20 @@ 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 CmsImageManager imageManager = new DefaultImageManager();
        private UxContext uxContext = null;
 
        public SimpleErgonomics(Repository repository, String workspace, String defaultPath, CmsUiProvider uiProvider,
@@ -48,20 +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)));
 
-               // 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 +97,7 @@ public class SimpleErgonomics extends AbstractCmsEntryPoint {
                        return;
                if (getState() == null)
                        setState("");
-               refreshHeader();
+               refreshSides();
                refreshBody();
                if (log.isTraceEnabled())
                        log.trace("UI refreshed " + getNode());
@@ -81,7 +106,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 +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();
@@ -110,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);
                }
@@ -142,4 +193,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;
+       }
+
 }