raimund@2505: package de.intevation.flys.client.client.ui.fixation;
raimund@2505:
raimund@2505: import java.util.List;
raimund@2505: import java.util.ArrayList;
raimund@2505: import java.util.LinkedHashMap;
raimund@2505:
raimund@2505: import java.lang.NumberFormatException;
raimund@2505:
raimund@2505: import com.google.gwt.core.client.GWT;
raimund@2505:
raimund@2505: import com.smartgwt.client.widgets.Canvas;
raimund@2505: import com.smartgwt.client.widgets.Label;
raimund@2505:
raimund@2505: import com.smartgwt.client.widgets.layout.HLayout;
raimund@2505: import com.smartgwt.client.widgets.layout.VLayout;
raimund@2505:
raimund@2505: import com.smartgwt.client.widgets.form.DynamicForm;
raimund@2505: import com.smartgwt.client.widgets.form.fields.SelectItem;
raimund@2505: import com.smartgwt.client.widgets.form.fields.StaticTextItem;
raimund@2505:
raimund@2505: import de.intevation.flys.client.client.FLYSConstants;
raimund@2505:
raimund@2505: import de.intevation.flys.client.shared.model.Data;
raimund@2505: import de.intevation.flys.client.shared.model.DataItem;
raimund@2505: import de.intevation.flys.client.shared.model.DataList;
raimund@2505: import de.intevation.flys.client.shared.model.DefaultData;
raimund@2505: import de.intevation.flys.client.shared.model.DefaultDataItem;
raimund@2505:
raimund@2505: /**
raimund@2505: * This UIProvider creates a panel for location or distance input.
raimund@2505: *
raimund@2505: * @author Raimund Renkert
raimund@2505: */
raimund@2505: public class FixGaugeSelectPanel
raimund@2505: extends FixationPanel
raimund@2505: {
raimund@2505: /** The message class that provides i18n strings. */
raimund@2505: protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
raimund@2505:
raimund@2505: protected String first;
raimund@2505: protected String second;
raimund@2505:
raimund@2505: protected SelectItem from;
raimund@2505: protected SelectItem to;
raimund@2505:
raimund@2887: protected LinkedHashMap mapValues;
raimund@2887:
raimund@2505: public FixGaugeSelectPanel() {
raimund@2505: htmlOverview = "";
raimund@2887: mapValues = new LinkedHashMap();
sascha@2888: mapValues.put("0", "[0, (MNQ + MQ)/2)");
sascha@2888: mapValues.put("1", "[(MNQ + MQ)/2, (MQ + MHQ)/2)");
sascha@2888: mapValues.put("2", "[(MQ + MHQ)/2, HQ5)");
sascha@2888: mapValues.put("3", "[HQ5, \u221e)");
raimund@2887:
raimund@2887:
raimund@2505: }
raimund@2505:
raimund@2505: public Canvas createWidget(DataList data) {
raimund@2505: instances.put(this.artifact.getUuid(), this);
raimund@2505:
raimund@2505: VLayout layout = new VLayout();
raimund@2505:
raimund@2505: Label title = new Label(MESSAGES.gauge_class());
raimund@2505: title.setHeight(25);
raimund@2505:
raimund@2505: from = new SelectItem(MESSAGES.from());
raimund@2505: to = new SelectItem(MESSAGES.to());
raimund@2505:
raimund@2505: from.setShowTitle(false);
raimund@2505: to.setShowTitle(false);
raimund@2887: from.setValueMap(mapValues);
raimund@2505: from.setWidth(60);
raimund@2887: to.setValueMap(mapValues);
raimund@2505: to.setWidth(60);
raimund@2505:
raimund@2505: DynamicForm form = new DynamicForm();
raimund@2505: StaticTextItem separator = new StaticTextItem("separator");
raimund@2505: separator.setShowTitle(false);
raimund@2505: separator.setValue(MESSAGES.to());
raimund@2505: form.setNumCols(5);
raimund@2505: form.setFields(from, separator, to);
raimund@2505:
raimund@2505: layout.addMember(title);
raimund@2505: layout.addMember(form);
raimund@2505:
raimund@2505: return layout;
raimund@2505: }
raimund@2505:
raimund@2505: @Override
raimund@2505: public Canvas createOld(DataList dataList) {
raimund@2505: List items = dataList.getAll();
raimund@2505:
raimund@2505: Data f = getData(items, "q1");
raimund@2505: Data t = getData(items, "q2");
raimund@2505: DataItem[] fItems = f.getItems();
raimund@2505: DataItem[] tItems = t.getItems();
raimund@2505:
raimund@2505: StringBuilder sb = new StringBuilder();
raimund@2887: sb.append(mapValues.get(fItems[0].getLabel()));
raimund@2505: sb.append(" " + MESSAGES.to() + " ");
raimund@2887: sb.append(mapValues.get(tItems[0].getLabel()));
raimund@2505:
raimund@2505: Label old = new Label(sb.toString());
raimund@2505: old.setWidth(130);
raimund@2505:
raimund@2505: HLayout layout = new HLayout();
raimund@2505: layout.setWidth("400px");
raimund@2505: Label label = new Label(dataList.getLabel());
raimund@2505: label.setWidth("200px");
raimund@2505:
raimund@2505: Canvas back = getBackButton(dataList.getState());
raimund@2505:
raimund@2505: layout.addMember(label);
raimund@2505: layout.addMember(old);
raimund@2505: layout.addMember(back);
raimund@2505: return layout;
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2505: /**
raimund@2505: * This method returns the selected data.
raimund@2505: *
raimund@2505: * @return the selected/inserted data.
raimund@2505: */
raimund@2505: public Data[] getData() {
raimund@2505: List data = new ArrayList();
raimund@2505:
raimund@2505: boolean valid = saveClassValues();
raimund@2505: if (valid) {
raimund@2505: DataItem firstItem = new DefaultDataItem("q1", "q1", this.first);
raimund@2505: DataItem secItem = new DefaultDataItem("q2", "q2", this.second);
raimund@2505: data.add(new DefaultData(
raimund@2505: "q1",
raimund@2505: null,
raimund@2505: null,
raimund@2505: new DataItem[] { firstItem }));
raimund@2505: data.add(new DefaultData(
raimund@2505: "q2",
raimund@2505: null,
raimund@2505: null,
raimund@2505: new DataItem[] { secItem }));
raimund@2505: }
raimund@2505: return (Data[]) data.toArray(new Data[data.size()]);
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2505: @Override
raimund@2505: public void setValues(String cid, boolean checked) {
raimund@2505: // No user interaction, do nothing.
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2505: @Override
raimund@2505: public boolean renderCheckboxes() {
raimund@2505: // No selection, return false.
raimund@2505: return false;
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2537: public void success() {}
raimund@2517:
raimund@2505: protected boolean saveClassValues() {
raimund@2505: String v1 = from.getValueAsString();
raimund@2505: String v2 = to.getValueAsString();
raimund@2505: try {
raimund@2505: int v1i = Integer.valueOf(v1).intValue();
raimund@2505: int v2i = Integer.valueOf(v2).intValue();
raimund@2505: if (v1i <= v2i) {
raimund@2505: this.first = v1;
raimund@2505: this.second = v2;
raimund@2505: return true;
raimund@2505: }
raimund@2505: }
raimund@2505: catch(NumberFormatException nfe) {
raimund@2505: return false;
raimund@2505: }
raimund@2505: return false;
raimund@2505: }
raimund@2505: }