Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java @ 9390:f575ff573cbb
"Name der Peilung" columname minfo.
author | gernotbelger |
---|---|
date | Thu, 09 Aug 2018 15:22:31 +0200 |
parents | 5e38e2924c07 |
children | 2da486c7c05f |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java Thu Aug 09 12:03:30 2018 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ParameterMatrix.java Thu Aug 09 15:22:31 2018 +0200 @@ -8,19 +8,11 @@ package org.dive4elements.river.client.client.ui; -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.ClickEvent; -import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.user.client.ui.CheckBox; -import com.google.gwt.user.client.ui.Grid; -import com.google.gwt.user.client.ui.Widget; - -import com.smartgwt.client.types.ListGridFieldType; -import com.smartgwt.client.widgets.Canvas; -import com.smartgwt.client.widgets.Label; -import com.smartgwt.client.widgets.grid.ListGrid; -import com.smartgwt.client.widgets.grid.ListGridField; -import com.smartgwt.client.widgets.grid.ListGridRecord; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.dive4elements.river.client.client.FLYSConstants; import org.dive4elements.river.client.shared.model.DataItem; @@ -29,12 +21,18 @@ import org.dive4elements.river.client.shared.model.MultiDataItem; import org.dive4elements.river.client.shared.model.StringOptionsData; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.ui.CheckBox; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.Widget; +import com.smartgwt.client.types.ListGridFieldType; +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.grid.ListGrid; +import com.smartgwt.client.widgets.grid.ListGridField; +import com.smartgwt.client.widgets.grid.ListGridRecord; /** * Some parameters take the form of on/off options that can also be seen @@ -52,242 +50,235 @@ private static final long serialVersionUID = -3493426383086860118L; - protected String name; + protected String name; protected Map<String, String> values; private Column() { this.values = new HashMap<String, String>(); } - public Column(String name) { + public Column(final String name) { this(); this.name = name; } - public void addValue(String label, String value) { - values.put(label, value); + public void addValue(final String label, final String value) { + this.values.put(label, value); } - public String getValue(String label) { - return values.get(label); + public String getValue(final String label) { + return this.values.get(label); } } // end of class Column - /** The message class that provides i18n strings.*/ + /** The message class that provides i18n strings. */ protected FLYSConstants MESSAGE = GWT.create(FLYSConstants.class); public static final int CELL_HEIGHT = 25; - private Map<String, Column> columns; - private List<String> columnNames; - private List<String> valueNames; - private Map<String, List<String>> attributes; + private final Map<String, Column> columns; + private final List<String> columnNames; + private final List<String> valueNames; + private final Map<String, List<String>> attributes; /** Maps column names to list of rows' first fields. */ - private Map<String, List<String>> selected; + private final Map<String, List<String>> selected; + private final String itemname; - public ParameterMatrix() { + public ParameterMatrix(final String itemnameColTitle) { super(); - this.columns = new HashMap<String, Column>(); + this.itemname = itemnameColTitle; + this.columns = new HashMap<String, Column>(); this.columnNames = new ArrayList<String>(); - this.valueNames = new ArrayList<String>(); - this.selected = new HashMap<String, List<String>>(); - this.attributes = new HashMap<String, List<String>>(); + this.valueNames = new ArrayList<String>(); + this.selected = new HashMap<String, List<String>>(); + this.attributes = new HashMap<String, List<String>>(); } + public void addColumn(final IntegerOptionsData group) { + final String groupTitle = group.getLabel(); - public void addColumn(IntegerOptionsData group) { - String groupTitle = group.getLabel(); - - Column col = new Column(groupTitle); - DataItem[] items = group.getItems(); + final Column col = new Column(groupTitle); + final DataItem[] items = group.getItems(); if (items == null) { GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); return; } - for (DataItem item: items) { - String title = item.getLabel(); + for (final DataItem item : items) { + final String title = item.getLabel(); - if (valueNames.indexOf(title) < 0) { - valueNames.add(title); + if (this.valueNames.indexOf(title) < 0) { + this.valueNames.add(title); } col.addValue(item.getLabel(), item.getStringValue()); } - columnNames.add(groupTitle); - columns.put(groupTitle, col); - } - - - public List<String> getColumnNames() { - return columnNames; + this.columnNames.add(groupTitle); + this.columns.put(groupTitle, col); } + public List<String> getColumnNames() { + return this.columnNames; + } - public void addColumn(StringOptionsData options) { - String groupTitle = options.getLabel(); + public void addColumn(final StringOptionsData options) { + final String groupTitle = options.getLabel(); - Column col = new Column(groupTitle); - DataItem[] items = options.getItems(); + final Column col = new Column(groupTitle); + final DataItem[] items = options.getItems(); if (items == null) { - GWT.log("No items found in StringOptionsData '" - + groupTitle + "'"); + GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); return; } - for (DataItem item: items) { - String title = item.getLabel(); + for (final DataItem item : items) { + final String title = item.getLabel(); - if (valueNames.indexOf(title) < 0) { - valueNames.add(title); + if (this.valueNames.indexOf(title) < 0) { + this.valueNames.add(title); } col.addValue(item.getLabel(), item.getStringValue()); } - columnNames.add(groupTitle); - columns.put(groupTitle, col); + this.columnNames.add(groupTitle); + this.columns.put(groupTitle, col); } - public void addColumn(MultiAttributeData options) { + public void addColumn(final MultiAttributeData options) { GWT.log("Add Columns for MultiAttribute data"); - String groupTitle = options.getLabel(); + final String groupTitle = options.getLabel(); - Column col = new Column(groupTitle); - DataItem[] items = options.getItems(); + final Column col = new Column(groupTitle); + final DataItem[] items = options.getItems(); if (items == null) { - GWT.log("No items found in StringOptionsData '" - + groupTitle + "'"); + GWT.log("No items found in StringOptionsData '" + groupTitle + "'"); return; } - MultiDataItem mItem = (MultiDataItem)items[0]; - for (Map.Entry<String, String> entry: mItem.getValue().entrySet()) { - if (entry.getKey().equals("art:value") || - entry.getKey().equals("art:label")) { + final MultiDataItem mItem = (MultiDataItem) items[0]; + for (final Map.Entry<String, String> entry : mItem.getValue().entrySet()) { + if (entry.getKey().equals("art:value") || entry.getKey().equals("art:label")) { continue; } - attributes.put(entry.getKey(), new ArrayList<String>()); + this.attributes.put(entry.getKey(), new ArrayList<String>()); } - for (DataItem item: items) { + for (final DataItem item : items) { GWT.log("multidataitem: " + item.getLabel()); - String title = item.getLabel(); + final String title = item.getLabel(); - if (valueNames.indexOf(title) < 0) { - valueNames.add(title); + if (this.valueNames.indexOf(title) < 0) { + this.valueNames.add(title); } - MultiDataItem mi = (MultiDataItem)item; - Map<String, String> vs = mi.getValue(); - for (Map.Entry<String, String>e: vs.entrySet()) { - if (e.getKey().equals("art:value") || - e.getKey().equals("art:label")) { + final MultiDataItem mi = (MultiDataItem) item; + final Map<String, String> vs = mi.getValue(); + for (final Map.Entry<String, String> e : vs.entrySet()) { + if (e.getKey().equals("art:value") || e.getKey().equals("art:label")) { continue; } - List<String> data = attributes.get(e.getKey()); + final List<String> data = this.attributes.get(e.getKey()); data.add(e.getValue()); } col.addValue(item.getLabel(), mi.getValue().get("art:value")); } - columnNames.add(groupTitle); - columns.put(groupTitle, col); + this.columnNames.add(groupTitle); + this.columns.put(groupTitle, col); } public Widget createParameterGrid() { - listGrid = new ListGrid(); - listGrid.setShowAllRecords(true); - listGrid.setWrapCells(true); - listGrid.setShowHeaderContextMenu(false); - listGrid.setCanReorderFields(false); -// listGrid.setCanSort(false); - //listGrid.setAutoFitData(Autofit.VERTICAL); - listGrid.setFixedRecordHeights(false); + this.listGrid = new ListGrid(); + this.listGrid.setShowAllRecords(true); + this.listGrid.setWrapCells(true); + this.listGrid.setShowHeaderContextMenu(false); + this.listGrid.setCanReorderFields(false); + // listGrid.setCanSort(false); + // listGrid.setAutoFitData(Autofit.VERTICAL); + this.listGrid.setFixedRecordHeights(false); // TODO: Then also need "autofit" (when wrapping) - ListGridField itemNameField = new ListGridField("itemname", " "); - ArrayList<ListGridField> fields = new ArrayList<ListGridField>(); + final ListGridField itemNameField = new ListGridField("itemname", this.itemname); + final ArrayList<ListGridField> fields = new ArrayList<ListGridField>(); fields.add(itemNameField); - for (Map.Entry<String, List<String>> entry: attributes.entrySet()) { - ListGridField attrField = new ListGridField( - entry.getKey(), MESSAGE.getString(entry.getKey())); + for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) { + final ListGridField attrField = new ListGridField(entry.getKey(), this.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))); + for (int i = 0, n = this.columnNames.size(); i < n; i++) { + final ListGridField field = new ListGridField(this.columnNames.get(i), this.MESSAGE.getString(this.columnNames.get(i))); field.setType(ListGridFieldType.BOOLEAN); field.setCanEdit(true); fields.add(field); - selected.put(columnNames.get(i), new ArrayList<String>()); + this.selected.put(this.columnNames.get(i), new ArrayList<String>()); } - ListGridField[] fieldsArray = fields.toArray( - new ListGridField[fields.size()]); - listGrid.setFields(fieldsArray); + final ListGridField[] fieldsArray = fields.toArray(new ListGridField[fields.size()]); + this.listGrid.setFields(fieldsArray); - int nVals = valueNames.size(); + final int nVals = this.valueNames.size(); - ArrayList<ListGridRecord> records = new ArrayList<ListGridRecord>(); + final ArrayList<ListGridRecord> records = new ArrayList<ListGridRecord>(); for (int j = 0; j < nVals; j++) { - String valueName = valueNames.get(j); - ListGridRecord record = new ListGridRecord(); + final String valueName = this.valueNames.get(j); + final ListGridRecord record = new ListGridRecord(); record.setAttribute("itemname", valueName); - for (int i = 0, n = columnNames.size(); i < n; i++) { - String columnName = columnNames.get(i); - Column col = columns.get(columnName); - String value = col.getValue(valueName); + for (int i = 0, n = this.columnNames.size(); i < n; i++) { + final String columnName = this.columnNames.get(i); + final Column col = this.columns.get(columnName); + final String value = col.getValue(valueName); record.setAttribute(columnName, false); - record.setAttribute(columnName+"-value", value); + record.setAttribute(columnName + "-value", value); } - for (Map.Entry<String, List<String>> entry: attributes.entrySet()) { + for (final Map.Entry<String, List<String>> entry : this.attributes.entrySet()) { record.setAttribute(entry.getKey(), entry.getValue().get(j)); } records.add(record); } - listGrid.setData(records.toArray(new ListGridRecord[records.size()])); + this.listGrid.setData(records.toArray(new ListGridRecord[records.size()])); - return listGrid; + return this.listGrid; } - /** * Returns a widget with matrix of checkboxes and labels. - * @param asListGrid if true, use a ListGrid (for inclusion in SmartGWT - * containers, avoiding scrollbar-issues. + * + * @param asListGrid + * if true, use a ListGrid (for inclusion in SmartGWT + * containers, avoiding scrollbar-issues. */ - public Widget create(boolean asListGrid) { + public Widget create(final boolean asListGrid) { if (asListGrid) { return createParameterGrid(); } - Grid grid = new Grid(valueNames.size() + 1, columnNames.size() + 1); - - for (int i = 0, n = columnNames.size(); i < n; i++) { - String columnName = columnNames.get(i); - Column col = columns.get(columnName); + final Grid grid = new Grid(this.valueNames.size() + 1, this.columnNames.size() + 1); - selected.put(columnName, new ArrayList<String>()); + for (int i = 0, n = this.columnNames.size(); i < n; i++) { + final String columnName = this.columnNames.get(i); + final Column col = this.columns.get(columnName); - grid.setWidget(0, i+1, createLabel(MESSAGE.getString(columnName))); + this.selected.put(columnName, new ArrayList<String>()); - for (int j = 0, o = valueNames.size(); j < o; j++) { - String valueName = valueNames.get(j); - String value = col.getValue(valueName); + grid.setWidget(0, i + 1, createLabel(this.MESSAGE.getString(columnName))); + + for (int j = 0, o = this.valueNames.size(); j < o; j++) { + final String valueName = this.valueNames.get(j); + final String value = col.getValue(valueName); if (i == 0) { - grid.setWidget(j+1, 0, createLabel(valueName)); + grid.setWidget(j + 1, 0, createLabel(valueName)); } if (value != null && value.length() > 0) { - grid.setWidget(j+1, i+1, createCheckBox(columnName, value)); + grid.setWidget(j + 1, i + 1, createCheckBox(columnName, value)); } } } @@ -295,58 +286,52 @@ return grid; } - /** Creates label with given text. */ - protected Label createLabel(String text) { - Label label = new Label(text); + protected Label createLabel(final String text) { + final Label label = new Label(text); label.setHeight(CELL_HEIGHT); return label; } - /** Create Checkbox for column/value. */ protected Canvas createCheckBox(final String colName, final String value) { - CheckBox box = new CheckBox(); + final CheckBox box = new CheckBox(); box.addClickHandler(new ClickHandler() { @Override - public void onClick(ClickEvent event) { - Map<String, List<String>> selection = getSelection(); + public void onClick(final ClickEvent event) { + final Map<String, List<String>> selection = getSelection(); - List<String> values = selection.get(colName); + final List<String> values = selection.get(colName); if (values.indexOf(value) >= 0) { values.remove(value); - } - else { + } else { values.add(value); } } }); - Canvas c = new Canvas(); + final Canvas c = new Canvas(); c.addChild(box); return c; } - public Map<String, List<String>> getSelection() { - if (listGrid == null) { - return selected; + if (this.listGrid == null) { + return this.selected; } - ListGridRecord[] records = listGrid.getRecords(); - Map<String, List<String>> result = new HashMap<String, List<String>>(); - for (ListGridRecord record : records) { - for (int i = 0, n = columnNames.size(); i < n; i++) { - String columnName = columnNames.get(i); + final ListGridRecord[] records = this.listGrid.getRecords(); + final Map<String, List<String>> result = new HashMap<String, List<String>>(); + for (final ListGridRecord record : records) { + for (int i = 0, n = this.columnNames.size(); i < n; i++) { + final String columnName = this.columnNames.get(i); if (Boolean.valueOf(record.getAttribute(columnName)) == true) { if (result.containsKey(columnName)) { - result.get(columnName).add( - record.getAttribute(columnName + "-value")); - } - else { - List<String> items = new ArrayList<String>(); + result.get(columnName).add(record.getAttribute(columnName + "-value")); + } else { + final List<String> items = new ArrayList<String>(); items.add(record.getAttribute(columnName + "-value")); result.put(columnName, items); }