Work on styling.
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 11:40:28 +0000 (12:40 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 23 Jan 2021 11:40:28 +0000 (12:40 +0100)
org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java
org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteLayer.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteStyle.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUiUtils.java

index c65cff50088aff32d38ecb7386f85a96a94d5bb1..7b8bb3eb360c7eb4f8d56fb25e8626e96a7998ce 100644 (file)
@@ -23,6 +23,7 @@ public class DefaultEditionLayer implements SuiteLayer {
        private CmsUiProvider entryArea;
        private CmsUiProvider workArea;
        private List<String> weights = new ArrayList<>();
+       private boolean startMaximized = false;
 
        @Override
        public Control createUi(Composite parent, Node context) throws RepositoryException {
@@ -65,6 +66,8 @@ public class DefaultEditionLayer implements SuiteLayer {
 
        public void init(Map<String, Object> properties) {
                weights = LangUtils.toStringList(properties.get(Property.weights.name()));
+               startMaximized = properties.containsKey(Property.startMaximized.name())
+                               && "true".equals(properties.get(Property.startMaximized.name()));
        }
 
        public void setEntryArea(CmsUiProvider entryArea) {
@@ -77,9 +80,9 @@ public class DefaultEditionLayer implements SuiteLayer {
 
        TabbedArea createTabbedArea(Composite parent, CmsTheme theme) {
                TabbedArea tabbedArea = new TabbedArea(parent, SWT.NONE);
-               tabbedArea.setBodyStyle(SuiteStyle.mainTabBody.toStyleClass());
-               tabbedArea.setTabStyle(SuiteStyle.mainTab.toStyleClass());
-               tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.toStyleClass());
+               tabbedArea.setBodyStyle(SuiteStyle.mainTabBody.style());
+               tabbedArea.setTabStyle(SuiteStyle.mainTab.style());
+               tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.style());
                tabbedArea.setCloseIcon(SuiteIcon.close.getSmallIcon(theme));
                tabbedArea.setLayoutData(CmsUiUtils.fillAll());
                return tabbedArea;
@@ -109,17 +112,20 @@ public class DefaultEditionLayer implements SuiteLayer {
                                int[] actualWeight = new int[weights.size()];
                                for (int i = 0; i < weights.size(); i++) {
                                        actualWeight[i] = Integer.parseInt(weights.get(i));
-                                       setWeights(actualWeight);
                                }
+                               setWeights(actualWeight);
                        } else {
                                int[] actualWeights = new int[] { 3000, 7000 };
                                setWeights(actualWeights);
                        }
+                       if (startMaximized)
+                               setMaximizedControl(editorArea);
                        editorArea.setLayout(new GridLayout());
 
                        if (DefaultEditionLayer.this.workArea == null) {
                                tabbedArea = createTabbedArea(editorArea, theme);
                        }
+
                }
 
                Composite getEntryArea() {
index 7f2fe9fb53d6a6f5019d87817783d94601b8af15..a207e7a7453da85272bd20a88efedb183256d111 100644 (file)
@@ -13,19 +13,13 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.api.NodeConstants;
 import org.argeo.cms.Localized;
 import org.argeo.cms.auth.CurrentUser;
-import org.argeo.cms.ui.CmsTheme;
 import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.CmsView;
-import org.argeo.cms.ui.util.CmsIcon;
-import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.suite.RankedObject;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
 import org.osgi.framework.Constants;
 
 /** Side pane listing various perspectives. */
@@ -66,7 +60,7 @@ public class DefaultLeadPane implements CmsUiProvider {
                                if (iconName != null)
                                        icon = SuiteIcon.valueOf(iconName);
 
-                               Button b = createButton(parent, layerId, title, icon);
+                               Button b = SuiteUiUtils.createLayerButton(parent, layerId, title, icon);
                                if (first == null)
                                        first = b;
                        }
@@ -90,7 +84,7 @@ public class DefaultLeadPane implements CmsUiProvider {
                                        if (iconName != null)
                                                icon = SuiteIcon.valueOf(iconName);
 
-                                       Button b = createButton(parent, layerId, title, icon);
+                                       Button b = SuiteUiUtils.createLayerButton(parent, layerId, title, icon);
                                        if (first == null)
                                                first = b;
                                }
@@ -105,24 +99,6 @@ public class DefaultLeadPane implements CmsUiProvider {
                return first;
        }
 
-       protected Button createButton(Composite parent, String layer, Localized msg, CmsIcon icon) {
-               CmsTheme theme = CmsTheme.getCmsTheme(parent);
-               Button button = new Button(parent, SWT.PUSH);
-               CmsUiUtils.style(button, SuiteStyle.leadPane);
-               if (icon != null)
-                       button.setImage(icon.getBigIcon(theme));
-               button.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, false));
-               // button.setToolTipText(msg.lead());
-               if (msg != null) {
-                       Label lbl = new Label(parent, SWT.NONE);
-                       CmsUiUtils.style(lbl, SuiteStyle.leadPane);
-                       lbl.setText(msg.lead());
-                       lbl.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false));
-               }
-               CmsUiUtils.sendEventOnSelect(button, SuiteEvent.switchLayer.topic(), SuiteEvent.LAYER, layer);
-               return button;
-       }
-
        public void init(Map<String, Object> properties) {
                defaultLayers = (String[]) properties.get(Property.defaultLayers.toString());
                if (defaultLayers == null)
index 1c7398f31a5e9986927a402efccf92ed6b3804e0..dbed85357bbb3ced44d55cc785faa917aeb3a2a3 100644 (file)
@@ -129,7 +129,7 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
                CmsTheme theme = getTheme(uiName);
                if (theme != null)
                        CmsTheme.registerCmsTheme(parent.getShell(), theme);
-               SuiteUi argeoSuiteUi = new SuiteUi(parent, SWT.NONE);
+               SuiteUi argeoSuiteUi = new SuiteUi(parent, SWT.INHERIT_DEFAULT);
                String uid = cmsView.getUid();
                managedUis.put(uid, argeoSuiteUi);
                argeoSuiteUi.addDisposeListener((e) -> {
index 8eb87d465bc1a09185f61d948c14c6cc1bcb5d0e..8af761171fb7a540957719123ddfc4f13b13ef5f 100644 (file)
@@ -8,7 +8,7 @@ import org.eclipse.swt.widgets.Composite;
 /** An UI layer for the main work area. */
 public interface SuiteLayer extends CmsUiProvider {
        static enum Property {
-               title, icon, weights;
+               title, icon, weights, startMaximized;
        }
 
        void view(CmsUiProvider uiProvider, Composite workArea, Node context);
index e3ae0c7832c55c67af641f42d74d3b792d21663f..5183fa464a1dd6d4a62daccb741fdc2e7878f2f1 100644 (file)
@@ -16,6 +16,8 @@ public enum SuiteStyle implements CmsStyle {
        simpleLabel, simpleText, simpleInput,
        // table
        titleCell,
+       // layers
+       workArea,
        // tabbed area
        mainTabBody, mainTabSelected, mainTab,
        // Buttons
index ae278157f85f63de84ea03a110bfe20174fd9043..b245762cc7d8f27220d7ee6bfef5f5eff82246d8 100644 (file)
@@ -156,6 +156,7 @@ class SuiteUi extends Composite {
 
        protected Composite initLayer(String id, SuiteLayer layer, Node context) {
                Composite workArea = cmsView.doAs(() -> (Composite) layer.createUiPart(dynamicArea, context));
+               CmsUiUtils.style(workArea, SuiteStyle.workArea);
                workArea.setLayoutData(CmsUiUtils.coverAll());
                workAreas.put(id, workArea);
                return workArea;
index be14a823d11b0fefd0c7328430fb921da8c4121f..8e9a9d5d641968693a6364f6cba86696ef0d256b 100644 (file)
@@ -9,7 +9,9 @@ import javax.jcr.Session;
 
 import org.argeo.cms.Localized;
 import org.argeo.cms.ui.CmsEditable;
+import org.argeo.cms.ui.CmsTheme;
 import org.argeo.cms.ui.dialogs.LightweightDialog;
+import org.argeo.cms.ui.util.CmsIcon;
 import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.entity.EntityNames;
@@ -310,6 +312,24 @@ public class SuiteUiUtils {
                return img;
        }
 
+       public static Button createLayerButton(Composite parent, String layer, Localized msg, CmsIcon icon) {
+               CmsTheme theme = CmsTheme.getCmsTheme(parent);
+               Button button = new Button(parent, SWT.PUSH);
+               CmsUiUtils.style(button, SuiteStyle.leadPane);
+               if (icon != null)
+                       button.setImage(icon.getBigIcon(theme));
+               button.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, false));
+               // button.setToolTipText(msg.lead());
+               if (msg != null) {
+                       Label lbl = new Label(parent, SWT.NONE);
+                       CmsUiUtils.style(lbl, SuiteStyle.leadPane);
+                       lbl.setText(msg.lead());
+                       lbl.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false));
+               }
+               CmsUiUtils.sendEventOnSelect(button, SuiteEvent.switchLayer.topic(), SuiteEvent.LAYER, layer);
+               return button;
+       }
+
 //     public static String createAndConfigureEntity(Shell shell, Session referenceSession, String mainMixin,
 //                     String... additionnalProps) {
 //