X-Git-Url: http://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=68081b4e646d944b9066c855f98cdc941b48f2ff;hp=7b8bb3eb360c7eb4f8d56fb25e8626e96a7998ce;hb=b0a7ba0d1747f69fbcd84ade1290ef9b01a00a90;hpb=418ea1efbf3f0d6b706603c6ff1c0fdd17314773 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 7b8bb3e..68081b4 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,16 +7,19 @@ 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; -import org.argeo.cms.ui.widgets.TabbedArea; +import org.argeo.suite.ui.widgets.TabbedArea; import org.argeo.util.LangUtils; import org.eclipse.swt.SWT; 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,10 +69,43 @@ 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) { @@ -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()); @@ -120,7 +159,11 @@ public class DefaultEditionLayer implements SuiteLayer { } if (startMaximized) setMaximizedControl(editorArea); - editorArea.setLayout(new GridLayout()); + GridLayout editorAreaLayout = new GridLayout(); + editorAreaLayout.verticalSpacing = 0; + editorAreaLayout.marginBottom = 0; + editorAreaLayout.marginHeight = 0; + editorArea.setLayout(editorAreaLayout); if (DefaultEditionLayer.this.workArea == null) { tabbedArea = createTabbedArea(editorArea, theme);