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;
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<String, String> 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);
return lbl;
}
- public void init(Map<String, String> properties) {
- this.properties = new TreeMap<>(properties);
+ public void init(BundleContext bundleContext, Map<String, String> 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<String, ?> properties) throws ConfigurationException {
- if (properties != null)
- this.properties.putAll(LangUtils.dictToStringMap(properties));
+ public void destroy(BundleContext bundleContext, Map<String, String> properties) {
+
+ }
+
+ public Localized getTitle() {
+ return title;
}
}