teichmann@5835: package org.dive4elements.river.client.client.ui.fixation; raimund@3358: 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: teichmann@5835: import org.dive4elements.river.client.shared.model.Data; teichmann@5835: import org.dive4elements.river.client.shared.model.DataItem; teichmann@5835: import org.dive4elements.river.client.shared.model.DataList; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultData; teichmann@5835: import org.dive4elements.river.client.shared.model.DefaultDataItem; raimund@3358: christian@3846: import java.util.HashMap; christian@3846: import java.util.Iterator; christian@3846: import java.util.LinkedHashMap; christian@3846: import java.util.Map; christian@3846: raimund@3358: public class FixFunctionSelect extends FixationPanel { christian@3846: private static final Map funcDesc = new HashMap(); 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)"); 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: raimund@3358: /** The combobox.*/ raimund@3358: protected DynamicForm form; sascha@3366: raimund@3358: @Override raimund@3358: public Canvas createWidget(DataList data) { raimund@3358: VLayout layout = new VLayout(); raimund@3358: layout.setAlign(VerticalAlignment.TOP); raimund@3358: layout.setHeight(25); raimund@3358: raimund@3358: LinkedHashMap initial = new LinkedHashMap(); raimund@3358: raimund@3358: form = new DynamicForm(); raimund@3358: raimund@3358: int size = data.size(); raimund@3358: raimund@3358: for (int i = 0; i < size; i++) { raimund@3358: Data d = data.get(i); raimund@3358: raimund@3358: Label label = new Label(d.getDescription()); raimund@3358: label.setValign(VerticalAlignment.TOP); raimund@3358: label.setHeight(20); raimund@3358: label.setWidth(400); raimund@3358: raimund@3358: SelectItem combobox = new SelectItem(d.getLabel()); raimund@3358: combobox.setWidth(250); raimund@3358: christian@3846: LinkedHashMap funcTypes = new LinkedHashMap(); raimund@3358: raimund@3358: boolean defaultSet = false; raimund@3358: boolean first = true; raimund@3358: raimund@3358: DataItem def = d.getDefault(); raimund@3358: 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. raimund@3358: for (DataItem item: d.getItems()) { raimund@3358: if (!defaultSet && first) { raimund@3358: initial.put(d.getLabel(), item.getStringValue()); raimund@3358: first = false; raimund@3358: } raimund@3358: christian@3846: funcTypes.put(item.getStringValue(), item.getLabel()); raimund@3358: } raimund@3358: raimund@3358: label.setWidth(50); christian@3846: combobox.setValueMap(funcTypes); raimund@3358: combobox.setShowTitle(false); raimund@3358: form.setItems(combobox); raimund@3358: raimund@3358: layout.addMember(label); raimund@3358: layout.addMember(form); raimund@3358: } raimund@3358: raimund@3358: form.setValues(initial); raimund@3358: raimund@3358: layout.setAlign(VerticalAlignment.TOP); raimund@3358: raimund@3358: return layout; raimund@3358: } raimund@3358: raimund@3358: christian@3846: @Override raimund@3358: public Canvas createOld(DataList dataList) { raimund@3358: HLayout layout = new HLayout(); raimund@3358: VLayout vLayout = new VLayout(); raimund@3358: layout.setWidth("400px"); raimund@3358: raimund@3358: Label label = new Label(dataList.getLabel()); raimund@3358: label.setWidth("200px"); raimund@3358: raimund@3358: int size = dataList.size(); raimund@3358: for (int i = 0; i < size; i++) { raimund@3358: Data data = dataList.get(i); raimund@3358: DataItem[] items = data.getItems(); raimund@3358: raimund@3358: for (DataItem item: items) { raimund@3358: HLayout hLayout = new HLayout(); raimund@3358: christian@3846: String desc = funcDesc.containsKey(item.getLabel()) ? christian@3846: 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: raimund@3358: 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: raimund@3358: christian@3846: @Override raimund@3358: public Data[] getData() { raimund@3358: Map values = form.getValues(); raimund@3358: Iterator keys = values.keySet().iterator(); raimund@3358: raimund@3358: Data[] list = new Data[values.size()]; raimund@3358: int i = 0; raimund@3358: raimund@3358: while (keys.hasNext()) { raimund@3358: String fieldname = (String) keys.next(); raimund@3358: String selection = (String) values.get(fieldname); raimund@3358: raimund@3358: DataItem item = new DefaultDataItem(fieldname, null, selection); raimund@3358: raimund@3358: list[i++] = new DefaultData( raimund@3358: fieldname, null, null, new DataItem[] { item }); raimund@3358: } raimund@3358: raimund@3358: return list; raimund@3358: } raimund@3358: raimund@3358: raimund@3358: @Override raimund@3358: public void setValues(String cid, 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 raimund@3358: public void success() { raimund@3358: } raimund@3358: raimund@3358: }