X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.ui%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fui%2FDefaultLeadPane.java;h=4a641dcb807338cefb24cbe1e06d6bfded880966;hp=77ba555e3b1af3e636f8cb1e9c9ea014c28135aa;hb=384e41caf78222c53e5cf365bb93310e5b28462b;hpb=dec8c11591d7525c4be934406326823348daa461 diff --git a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java index 77ba555..4a641dc 100644 --- a/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java +++ b/org.argeo.suite.ui/src/org/argeo/suite/ui/DefaultLeadPane.java @@ -1,6 +1,9 @@ package org.argeo.suite.ui; +import java.util.Arrays; +import java.util.Collections; import java.util.Map; +import java.util.TreeMap; import javax.jcr.Node; import javax.jcr.RepositoryException; @@ -13,6 +16,7 @@ import org.argeo.cms.ui.CmsUiProvider; import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsIcon; import org.argeo.cms.ui.util.CmsUiUtils; +import org.argeo.suite.RankedObject; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -20,6 +24,7 @@ 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.framework.Constants; /** Side pane listing various perspectives. */ public class DefaultLeadPane implements CmsUiProvider { @@ -29,6 +34,7 @@ public class DefaultLeadPane implements CmsUiProvider { defaultLayers; } + private Map> layers = Collections.synchronizedSortedMap(new TreeMap<>()); private String[] defaultLayers; @Override @@ -43,9 +49,24 @@ public class DefaultLeadPane implements CmsUiProvider { Button first = null; for (String layerId : defaultLayers) { - Button b = createButton(parent, layerId, SuiteMsg.dashboard, SuiteIcon.dashboard); - if (first == null) - first = b; + if (layers.containsKey(layerId)) { + RankedObject layerObj = layers.get(layerId); + + // TODO deal with i10n + String titleStr = (String) layerObj.getProperties().get(SuiteLayer.Property.title.name()); + Localized title = null; + if (titleStr != null) + title = new Localized.Untranslated(titleStr); + + String iconName = (String) layerObj.getProperties().get(SuiteLayer.Property.icon.name()); + SuiteIcon icon = null; + if (iconName != null) + icon = SuiteIcon.valueOf(iconName); + + Button b = createButton(parent, layerId, title, icon); + if (first == null) + first = b; + } } // Button dashboardB = createButton(parent, SuiteMsg.dashboard.name(), SuiteMsg.dashboard, SuiteIcon.dashboard); @@ -61,13 +82,16 @@ public class DefaultLeadPane implements CmsUiProvider { CmsTheme theme = CmsTheme.getCmsTheme(parent); Button button = new Button(parent, SWT.PUSH); CmsUiUtils.style(button, SuiteStyle.leadPane); - button.setImage(icon.getBigIcon(theme)); + if (icon != null) + button.setImage(icon.getBigIcon(theme)); button.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, false)); // button.setToolTipText(msg.lead()); - Label lbl = new Label(parent, SWT.NONE); - CmsUiUtils.style(lbl, SuiteStyle.leadPane); - lbl.setText(msg.lead()); - lbl.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false)); + if (msg != null) { + Label lbl = new Label(parent, SWT.NONE); + CmsUiUtils.style(lbl, SuiteStyle.leadPane); + lbl.setText(msg.lead()); + lbl.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false)); + } CmsUiUtils.sendEventOnSelect(button, SuiteEvent.switchLayer.topic(), SuiteEvent.LAYER, layer); return button; } @@ -77,6 +101,14 @@ public class DefaultLeadPane implements CmsUiProvider { if (defaultLayers == null) throw new IllegalArgumentException("Default layers must be set."); if (log.isDebugEnabled()) - log.debug("Default layers: " + defaultLayers); + log.debug("Default layers: " + Arrays.asList(defaultLayers)); } + + public void addLayer(SuiteLayer layer, Map properties) { + if (properties.containsKey(Constants.SERVICE_PID)) { + String pid = (String) properties.get(Constants.SERVICE_PID); + RankedObject.putIfHigherRank(layers, pid, layer, properties); + } + } + }