From f709e4a3ae06e51f767eee8152b393eb1df97df4 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 23 Jan 2021 12:40:28 +0100 Subject: [PATCH] Work on styling. --- .../argeo/suite/ui/DefaultEditionLayer.java | 14 +++++++--- .../org/argeo/suite/ui/DefaultLeadPane.java | 28 ++----------------- .../src/org/argeo/suite/ui/SuiteApp.java | 2 +- .../src/org/argeo/suite/ui/SuiteLayer.java | 2 +- .../src/org/argeo/suite/ui/SuiteStyle.java | 2 ++ .../src/org/argeo/suite/ui/SuiteUi.java | 1 + .../src/org/argeo/suite/ui/SuiteUiUtils.java | 20 +++++++++++++ 7 files changed, 37 insertions(+), 32 deletions(-) diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java index c65cff5..7b8bb3e 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java @@ -23,6 +23,7 @@ public class DefaultEditionLayer implements SuiteLayer { private CmsUiProvider entryArea; private CmsUiProvider workArea; private List 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 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() { diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java index 7f2fe9f..a207e7a 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java @@ -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 properties) { defaultLayers = (String[]) properties.get(Property.defaultLayers.toString()); if (defaultLayers == null) diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java index 1c7398f..dbed853 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java @@ -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) -> { diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteLayer.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteLayer.java index 8eb87d4..8af7611 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteLayer.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteLayer.java @@ -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); diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteStyle.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteStyle.java index e3ae0c7..5183fa4 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteStyle.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteStyle.java @@ -16,6 +16,8 @@ public enum SuiteStyle implements CmsStyle { simpleLabel, simpleText, simpleInput, // table titleCell, + // layers + workArea, // tabbed area mainTabBody, mainTabSelected, mainTab, // Buttons diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java index ae27815..b245762 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUi.java @@ -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; diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUiUtils.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUiUtils.java index be14a82..8e9a9d5 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUiUtils.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteUiUtils.java @@ -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) { // -- 2.30.2