Improve UX.
[gpl/argeo-suite.git] / core / org.argeo.suite.ui / src / org / argeo / suite / ui / DefaultHeader.java
index d3b474000e1ed57b13b65940b867163e5b597817..91154c3b9f7f09b7ca2ac936c56e28c58ac2cabe 100644 (file)
@@ -1,8 +1,6 @@
 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;
@@ -13,7 +11,6 @@ import org.argeo.cms.ui.CmsTheme;
 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,14 +20,12 @@ 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;
 
-/** HEader of a standard Argeo Suite application. */
-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
@@ -38,26 +33,6 @@ public class DefaultHeader implements CmsUiProvider, ManagedService {
                CmsView cmsView = CmsView.getCmsView(parent);
                CmsTheme theme = CmsTheme.getCmsTheme(parent);
 
-               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 getClass().getClassLoader();
-                                       }
-                               };
-                       } else {
-                               title = new Localized.Untranslated(titleStr);
-                       }
-               }
-
                parent.setLayout(CmsUiUtils.noSpaceGridLayout(new GridLayout(3, true)));
 
                // TODO right to left
@@ -109,14 +84,36 @@ public class DefaultHeader implements CmsUiProvider, ManagedService {
                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);
+                       }
+               }
+       }
+
+       public void destroy(BundleContext bundleContext, Map<String, String> properties) {
+
        }
 
-       @Override
-       public void updated(Dictionary<String, ?> properties) throws ConfigurationException {
-               if (properties != null)
-                       this.properties.putAll(LangUtils.dictToStringMap(properties));
+       public Localized getTitle() {
+               return title;
        }
 
 }