Mercurial > dive4elements > river
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>()); }