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:
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 de.intevation.flys.client.client.FLYSConstants;
raimund@2505:
raimund@2505: import de.intevation.flys.client.shared.model.Data;
raimund@2526: import de.intevation.flys.client.shared.model.DataItem;
raimund@2505: import de.intevation.flys.client.shared.model.DataList;
raimund@2537: import de.intevation.flys.client.shared.model.IntDataItem;
raimund@2526: import de.intevation.flys.client.shared.model.IntegerArrayData;
raimund@2902: import de.intevation.flys.client.shared.model.FixingsOverviewInfo.FixEvent;
raimund@2526:
raimund@2526: import de.intevation.flys.client.client.services.FixingsOverviewService;
raimund@2526: import de.intevation.flys.client.client.services.FixingsOverviewServiceAsync;
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 FixEventSelect
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:
sascha@2919: public static final int MAX_DISPLAYED_ITEMS = 5;
sascha@2919:
raimund@2526: protected FixingsOverviewServiceAsync overviewService =
raimund@2526: GWT.create(FixingsOverviewService.class);
raimund@2526:
raimund@2505: protected List events;
raimund@2505:
raimund@2505: public FixEventSelect() {
raimund@2505: htmlOverview = "";
raimund@2505: events = new ArrayList();
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: Canvas title = new Label(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
raimund@2505: public Canvas createOld(DataList dataList) {
raimund@2526: List list = dataList.getAll();
raimund@2526:
raimund@2526: Data data = getData(list, "events");
raimund@2526:
raimund@2526: VLayout dataLayout = new VLayout();
raimund@2526: dataLayout.setWidth(130);
sascha@2919:
raimund@2537: DataItem[] items = data.getItems();
sascha@2919:
sascha@2919: if (items.length > MAX_DISPLAYED_ITEMS) {
sascha@2919: for (int i = 0; i < MAX_DISPLAYED_ITEMS-2; ++i) {
sascha@2919: 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);
sascha@2919: l = new Label(items[items.length-1].getLabel());
sascha@2919: l.setHeight(25);
sascha@2919: dataLayout.addMember(l);
sascha@2919: }
sascha@2919: else {
sascha@2919: for (int i = 0; i < items.length; i++) {
sascha@2919: Label l = new Label(items[i].getLabel());
sascha@2919: l.setHeight(25);
sascha@2919: dataLayout.addMember(l);
sascha@2919: }
raimund@2537: }
raimund@2526:
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@2526: layout.addMember(dataLayout);
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@2526: if (events.size() > 0) {
raimund@2537: IntDataItem[] arr = new IntDataItem[events.size()];
sascha@2919: for (int i = 0, E = events.size(); i < E; i++) {
raimund@2526: try {
raimund@2526: Integer v = new Integer(events.get(i));
raimund@2537: arr[i] = new IntDataItem("id", "id", v.intValue());
raimund@2526: }
raimund@2526: catch (NumberFormatException nfe) {
raimund@2526: return (Data[]) data.toArray(new Data[data.size()]);
raimund@2526: }
raimund@2526: }
raimund@2526:
raimund@2526: IntegerArrayData iad =
raimund@2526: new IntegerArrayData("events", "events", arr);
raimund@2526:
raimund@2526: data.add(iad);
raimund@2526: }
raimund@2526:
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: if (checked) {
raimund@2505: events.add(cid);
raimund@2505: }
raimund@2505: else {
raimund@2505: if (events.contains(cid)) {
raimund@2505: events.remove(cid);
raimund@2505: }
raimund@2505: }
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2505: @Override
raimund@2505: public boolean renderCheckboxes() {
raimund@2505: return true;
raimund@2505: }
raimund@2505:
raimund@2505:
raimund@2902: public void success() {
sascha@2919: for (FixEvent fe: fixInfo.getEvents()) {
sascha@2919: events.add(fe.getCId());
raimund@2902: }
raimund@2902: }
raimund@2517:
raimund@2505: public void dumpGWT(String cid) {
raimund@2505: GWT.log("Setting values for cId: " + cid);
raimund@2505: GWT.log("River: " + fixInfo.getRiver());
raimund@2505: GWT.log("Date: " + fixInfo.getEventByCId(cid).getDate());
raimund@2537: GWT.log("Name: " + fixInfo.getEventByCId(cid).getDescription());
raimund@2505: }
raimund@2505: }