Make single tab title configurable
authorMathieu <mbaudier@argeo.org>
Sat, 19 Nov 2022 12:09:32 +0000 (13:09 +0100)
committerMathieu <mbaudier@argeo.org>
Sat, 19 Nov 2022 12:09:32 +0000 (13:09 +0100)
swt/org.argeo.app.ui/src/org/argeo/app/ui/DefaultEditionLayer.java
swt/org.argeo.app.ui/src/org/argeo/app/ui/SuiteLayer.java

index a1dc5cbaa171b1c6b2366d44c76d00eeeb5b248b..dfccbe2870d101f3467e11ec2439c080228a6777 100644 (file)
@@ -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<String, String> 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());
index b97230dc0e1c76438352bf55f14943de5b5ab2d6..6ee8ca0a9aca3eda16a436a92ebf62f33a0da07e 100644 (file)
@@ -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();