From 745663105f60541454e75d4e4e31153698ebd92e Mon Sep 17 00:00:00 2001 From: Mathieu Date: Sat, 19 Nov 2022 13:09:32 +0100 Subject: [PATCH] Make single tab title configurable --- .../org/argeo/app/ui/DefaultEditionLayer.java | 26 +++++++++++++++++++ .../src/org/argeo/app/ui/SuiteLayer.java | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java b/swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java index a1dc5cb..dfccbe2 100644 --- a/swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java +++ b/swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java @@ -31,6 +31,7 @@ public class DefaultEditionLayer implements SuiteLayer { private boolean fixedEntryArea = false; private boolean singleTab = false; private Localized title = null; + private Localized singleTabTitle = null; @Override public Control createUiPart(Composite parent, Content context) { @@ -161,6 +162,29 @@ public class DefaultEditionLayer implements SuiteLayer { title = new Localized.Untranslated(titleStr); } } + + String singleTabTitleStr = (String) properties.get(SuiteLayer.Property.singleTabTitle.name()); + if (singleTabTitleStr != null) { + if (singleTabTitleStr.startsWith("%")) { + singleTabTitle = new Localized() { + + @Override + public String name() { + return singleTabTitleStr; + } + + @Override + public ClassLoader getL10nClassLoader() { + return bundleContext != null + ? bundleContext.getBundle().adapt(BundleWiring.class).getClassLoader() + : getClass().getClassLoader(); + } + }; + } else { + singleTabTitle = new Localized.Untranslated(singleTabTitleStr); + } + } + } public void destroy(BundleContext bundleContext, Map properties) { @@ -182,6 +206,8 @@ public class DefaultEditionLayer implements SuiteLayer { SwtTabbedArea createTabbedArea(Composite parent, CmsSwtTheme theme) { SwtTabbedArea tabbedArea = new SwtTabbedArea(parent, SWT.NONE); tabbedArea.setSingleTab(singleTab); + if (singleTabTitle != null) + tabbedArea.setSingleTabTitle(singleTabTitle.lead()); tabbedArea.setBodyStyle(SuiteStyle.mainTabBody.style()); tabbedArea.setTabStyle(SuiteStyle.mainTab.style()); tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.style()); diff --git a/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteLayer.java b/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteLayer.java index b97230d..6ee8ca0 100644 --- a/swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteLayer.java +++ b/swt/org.argeo.app.ui/src/org/argeo/app/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 SwtUiProvider { static enum Property { - title, icon, weights, startMaximized, singleTab, fixedEntryArea; + title, icon, weights, startMaximized, singleTab, singleTabTitle, fixedEntryArea; } String getId(); -- 2.30.2