teichmann@5861: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5861: * Software engineering by Intevation GmbH teichmann@5861: * teichmann@5993: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5861: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5993: * documentation coming with Dive4Elements River for details. teichmann@5861: */ teichmann@5861: teichmann@5835: package org.dive4elements.river.client.client.ui.fixation; raimund@3358: gernotbelger@9256: import java.util.LinkedHashMap; gernotbelger@9256: import java.util.Map; gernotbelger@9256: gernotbelger@9256: import org.dive4elements.river.client.shared.model.Data; gernotbelger@9256: import org.dive4elements.river.client.shared.model.DataItem; gernotbelger@9256: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9256: import org.dive4elements.river.client.shared.model.DefaultData; gernotbelger@9256: import org.dive4elements.river.client.shared.model.DefaultDataItem; gernotbelger@9256: import org.dive4elements.river.client.shared.model.FixingsOverviewInfo; gernotbelger@9256: raimund@3358: import com.smartgwt.client.types.VerticalAlignment; raimund@3358: import com.smartgwt.client.widgets.Canvas; raimund@3358: import com.smartgwt.client.widgets.Label; raimund@3358: import com.smartgwt.client.widgets.form.DynamicForm; raimund@3358: import com.smartgwt.client.widgets.form.fields.SelectItem; raimund@3358: import com.smartgwt.client.widgets.layout.HLayout; raimund@3358: import com.smartgwt.client.widgets.layout.VLayout; raimund@3358: raimund@3358: public class FixFunctionSelect extends FixationPanel { gernotbelger@9481: public static final LinkedHashMap funcDesc = new LinkedHashMap(); christian@3846: christian@3846: static { christian@3846: funcDesc.put("log", "W(Q) = m*ln(Q + b)"); christian@3846: funcDesc.put("linear", "W(Q) = m * Q + b"); christian@3846: funcDesc.put("log-linear", "W(Q) = a*ln(m*Q+b)"); d@9643: funcDesc.put("log-linear-alternative", "W(Q) = a*ln(m*Q+b) (linearisiert)"); christian@3846: funcDesc.put("exp", "W(Q) = m * a^Q + b"); christian@3846: funcDesc.put("quad", "W(Q) = n*Q^2+m*Q+b"); christian@3846: funcDesc.put("pow", "W(Q) = a * Q^c + d"); christian@3846: funcDesc.put("sq-pow", "S(Q) = a * Q^b"); christian@3846: } christian@3846: gernotbelger@9256: /** The combobox. */ raimund@3358: protected DynamicForm form; sascha@3366: raimund@3358: @Override gernotbelger@9256: public Canvas createWidget(final DataList data) { gernotbelger@9256: final VLayout layout = new VLayout(); raimund@3358: layout.setAlign(VerticalAlignment.TOP); raimund@3358: layout.setHeight(25); raimund@3358: gernotbelger@9481: final LinkedHashMap initial = new LinkedHashMap(); raimund@3358: gernotbelger@9256: this.form = new DynamicForm(); raimund@3358: gernotbelger@9526: final int selectIndex = 2; gernotbelger@9481: gernotbelger@9256: final int size = data.size(); raimund@3358: raimund@3358: for (int i = 0; i < size; i++) { gernotbelger@9256: final Data d = data.get(i); raimund@3358: gernotbelger@9256: final Label label = new Label(d.getDescription()); raimund@3358: label.setValign(VerticalAlignment.TOP); raimund@3358: label.setHeight(20); raimund@3358: label.setWidth(400); raimund@3358: gernotbelger@9256: final SelectItem combobox = new SelectItem(d.getLabel()); raimund@3358: combobox.setWidth(250); raimund@3358: gernotbelger@9256: final LinkedHashMap funcTypes = new LinkedHashMap(); raimund@3358: gernotbelger@9256: boolean defaultSet = false; gernotbelger@9256: boolean first = true; raimund@3358: gernotbelger@9256: final DataItem def = d.getDefault(); gernotbelger@9256: final String defValue = def != null ? def.getStringValue() : null; raimund@3358: raimund@3358: if (defValue != null && defValue.length() > 0) { raimund@3358: initial.put(d.getLabel(), def.getStringValue()); raimund@3358: defaultSet = true; raimund@3358: } raimund@3358: raimund@3358: // I was here. Me 2. gernotbelger@9481: int j = 0; gernotbelger@9481: assert selectIndex < d.getItems().length; gernotbelger@9256: for (final DataItem item : d.getItems()) { gernotbelger@9481: if (!defaultSet && first && j == selectIndex) { raimund@3358: initial.put(d.getLabel(), item.getStringValue()); raimund@3358: first = false; raimund@3358: } raimund@3358: christian@3846: funcTypes.put(item.getStringValue(), item.getLabel()); gernotbelger@9481: j++; raimund@3358: } raimund@3358: raimund@3358: label.setWidth(50); christian@3846: combobox.setValueMap(funcTypes); raimund@3358: combobox.setShowTitle(false); gernotbelger@9256: this.form.setItems(combobox); raimund@3358: raimund@3358: layout.addMember(label); gernotbelger@9256: layout.addMember(this.form); raimund@3358: } raimund@3358: gernotbelger@9256: this.form.setValues(initial); raimund@3358: raimund@3358: layout.setAlign(VerticalAlignment.TOP); raimund@3358: raimund@3358: return layout; raimund@3358: } raimund@3358: christian@3846: @Override gernotbelger@9256: public Canvas createOld(final DataList dataList) { gernotbelger@9256: final HLayout layout = new HLayout(); gernotbelger@9256: final VLayout vLayout = new VLayout(); raimund@3358: layout.setWidth("400px"); raimund@3358: gernotbelger@9256: final Label label = new Label(dataList.getLabel()); raimund@3358: label.setWidth("200px"); raimund@3358: gernotbelger@9256: final int size = dataList.size(); raimund@3358: for (int i = 0; i < size; i++) { gernotbelger@9256: final Data data = dataList.get(i); gernotbelger@9256: final DataItem[] items = data.getItems(); raimund@3358: gernotbelger@9256: for (final DataItem item : items) { gernotbelger@9256: final HLayout hLayout = new HLayout(); raimund@3358: gernotbelger@9256: final String desc = funcDesc.containsKey(item.getLabel()) ? funcDesc.get(item.getLabel()) : item.getLabel(); raimund@3358: hLayout.addMember(label); christian@3846: hLayout.addMember(new Label(desc)); raimund@3358: raimund@3358: vLayout.addMember(hLayout); raimund@3358: vLayout.setWidth("130px"); raimund@3358: } raimund@3358: } raimund@3358: gernotbelger@9256: final Canvas back = getBackButton(dataList.getState()); raimund@3358: raimund@3358: layout.addMember(label); raimund@3358: layout.addMember(vLayout); raimund@3358: layout.addMember(back); raimund@3358: raimund@3358: return layout; raimund@3358: } raimund@3358: christian@3846: @Override raimund@3358: public Data[] getData() { gernotbelger@9256: final Map values = this.form.getValues(); raimund@3358: gernotbelger@9256: final Data[] list = new Data[values.size()]; gernotbelger@9256: int i = 0; raimund@3358: gernotbelger@9256: for (final Map.Entry entry : values.entrySet()) { gernotbelger@9256: final String fieldname = (String) entry.getKey(); gernotbelger@9256: final String selection = (String) entry.getValue(); raimund@3358: gernotbelger@9256: final DataItem item = new DefaultDataItem(fieldname, null, selection); gernotbelger@9256: gernotbelger@9256: list[i++] = new DefaultData(fieldname, null, null, new DataItem[] { item }); raimund@3358: } raimund@3358: raimund@3358: return list; raimund@3358: } raimund@3358: raimund@3358: @Override gernotbelger@9256: public void setValues(final String cid, final boolean checked) { raimund@3358: } raimund@3358: raimund@3358: @Override raimund@3358: public boolean renderCheckboxes() { raimund@3358: return false; raimund@3358: } raimund@3358: raimund@3358: @Override gernotbelger@9256: public void success(final FixingsOverviewInfo fixInfo) { raimund@3358: } gernotbelger@9256: }