# HG changeset patch # User Raimund Renkert # Date 1395319019 -3600 # Node ID 982382d9ea8b49aad8701e09e35a2bfcfb72931f # Parent b9decb8bfb21e56cf88af3e44c26774e22135067 Display the additional information extracted from multiattribute data. diff -r b9decb8bfb21 -r 982382d9ea8b gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java Thu Mar 20 13:36:20 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java Thu Mar 20 13:36:59 2014 +0100 @@ -25,6 +25,8 @@ import org.dive4elements.river.client.client.FLYSConstants; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.IntegerOptionsData; +import org.dive4elements.river.client.shared.model.MultiAttributeData; +import org.dive4elements.river.client.shared.model.MultiDataItem; import org.dive4elements.river.client.shared.model.StringOptionsData; import java.io.Serializable; @@ -79,6 +81,7 @@ private Map columns; private List columnNames; private List valueNames; + private Map> attributes; /** Maps column names to list of rows' first fields. */ private Map> selected; @@ -89,6 +92,7 @@ this.columnNames = new ArrayList(); this.valueNames = new ArrayList(); this.selected = new HashMap>(); + this.attributes = new HashMap>(); } @@ -148,6 +152,49 @@ columns.put(groupTitle, col); } + public void addColumn(MultiAttributeData options) { + GWT.log("Add Columns for MultiAttribute data"); + String groupTitle = options.getLabel(); + + Column col = new Column(groupTitle); + DataItem[] items = options.getItems(); + + if (items == null) { + GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); + return; + } + + MultiDataItem mItem = (MultiDataItem)items[0]; + for (Map.Entry entry: mItem.getValue().entrySet()) { + if (entry.getKey().equals("art:value") || + entry.getKey().equals("art:label")) { + continue; + } + attributes.put(entry.getKey(), new ArrayList()); + } + for (DataItem item: items) { + GWT.log("multidataitem: " + item.getLabel()); + String title = item.getLabel(); + + if (valueNames.indexOf(title) < 0) { + valueNames.add(title); + } + MultiDataItem mi = (MultiDataItem)item; + Map vs = mi.getValue(); + for (Map.Entrye: vs.entrySet()) { + if (e.getKey().equals("art:value") || + e.getKey().equals("art:label")) { + continue; + } + List data = attributes.get(e.getKey()); + data.add(e.getValue()); + } + col.addValue(item.getLabel(), mi.getValue().get("art:value")); + } + + columnNames.add(groupTitle); + columns.put(groupTitle, col); + } public Widget createParameterGrid() { listGrid = new ListGrid(); @@ -155,7 +202,7 @@ listGrid.setWrapCells(true); listGrid.setShowHeaderContextMenu(false); listGrid.setCanReorderFields(false); - listGrid.setCanSort(false); +// listGrid.setCanSort(false); //listGrid.setAutoFitData(Autofit.VERTICAL); listGrid.setFixedRecordHeights(false); // TODO: Then also need "autofit" (when wrapping) @@ -164,6 +211,12 @@ ArrayList fields = new ArrayList(); fields.add(itemNameField); + for (Map.Entry> entry: attributes.entrySet()) { + ListGridField attrField = new ListGridField( + entry.getKey(), MESSAGE.getString(entry.getKey())); + fields.add(attrField); + } + for (int i = 0, n = columnNames.size(); i < n; i++) { ListGridField field = new ListGridField(columnNames.get(i), MESSAGE.getString(columnNames.get(i))); field.setType(ListGridFieldType.BOOLEAN); @@ -189,6 +242,9 @@ record.setAttribute(columnName, false); record.setAttribute(columnName+"-value", value); } + for (Map.Entry> entry: attributes.entrySet()) { + record.setAttribute(entry.getKey(), entry.getValue().get(j)); + } records.add(record); } diff -r b9decb8bfb21 -r 982382d9ea8b gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java Thu Mar 20 13:36:20 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrixPanel.java Thu Mar 20 13:36:59 2014 +0100 @@ -23,6 +23,7 @@ import org.dive4elements.river.client.shared.model.DefaultData; import org.dive4elements.river.client.shared.model.DefaultDataItem; import org.dive4elements.river.client.shared.model.IntegerOptionsData; +import org.dive4elements.river.client.shared.model.MultiAttributeData; import org.dive4elements.river.client.shared.model.StringOptionsData; import java.util.ArrayList; @@ -169,6 +170,9 @@ else if (data instanceof StringOptionsData) { matrix.addColumn((StringOptionsData) data); } + else if (data instanceof MultiAttributeData) { + matrix.addColumn((MultiAttributeData)data); + } } // If too many items are shown, show it in the helper Panel.