raimund@2898: package de.intevation.flys.client.client.ui;
raimund@2898:
sascha@2899: import com.google.gwt.core.client.GWT;
raimund@2898: import com.google.gwt.i18n.client.NumberFormat;
christian@4131:
raimund@2898: import com.smartgwt.client.util.SC;
raimund@2898: import com.smartgwt.client.widgets.Canvas;
raimund@2898: import com.smartgwt.client.widgets.Label;
sascha@2899: import com.smartgwt.client.widgets.form.DynamicForm;
sascha@2899: import com.smartgwt.client.widgets.form.fields.TextItem;
raimund@2898: import com.smartgwt.client.widgets.layout.HLayout;
raimund@2898: import com.smartgwt.client.widgets.layout.VLayout;
raimund@2898:
raimund@2898: import de.intevation.flys.client.client.FLYSConstants;
raimund@2898: import de.intevation.flys.client.shared.model.Data;
raimund@2898: import de.intevation.flys.client.shared.model.DataItem;
raimund@2898: import de.intevation.flys.client.shared.model.DataList;
raimund@2898: import de.intevation.flys.client.shared.model.DefaultData;
raimund@2898: import de.intevation.flys.client.shared.model.DefaultDataItem;
sascha@2899:
christian@4131: import java.util.ArrayList;
christian@4131: import java.util.List;
christian@4131:
raimund@2898: /**
raimund@2898: * This UIProvider creates a panel for location or distance input.
raimund@2898: *
raimund@2898: * @author Raimund Renkert
raimund@2898: */
raimund@2898: public class DoubleInputPanel
raimund@2898: extends AbstractUIProvider
raimund@2898: {
christian@4131:
christian@4131: private static final long serialVersionUID = 2006773072352563622L;
christian@4131:
raimund@2898: /** The message class that provides i18n strings. */
raimund@2898: protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
raimund@2898:
raimund@2898: private TextItem inputPanel;
raimund@2898:
raimund@2898: private double value;
raimund@2898:
felix@4279: protected String dataName;
felix@4279:
felix@4060:
raimund@2898: public DoubleInputPanel() {
felix@4279: dataName = "outliers";
felix@4279: }
felix@4279:
felix@4279:
felix@4279: public DoubleInputPanel(String dataName) {
felix@4279: this.dataName = dataName;
raimund@2898: }
raimund@2898:
raimund@2898:
christian@4131: @Override
raimund@2898: public Canvas create(DataList list) {
raimund@2898: VLayout layout = new VLayout();
raimund@2898:
raimund@2898: Canvas helper = createHelper();
raimund@2898: this.helperContainer.addMember(helper);
raimund@2898:
raimund@2898: Canvas submit = getNextButton();
raimund@2898: Canvas widget = createWidget(list);
raimund@2898:
raimund@2898: layout.addMember(widget);
raimund@2898: layout.addMember(submit);
raimund@2898: return layout;
raimund@2898: }
raimund@2898:
raimund@2898:
felix@4060: /** Create a labelled input-panel. */
raimund@2898: public Canvas createWidget(DataList data) {
raimund@2898: VLayout layout = new VLayout();
raimund@2898:
raimund@2898: Label title = new Label(data.get(0).getDescription());
raimund@2898: title.setHeight("25px");
raimund@2898:
ingo@3369: DataItem defaultItem = data.get(0).getDefault();
ingo@3369:
raimund@2898: DynamicForm form = new DynamicForm();
raimund@2898: inputPanel = new TextItem();
felix@4279: inputPanel.setTitle(dataName);
raimund@2898: inputPanel.setShowTitle(false);
ingo@3369:
ingo@3369: if (defaultItem != null) {
ingo@3369: inputPanel.setValue(defaultItem.getStringValue());
ingo@3369: }
ingo@3369:
raimund@2898: form.setFields(inputPanel);
raimund@2898:
raimund@2898: layout.addMember(title);
raimund@2898: layout.addMember(form);
raimund@2898:
raimund@2898: return layout;
raimund@2898: }
raimund@2898:
felix@4279:
raimund@2898: protected Canvas createHelper() {
raimund@2898: return new VLayout();
raimund@2898: }
raimund@2898:
felix@4060:
felix@4060: /** Create canvas to show previously entered value. */
raimund@2898: @Override
raimund@2898: public Canvas createOld(DataList dataList) {
raimund@2898: List items = dataList.getAll();
raimund@2898:
felix@4279: Data d = getData(items, dataName);
raimund@2898: DataItem[] item = d.getItems();
raimund@2898:
raimund@2898: String v = item[0].getLabel();
raimund@2898:
raimund@2898: Label old = new Label(v);
raimund@2898: old.setWidth(130);
raimund@2898:
raimund@2898: HLayout layout = new HLayout();
raimund@2898: layout.setWidth("400px");
raimund@2898:
raimund@2898: Label label = new Label(dataList.getLabel());
raimund@2898: label.setWidth("200px");
raimund@2898:
raimund@2898: Canvas back = getBackButton(dataList.getState());
raimund@2898:
raimund@2898: layout.addMember(label);
raimund@2898: layout.addMember(old);
raimund@2898: layout.addMember(back);
raimund@2898:
raimund@2898: return layout;
raimund@2898: }
raimund@2898:
raimund@2898:
raimund@2898: /**
raimund@2898: * This method returns the selected data.
raimund@2898: *
raimund@2898: * @return the selected/inserted data.
raimund@2898: */
christian@4131: @Override
raimund@2898: public Data[] getData() {
raimund@2898: List data = new ArrayList();
raimund@2898:
raimund@2898: boolean valid = saveDataValues();
raimund@2898: if(valid) {
raimund@2898:
raimund@2898: String vs = Double.valueOf(this.value).toString();
felix@4279: DataItem item = new DefaultDataItem(dataName, dataName, vs);
raimund@2898: data.add(new DefaultData(
felix@4279: dataName,
raimund@2898: null,
raimund@2898: null,
raimund@2898: new DataItem[] { item }));
raimund@2898: }
raimund@2898:
sascha@3379: return data.toArray(new Data[data.size()]);
raimund@2898: }
raimund@2898:
raimund@2898:
raimund@2898: protected boolean saveDataValues() {
raimund@2898: String st = inputPanel.getValueAsString();
raimund@2898: if (st == null) {
raimund@2898: SC.warn("fehler... TODO");
raimund@2898: return false;
raimund@2898: }
raimund@2898:
raimund@2898: try {
raimund@2898: NumberFormat nf = NumberFormat.getDecimalFormat();
raimund@2898: double d = nf.parse(st);
raimund@2898: this.value = d;
raimund@2898: }
raimund@2898: catch(NumberFormatException nfe) {
raimund@2898: SC.warn("fehler... nfe... TODO");
raimund@2898: return false;
raimund@2898: }
raimund@2898: return true;
raimund@2898: }
raimund@2898: }
felix@4060: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :