diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java @ 9391:2da486c7c05f

salix historical sounding workflow changed
author gernotbelger
date Thu, 09 Aug 2018 17:25:13 +0200
parents f575ff573cbb
children
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java	Thu Aug 09 15:22:31 2018 +0200
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java	Thu Aug 09 17:25:13 2018 +0200
@@ -15,6 +15,7 @@
 import java.util.Map;
 
 import org.dive4elements.river.client.client.FLYSConstants;
+import org.dive4elements.river.client.client.ui.ParameterMatrix.Column.SelectionMode;
 import org.dive4elements.river.client.shared.model.DataItem;
 import org.dive4elements.river.client.shared.model.IntegerOptionsData;
 import org.dive4elements.river.client.shared.model.MultiAttributeData;
@@ -33,6 +34,7 @@
 import com.smartgwt.client.widgets.grid.ListGrid;
 import com.smartgwt.client.widgets.grid.ListGridField;
 import com.smartgwt.client.widgets.grid.ListGridRecord;
+import com.smartgwt.client.widgets.grid.events.ChangedHandler;
 
 /**
  * Some parameters take the form of on/off options that can also be seen
@@ -44,12 +46,16 @@
  */
 public class ParameterMatrix {
 
-    protected ListGrid listGrid = null;
+    protected static ListGrid listGrid = null;
 
     public static class Column implements Serializable {
 
         private static final long serialVersionUID = -3493426383086860118L;
 
+        public static enum SelectionMode {
+            single, multi
+        }
+
         protected String name;
         protected Map<String, String> values;
 
@@ -84,9 +90,11 @@
     /** Maps column names to list of rows' first fields. */
     private final Map<String, List<String>> selected;
     private final String itemname;
+    private final SelectionMode mode;
 
-    public ParameterMatrix(final String itemnameColTitle) {
+    public ParameterMatrix(final String itemnameColTitle, final SelectionMode mode) {
         super();
+        this.mode = mode;
         this.itemname = itemnameColTitle;
         this.columns = new HashMap<String, Column>();
         this.columnNames = new ArrayList<String>();
@@ -215,6 +223,27 @@
             final ListGridField field = new ListGridField(this.columnNames.get(i), this.MESSAGE.getString(this.columnNames.get(i)));
             field.setType(ListGridFieldType.BOOLEAN);
             field.setCanEdit(true);
+            if (this.mode == SelectionMode.single) {
+                field.addChangedHandler(new ChangedHandler() {
+                    @Override
+                    public void onChanged(final com.smartgwt.client.widgets.grid.events.ChangedEvent event) {
+                        final int rowNumber = event.getRowNum();
+                        final Boolean value = (Boolean) event.getValue();
+                        final int colNr = event.getColNum();
+                        final String attr = ParameterMatrix.listGrid.getFieldName(colNr);
+                        if (value) {
+                            final ListGridRecord[] records = ParameterMatrix.listGrid.getRecords();
+                            for (int i = 0; i < records.length; i++) {
+                                final ListGridRecord r = records[i];
+                                if (i != rowNumber) {
+                                    if (r.getAttributeAsBoolean(attr))
+                                        r.setAttribute(attr, false);
+                                }
+                            }
+                        }
+                    }
+                });
+            }
             fields.add(field);
             this.selected.put(this.columnNames.get(i), new ArrayList<String>());
         }

http://dive4elements.wald.intevation.org