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.Date;
raimund@2505:
raimund@2505: import com.google.gwt.core.client.GWT;
raimund@2505: import com.smartgwt.client.util.SC;
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.DateRangeItem;
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 FixPeriodPanel
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: DateRangeItem inputPanel;
raimund@2505:
raimund@2505: long start;
raimund@2505: long end;
raimund@2505:
raimund@2505: public FixPeriodPanel() {
raimund@2505: htmlOverview = "";
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.period());
raimund@2505: title.setHeight("25px");
raimund@2505:
raimund@2505: DynamicForm form = new DynamicForm();
raimund@2505: inputPanel = new DateRangeItem();
raimund@2505: inputPanel.setToTitle(MESSAGES.to());
raimund@2505: inputPanel.setFromTitle(MESSAGES.from());
raimund@2505: inputPanel.setShowTitle(false);
raimund@2505: form.setFields(inputPanel);
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 start = getData(items, "start");
raimund@2505: Data end = getData(items, "end");
raimund@2505: DataItem[] startItem = start.getItems();
raimund@2505: DataItem[] endItem = end.getItems();
raimund@2505:
raimund@2505: StringBuilder sb = new StringBuilder();
raimund@2505: sb.append(startItem[0].getLabel() + " - ");
raimund@2505: sb.append(endItem[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:
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:
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 = saveDateValues();
raimund@2505: if(valid) {
raimund@2505: String start = Long.valueOf(this.start).toString();
raimund@2505: String end = Long.valueOf(this.end).toString();
raimund@2505: DataItem startItem = new DefaultDataItem("start", "start", start);
raimund@2505: DataItem endItem = new DefaultDataItem("end", "end", end);
raimund@2505: data.add(new DefaultData(
raimund@2505: "start",
raimund@2505: null,
raimund@2505: null,
raimund@2505: new DataItem[] { startItem }));
raimund@2505: data.add(new DefaultData(
raimund@2505: "end",
raimund@2505: null,
raimund@2505: null,
raimund@2505: new DataItem[] { endItem }));
raimund@2505: }
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@2505: protected boolean saveDateValues() {
raimund@2505: Date st = inputPanel.getFromDate();
raimund@2505: Date en = inputPanel.getToDate();
raimund@2505: if (st == null || en == null) {
raimund@2505: SC.warn(MESSAGES.error_wrong_date());
raimund@2505: return false;
raimund@2505: }
raimund@2505:
raimund@2505: long start = st.getTime();
raimund@2505: long end = en.getTime();
raimund@2505:
raimund@2505: if (start <= end) {
raimund@2505: this.start = start;
raimund@2505: this.end = end;
raimund@2505: return true;
raimund@2505: }
raimund@2505: return false;
raimund@2505: }
raimund@2505: }