comparison 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
comparison
equal deleted inserted replaced
9177:37db8c4c44b7 9178:2f5052835b76
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the 7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
8 * documentation coming with Dive4Elements River for details. 8 * documentation coming with Dive4Elements River for details.
9 */ 9 */
10 package org.dive4elements.river.artifacts.states; 10 package org.dive4elements.river.artifacts.states;
11 11
12 import java.util.List; 12 import java.util.LinkedHashMap;
13 import java.util.Map;
13 14
14 import org.dive4elements.artifacts.Artifact; 15 import org.dive4elements.artifacts.Artifact;
15 import org.dive4elements.artifacts.CallContext; 16 import org.dive4elements.artifacts.CallContext;
16 import org.dive4elements.artifacts.CallMeta; 17 import org.dive4elements.artifacts.CallMeta;
17 import org.dive4elements.artifacts.common.utils.XMLUtils; 18 import org.dive4elements.artifacts.common.utils.XMLUtils;
23 * 24 *
24 */ 25 */
25 public abstract class RadioSelect extends DefaultState { 26 public abstract class RadioSelect extends DefaultState {
26 27
27 private static final long serialVersionUID = 1L; 28 private static final long serialVersionUID = 1L;
28 private final List<String> entries;
29 29
30 public RadioSelect() { 30 public RadioSelect() {
31 super(); 31
32 this.entries = makeEntries();
33 } 32 }
34 33
35 protected abstract List<String> makeEntries(); 34 protected abstract LinkedHashMap<String, String> makeEntries(CallMeta meta, Artifact artifact); // AUSNAHMSWEISE EXPLIZITER TYP, damit gewährleistet ist,
35 // dass die Reihenfolge
36 // nicht verrutscht
36 37
37 @Override 38 @Override
38 protected final String getUIProvider() { 39 protected final String getUIProvider() {
39 return "radio_panel"; 40 return "radio_panel";
40 } 41 }
41 42
42 @Override 43 @Override
43 protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) { 44 protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) {
44 final CallMeta meta = context.getMeta(); 45 final CallMeta meta = context.getMeta();
45 final Element[] elements = new Element[this.entries.size()]; 46 final Map<String, String> entries = makeEntries(meta, artifact);
47
48 final Element[] elements = new Element[entries.size()];
46 int i = 0; 49 int i = 0;
47 for (final String item : this.entries) { 50 for (final String key : entries.keySet()) {
48 elements[i] = createItem(ec, new String[] { Resources.getMsg(meta, item, item), item }); 51 final String label = entries.get(key);
52 final String labelToSet = label != null ? label : Resources.getMsg(meta, key);
53 elements[i] = createItem(ec, new String[] { labelToSet, key });
49 i++; 54 i++;
50 } 55 }
51 return elements; 56 return elements;
52 } 57 }
53 58
59 @Override
60 protected String getLabelFor(final CallContext cc, final String name, final String value, final String type) {
61 // könnte nicht davon ausgegangen werden, dass die entries immer zuerst in createItems erzeugt werden und da quasi
62 // "lazy" initialisiert werden?
63 final Map<String, String> entries = makeEntries(cc.getMeta(), null);
64
65 final String valueToSet = entries.get(value) != null ? entries.get(value) : value;
66 return super.getLabelFor(cc, name, valueToSet, type);
67 }
54 } 68 }

http://dive4elements.wald.intevation.org