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

http://dive4elements.wald.intevation.org