diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java @ 9369:1a4d2ce77423

radio choice fix
author gernotbelger
date Thu, 02 Aug 2018 17:39:13 +0200
parents c7e5285d434f
children
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java	Thu Aug 02 15:06:22 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/RadioSelect.java	Thu Aug 02 17:39:13 2018 +0200
@@ -28,36 +28,39 @@
     private static final long serialVersionUID = 1L;
     private Artifact artifact;
 
-    public RadioSelect() {
+    protected abstract String getDatakey();
 
-    }
+    @Override
+    protected abstract String getUIProvider(); // force override in subs!
+    // {
+    // return "radio_panel"; //no generic radiopanel
+    // }
 
     protected abstract LinkedHashMap<String, String> makeEntries(CallMeta meta, Artifact artifact); // AUSNAHMSWEISE EXPLIZITER TYP, damit Reihenfolge nicht
                                                                                                     // verrutscht
 
     @Override
-    protected String getUIProvider() {
-        return "radio_panel";
-    }
-
-    @Override
     protected Element[] createItems(final XMLUtils.ElementCreator ec, final Artifact artifact, final String name, final CallContext context) {
 
         // REMEBER: we need it for getLabelFor later
-        this.artifact = artifact;
-
-        final CallMeta meta = context.getMeta();
-        final Map<String, String> entries = makeEntries(meta, artifact);
 
-        final Element[] elements = new Element[entries.size()];
-        int i = 0;
-        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++;
+        if (name.equals(getDatakey())) {
+            this.artifact = artifact;
+
+            final CallMeta meta = context.getMeta();
+            final Map<String, String> entries = makeEntries(meta, artifact);
+
+            final Element[] elements = new Element[entries.size()];
+            int i = 0;
+            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;
         }
-        return elements;
+        return super.createItems(ec, artifact, name, context);
     }
 
     @Override

http://dive4elements.wald.intevation.org