ingo@2521: package de.intevation.flys.client.client.ui;
ingo@2521:
ingo@2525: import java.util.List;
ingo@2525: import java.util.Map;
ingo@2525: import java.util.Set;
ingo@2525:
ingo@2521: import com.smartgwt.client.widgets.Canvas;
ingo@2521: import com.smartgwt.client.widgets.Label;
ingo@2528: import com.smartgwt.client.widgets.layout.HLayout;
ingo@2521: import com.smartgwt.client.widgets.layout.VLayout;
ingo@2521:
ingo@2521: import de.intevation.flys.client.shared.model.Data;
ingo@2521: import de.intevation.flys.client.shared.model.DataItem;
ingo@2521: import de.intevation.flys.client.shared.model.DataList;
ingo@2525: import de.intevation.flys.client.shared.model.DefaultData;
ingo@2525: import de.intevation.flys.client.shared.model.DefaultDataItem;
ingo@2521: import de.intevation.flys.client.shared.model.IntegerOptionsData;
ingo@2532: import de.intevation.flys.client.shared.model.StringOptionsData;
ingo@2521:
ingo@2521: /**
ingo@2521: * @author Ingo Weinzierl
ingo@2521: */
ingo@2521: public class ParameterMatrixPanel extends AbstractUIProvider {
ingo@2521:
ingo@2525: private ParameterMatrix matrix;
ingo@2525:
ingo@2521: @Override
ingo@2521: protected Data[] getData() {
ingo@2525: Map> selection = matrix.getSelection();
ingo@2525: Set>> entries = selection.entrySet();
ingo@2525:
ingo@2525: Data[] list = new Data[selection.size()];
ingo@2525:
ingo@2525: int i = 0;
ingo@2525:
ingo@2525: for (Map.Entry> entry: entries) {
ingo@2525: String value = buildValueString(entry.getValue());
ingo@2525:
ingo@2525: DataItem item = new DefaultDataItem(
ingo@2525: entry.getKey(),
ingo@2525: null,
ingo@2525: value);
ingo@2525:
ingo@2525: list[i++] = new DefaultData(
ingo@2525: entry.getKey(), null, null, new DataItem[] { item });
ingo@2525: }
ingo@2525:
ingo@2525: return list;
ingo@2521: }
ingo@2521:
ingo@2525:
ingo@2525: protected String buildValueString(List values) {
ingo@2525: StringBuilder sb = new StringBuilder();
ingo@2525:
ingo@2525: boolean first = true;
ingo@2525:
ingo@2525: for (String value: values) {
ingo@2525: if (!first) {
ingo@2525: sb.append(";");
ingo@2525: }
ingo@2525:
ingo@2525: sb.append(value);
ingo@2525:
ingo@2525: first = false;
ingo@2525: }
ingo@2525:
ingo@2525: return sb.toString();
ingo@2525: }
ingo@2525:
ingo@2525:
ingo@2521: @Override
ingo@2521: public Canvas createOld(DataList dataList) {
ingo@2528: HLayout layout = new HLayout();
ingo@2528: VLayout vLayout = new VLayout();
ingo@2528:
ingo@2528: layout.setWidth(300);
ingo@2528: vLayout.setWidth(280);
ingo@2528:
ingo@2528: for (int i = 0, n = dataList.size(); i < n; i++) {
ingo@2528: HLayout row = new HLayout();
ingo@2528: VLayout cols = new VLayout();
ingo@2528:
ingo@2528: row.setWidth(300);
ingo@2528: cols.setWidth(100);
ingo@2528:
ingo@2528: Data data = dataList.get(i);
ingo@2528: DataItem[] items = data.getItems();
ingo@2528:
ingo@2528: Label parameter = new Label(data.getDescription());
ingo@2528: parameter.setWidth(200);
ingo@2528:
ingo@2532: for (int j = 0, m = items.length; j < m; j++) {
ingo@2528: DataItem item = items[j];
ingo@2528: Label value = new Label(item.getLabel());
ingo@2528:
ingo@2528: value.setValign(com.smartgwt.client.types.VerticalAlignment.TOP);
ingo@2528: value.setWidth(130);
ingo@2528: value.setHeight(20);
ingo@2528:
ingo@2528: cols.addMember(value);
ingo@2528: }
ingo@2528:
ingo@2528: row.addMember(parameter);
ingo@2528: row.addMember(cols);
ingo@2528:
ingo@2528: vLayout.addMember(row);
ingo@2528: }
ingo@2528:
ingo@2528: Canvas back = getBackButton(dataList.getState());
ingo@2528:
ingo@2528: layout.addMember(vLayout);
ingo@2528: layout.addMember(back);
ingo@2528:
ingo@2528: return layout;
ingo@2521: }
ingo@2521:
ingo@2521: @Override
ingo@2521: public Canvas create(DataList dataList) {
ingo@2521: VLayout v = new VLayout();
ingo@2521: v.addMember(createTitle(dataList));
ingo@2521:
ingo@2525: matrix = new ParameterMatrix();
ingo@2521:
ingo@2521: for (Data data: dataList.getAll()) {
ingo@2521: if (data instanceof IntegerOptionsData) {
ingo@2521: matrix.addColumn((IntegerOptionsData) data);
ingo@2521: }
ingo@2532: else if (data instanceof StringOptionsData) {
ingo@2532: matrix.addColumn((StringOptionsData) data);
ingo@2532: }
ingo@2521: }
ingo@2521:
ingo@2521: v.addMember(matrix.create());
ingo@2525: v.addMember(getNextButton());
ingo@2521:
ingo@2521: return v;
ingo@2521: }
ingo@2521:
ingo@2521:
ingo@2521: protected Canvas createTitle(DataList dataList) {
ingo@3710: Data data = dataList.get(0);
ingo@3710: Label label = new Label(data.getDescription());
ingo@2521: label.setHeight(35);
ingo@2521:
ingo@2521: return label;
ingo@2521: }
ingo@2521: }
ingo@2521: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :