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@2505:
raimund@2505: import java.util.ArrayList;
gernotbelger@9256: import java.util.List;
raimund@2505:
teichmann@5835: import org.dive4elements.river.client.client.FLYSConstants;
gernotbelger@9256: import org.dive4elements.river.client.client.services.FixingsOverviewService;
gernotbelger@9256: import org.dive4elements.river.client.client.services.FixingsOverviewServiceAsync;
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;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.FixingsOverviewInfo;
gernotbelger@9256: import org.dive4elements.river.client.shared.model.FixingsOverviewInfo.FixEvent;
teichmann@5835: import org.dive4elements.river.client.shared.model.IntDataItem;
teichmann@5835: import org.dive4elements.river.client.shared.model.IntegerArrayData;
raimund@2526:
gernotbelger@9256: import com.google.gwt.core.client.GWT;
gernotbelger@9256: import com.smartgwt.client.widgets.Canvas;
gernotbelger@9256: import com.smartgwt.client.widgets.Label;
gernotbelger@9256: import com.smartgwt.client.widgets.layout.HLayout;
gernotbelger@9256: import com.smartgwt.client.widgets.layout.VLayout;
raimund@2505:
raimund@2505: /**
felix@5334: * This UIProvider lets you select events.
raimund@2505: *
raimund@2505: * @author Raimund Renkert
raimund@2505: */
gernotbelger@9256: public class FixEventSelect extends FixationPanel {
raimund@2505: /** The message class that provides i18n strings. */
gernotbelger@9256: private final FLYSConstants MESSAGES = GWT.create(FLYSConstants.class);
sascha@2919:
gernotbelger@9256: private static final int MAX_DISPLAYED_ITEMS = 5;
raimund@2505:
gernotbelger@9256: private final FixingsOverviewServiceAsync overviewService = GWT.create(FixingsOverviewService.class);
raimund@2505:
gernotbelger@9256: private final List events = new ArrayList();
gernotbelger@9256:
gernotbelger@9256: @Override
gernotbelger@9256: public Canvas createWidget(final DataList data) {
raimund@2505: instances.put(this.artifact.getUuid(), this);
raimund@2505:
gernotbelger@9256: final VLayout layout = new VLayout();
raimund@2505:
gernotbelger@9256: final Canvas title = new Label(this.MESSAGES.eventselect());
raimund@2505: title.setHeight("25px");
raimund@2505:
raimund@2505: layout.addMember(title);
raimund@2505: return layout;
raimund@2505: }
raimund@2505:
raimund@2505: @Override
gernotbelger@9256: public Canvas createOld(final DataList dataList) {
gernotbelger@9256: final List list = dataList.getAll();
raimund@2526:
gernotbelger@9256: final Data data = getData(list, "events");
raimund@2526:
gernotbelger@9256: final VLayout dataLayout = new VLayout();
raimund@2526: dataLayout.setWidth(130);
sascha@2919:
gernotbelger@9256: final DataItem[] items = data.getItems();
sascha@2919:
sascha@2919: if (items.length > MAX_DISPLAYED_ITEMS) {
gernotbelger@9256: for (int i = 0; i < MAX_DISPLAYED_ITEMS - 2; ++i) {
gernotbelger@9256: final Label l = new Label(items[i].getLabel());
sascha@2919: l.setHeight(25);
sascha@2919: dataLayout.addMember(l);
sascha@2919: }
sascha@2919: Label l = new Label("...");
raimund@2537: l.setHeight(25);
raimund@2537: dataLayout.addMember(l);
gernotbelger@9256: l = new Label(items[items.length - 1].getLabel());
sascha@2919: l.setHeight(25);
sascha@2919: dataLayout.addMember(l);
gernotbelger@9256: } else {
gernotbelger@9256: for (final DataItem item : items) {
gernotbelger@9256: final Label l = new Label(item.getLabel());
sascha@2919: l.setHeight(25);
sascha@2919: dataLayout.addMember(l);
sascha@2919: }
raimund@2537: }
raimund@2526:
gernotbelger@9256: final HLayout layout = new HLayout();
raimund@2505: layout.setWidth("400px");
raimund@2505:
gernotbelger@9256: final Label label = new Label(dataList.getLabel());
raimund@2505: label.setWidth("200px");
raimund@2505:
gernotbelger@9256: final Canvas back = getBackButton(dataList.getState());
raimund@2505:
raimund@2505: layout.addMember(label);
raimund@2526: layout.addMember(dataLayout);
raimund@2505: layout.addMember(back);
raimund@2505:
raimund@2505: return layout;
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: */
gernotbelger@9256: @Override
raimund@2505: public Data[] getData() {
gernotbelger@9256: final List data = new ArrayList();
raimund@2505:
gernotbelger@9256: if (this.events.size() > 0) {
gernotbelger@9256: final IntDataItem[] arr = new IntDataItem[this.events.size()];
gernotbelger@9256: for (int i = 0, E = this.events.size(); i < E; i++) {
raimund@2526: try {
gernotbelger@9256: final Integer v = new Integer(this.events.get(i));
raimund@2537: arr[i] = new IntDataItem("id", "id", v.intValue());
raimund@2526: }
gernotbelger@9256: catch (final NumberFormatException nfe) {
gernotbelger@9256: return data.toArray(new Data[data.size()]);
raimund@2526: }
raimund@2526: }
raimund@2526:
gernotbelger@9256: final IntegerArrayData iad = new IntegerArrayData("events", "events", arr);
raimund@2526:
raimund@2526: data.add(iad);
raimund@2526: }
raimund@2526:
sascha@3379: return data.toArray(new Data[data.size()]);
raimund@2505: }
raimund@2505:
raimund@2505: @Override
gernotbelger@9256: public void setValues(final String cid, final boolean checked) {
raimund@2505: if (checked) {
gernotbelger@9256: this.events.add(cid);
gernotbelger@9256: } else {
gernotbelger@9256: if (this.events.contains(cid)) {
gernotbelger@9256: this.events.remove(cid);
raimund@2505: }
raimund@2505: }
raimund@2505: }
raimund@2505:
raimund@2505: @Override
raimund@2505: public boolean renderCheckboxes() {
raimund@2505: return true;
raimund@2505: }
raimund@2505:
gernotbelger@9256: @Override
gernotbelger@9256: public void success(final FixingsOverviewInfo fixInfo) {
gernotbelger@9256: for (final FixEvent fe : fixInfo.getEvents()) {
gernotbelger@9256: this.events.add(fe.getCId());
raimund@2902: }
raimund@2902: }
raimund@2517:
gernotbelger@9256: // public void dumpGWT(String cid) {
gernotbelger@9256: // GWT.log("Setting values for cId: " + cid);
gernotbelger@9256: // GWT.log("River: " + fixInfo.getRiver());
gernotbelger@9256: // GWT.log("Date: " + fixInfo.getEventByCId(cid).getDate());
gernotbelger@9256: // GWT.log("Name: " + fixInfo.getEventByCId(cid).getDescription());
gernotbelger@9256: // }
raimund@2505: }