X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=core%2Forg.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FDefaultEditionLayer.java;h=d017ee7d7f5f0a33897bfe66085dd8b289aa1853;hp=0ab5ab43c1b47c0db39e2ea9a69f5d4bab419077;hb=89c375fd53b5385e4c4757bcbca6b5fea8f73ea1;hpb=141bd601f003f607bfa3dda6c74d4220ca63a2d3 diff --git a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java index 0ab5ab4..d017ee7 100644 --- a/core/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java +++ b/core/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultEditionLayer.java @@ -7,6 +7,7 @@ import java.util.Map; import javax.jcr.Node; import javax.jcr.RepositoryException; +import org.argeo.cms.Localized; import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.util.CmsUiUtils; @@ -17,6 +18,8 @@ import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.osgi.framework.BundleContext; +import org.osgi.framework.wiring.BundleWiring; /** An app layer based on an entry area and an editor area. */ public class DefaultEditionLayer implements SuiteLayer { @@ -24,6 +27,8 @@ public class DefaultEditionLayer implements SuiteLayer { private CmsUiProvider workArea; private List weights = new ArrayList<>(); private boolean startMaximized = false; + private boolean singleTab = false; + private Localized title = null; @Override public Control createUi(Composite parent, Node context) throws RepositoryException { @@ -64,12 +69,45 @@ public class DefaultEditionLayer implements SuiteLayer { tabbedArea.open(uiProvider, context); } - public void init(Map properties) { + @Override + public Localized getTitle() { + return title; + } + + public void init(BundleContext bundleContext, Map properties) { weights = LangUtils.toStringList(properties.get(Property.weights.name())); startMaximized = properties.containsKey(Property.startMaximized.name()) && "true".equals(properties.get(Property.startMaximized.name())); + singleTab = properties.containsKey(Property.singleTab.name()) + && "true".equals(properties.get(Property.singleTab.name())); + + String titleStr = (String) properties.get(SuiteLayer.Property.title.name()); + if (titleStr != null) { + if (titleStr.startsWith("%")) { + title = new Localized() { + + @Override + public String name() { + return titleStr; + } + + @Override + public ClassLoader getL10nClassLoader() { + return bundleContext != null + ? bundleContext.getBundle().adapt(BundleWiring.class).getClassLoader() + : getClass().getClassLoader(); + } + }; + } else { + title = new Localized.Untranslated(titleStr); + } + } } + public void destroy(BundleContext bundleContext, Map properties) { + + } + public void setEntryArea(CmsUiProvider entryArea) { this.entryArea = entryArea; } @@ -80,6 +118,7 @@ public class DefaultEditionLayer implements SuiteLayer { TabbedArea createTabbedArea(Composite parent, CmsTheme theme) { TabbedArea tabbedArea = new TabbedArea(parent, SWT.NONE); + tabbedArea.setSingleTab(singleTab); tabbedArea.setBodyStyle(SuiteStyle.mainTabBody.style()); tabbedArea.setTabStyle(SuiteStyle.mainTab.style()); tabbedArea.setTabSelectedStyle(SuiteStyle.mainTabSelected.style());