Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java @ 9178:2f5052835b76
uinfo inundationduration langjähr. Mittel, Uedauern.properties, Meldung
author | gernotbelger |
---|---|
date | Tue, 26 Jun 2018 19:48:35 +0200 |
parents | ad2ae847e10e |
children | dace17e26d33 |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java Tue Jun 26 16:17:30 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java Tue Jun 26 19:48:35 2018 +0200 @@ -9,7 +9,8 @@ */ package org.dive4elements.river.artifacts.states; -import java.util.List; +import java.util.LinkedHashMap; +import java.util.Map; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; @@ -25,14 +26,14 @@ public abstract class RadioSelect extends DefaultState { private static final long serialVersionUID = 1L; - private final List<String> entries; public RadioSelect() { - super(); - this.entries = makeEntries(); + } - protected abstract List<String> makeEntries(); + protected abstract LinkedHashMap<String, String> makeEntries(CallMeta meta, Artifact artifact); // AUSNAHMSWEISE EXPLIZITER TYP, damit gewährleistet ist, + // dass die Reihenfolge + // nicht verrutscht @Override protected final String getUIProvider() { @@ -42,13 +43,26 @@ @Override protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) { final CallMeta meta = context.getMeta(); - final Element[] elements = new Element[this.entries.size()]; + final Map<String, String> entries = makeEntries(meta, artifact); + + final Element[] elements = new Element[entries.size()]; int i = 0; - for (final String item : this.entries) { - elements[i] = createItem(ec, new String[] { Resources.getMsg(meta, item, item), item }); + for (final String key : entries.keySet()) { + final String label = entries.get(key); + final String labelToSet = label != null ? label : Resources.getMsg(meta, key); + elements[i] = createItem(ec, new String[] { labelToSet, key }); i++; } return elements; } -} + @Override + protected String getLabelFor(final CallContext cc, final String name, final String value, final String type) { + // könnte nicht davon ausgegangen werden, dass die entries immer zuerst in createItems erzeugt werden und da quasi + // "lazy" initialisiert werden? + final Map<String, String> entries = makeEntries(cc.getMeta(), null); + + final String valueToSet = entries.get(value) != null ? entries.get(value) : value; + return super.getLabelFor(cc, name, valueToSet, type); + } +} \ No newline at end of file