X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FDefaultHeader.java;h=fd8be4ed1b8cabaf22fdf95a151974ae477d0d85;hb=41e9998f7f1c87c747c57f60c6bec65fa20757a6;hp=a251e14c78ffa0de572f661a56c524e106e11e9a;hpb=6dd21e8d47a1ecc92cf9f958af9ce1a97655fa68;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultHeader.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultHeader.java index a251e14..fd8be4e 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultHeader.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultHeader.java @@ -1,19 +1,16 @@ package org.argeo.suite.ui; -import java.util.Dictionary; import java.util.Map; -import java.util.TreeMap; import javax.jcr.Node; import javax.jcr.RepositoryException; -import org.argeo.cms.LocaleUtils; +import org.argeo.api.cms.CmsTheme; +import org.argeo.api.cms.CmsView; +import org.argeo.cms.Localized; import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.ui.CmsTheme; +import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ui.CmsUiProvider; -import org.argeo.cms.ui.CmsView; -import org.argeo.cms.ui.util.CmsUiUtils; -import org.argeo.util.LangUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -23,45 +20,48 @@ 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.service.cm.ConfigurationException; -import org.osgi.service.cm.ManagedService; +import org.osgi.framework.BundleContext; +import org.osgi.framework.wiring.BundleWiring; -public class DefaultHeader implements CmsUiProvider, ManagedService { +/** Header of a standard Argeo Suite application. */ +public class DefaultHeader implements CmsUiProvider { public final static String TITLE_PROPERTY = "argeo.suite.ui.header.title"; - private Map properties; + private Localized title = null; @Override public Control createUi(Composite parent, Node context) throws RepositoryException { - CmsView cmsView = CmsView.getCmsView(parent); - CmsTheme theme = CmsTheme.getCmsTheme(parent); + CmsView cmsView = CmsSwtUtils.getCmsView(parent); + CmsTheme theme = CmsSwtUtils.getCmsTheme(parent); - parent.setLayout(CmsUiUtils.noSpaceGridLayout(new GridLayout(3, true))); + parent.setLayout(CmsSwtUtils.noSpaceGridLayout(new GridLayout(3, true))); // TODO right to left Composite lead = new Composite(parent, SWT.NONE); - CmsUiUtils.style(lead, SuiteStyle.header); + CmsSwtUtils.style(lead, SuiteStyle.header); lead.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, true, false)); lead.setLayout(new GridLayout()); Label lbl = new Label(lead, SWT.NONE); - String title = properties.get(TITLE_PROPERTY); - lbl.setText(LocaleUtils.isLocaleKey(title) ? LocaleUtils.local(title, getClass().getClassLoader()).toString() - : title); - CmsUiUtils.style(lbl, SuiteStyle.headerTitle); - lbl.setLayoutData(CmsUiUtils.fillWidth()); +// String title = properties.get(TITLE_PROPERTY); +// // TODO expose the localized +// lbl.setText(LocaleUtils.isLocaleKey(title) ? LocaleUtils.local(title, getClass().getClassLoader()).toString() +// : title); + lbl.setText(title.lead()); + CmsSwtUtils.style(lbl, SuiteStyle.headerTitle); + lbl.setLayoutData(CmsSwtUtils.fillWidth()); Composite middle = new Composite(parent, SWT.NONE); - CmsUiUtils.style(middle, SuiteStyle.header); + CmsSwtUtils.style(middle, SuiteStyle.header); middle.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, false)); middle.setLayout(new GridLayout()); Composite end = new Composite(parent, SWT.NONE); - CmsUiUtils.style(end, SuiteStyle.header); + CmsSwtUtils.style(end, SuiteStyle.header); end.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false)); if (!cmsView.isAnonymous()) { end.setLayout(new GridLayout(2, false)); Label userL = new Label(end, SWT.NONE); - CmsUiUtils.style(userL, SuiteStyle.header); + CmsSwtUtils.style(userL, SuiteStyle.header); userL.setText(CurrentUser.getDisplayName()); Button logoutB = new Button(end, SWT.FLAT); // CmsUiUtils.style(logoutB, SuiteStyle.header); @@ -84,14 +84,36 @@ public class DefaultHeader implements CmsUiProvider, ManagedService { return lbl; } - public void init(Map properties) { - this.properties = new TreeMap<>(properties); + public void init(BundleContext bundleContext, Map properties) { + String titleStr = (String) properties.get(TITLE_PROPERTY); + 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); + } + } } - @Override - public void updated(Dictionary properties) throws ConfigurationException { - if (properties != null) - this.properties.putAll(LangUtils.dictToStringMap(properties)); + public void destroy(BundleContext bundleContext, Map properties) { + + } + + public Localized getTitle() { + return title; } }