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: }