gernotbelger@9066: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9066: * Software engineering by Intevation GmbH gernotbelger@9066: * gernotbelger@9066: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9066: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9066: * documentation coming with Dive4Elements River for details. gernotbelger@9066: */ gernotbelger@9066: gernotbelger@9066: package org.dive4elements.river.client.client.ui.uinfo; gernotbelger@9066: gernotbelger@9066: import java.util.ArrayList; gernotbelger@9066: import java.util.List; gernotbelger@9066: gernotbelger@9066: import org.dive4elements.river.client.client.ui.AbstractUIProvider; gernotbelger@9066: import org.dive4elements.river.client.client.ui.PanelHelper; gernotbelger@9066: import org.dive4elements.river.client.shared.model.Data; gernotbelger@9066: import org.dive4elements.river.client.shared.model.DataItem; gernotbelger@9066: import org.dive4elements.river.client.shared.model.DataList; gernotbelger@9066: import org.dive4elements.river.client.shared.model.DefaultData; gernotbelger@9066: import org.dive4elements.river.client.shared.model.DefaultDataItem; gernotbelger@9066: gernotbelger@9066: import com.smartgwt.client.data.Record; gernotbelger@9066: import com.smartgwt.client.widgets.Canvas; gernotbelger@9066: import com.smartgwt.client.widgets.Label; gernotbelger@9066: import com.smartgwt.client.widgets.form.fields.TextItem; gernotbelger@9066: import com.smartgwt.client.widgets.form.validator.IsIntegerValidator; gernotbelger@9066: import com.smartgwt.client.widgets.form.validator.IsStringValidator; gernotbelger@9066: import com.smartgwt.client.widgets.grid.ListGrid; gernotbelger@9066: import com.smartgwt.client.widgets.grid.ListGridField; gernotbelger@9066: import com.smartgwt.client.widgets.grid.ListGridRecord; gernotbelger@9066: import com.smartgwt.client.widgets.layout.HLayout; gernotbelger@9066: import com.smartgwt.client.widgets.layout.VLayout; gernotbelger@9066: gernotbelger@9066: public class VegetationzonesTablePanel extends AbstractUIProvider { gernotbelger@9066: private static final long serialVersionUID = 1L; gernotbelger@9066: gernotbelger@9066: protected ListGrid elements; gernotbelger@9066: private TextItem vegzone; gernotbelger@9066: private TextItem start; gernotbelger@9066: private TextItem end; gernotbelger@9066: private ListGrid table; gernotbelger@9066: gernotbelger@9066: private static final String datakey = "vegzones"; gernotbelger@9066: gernotbelger@9066: public Canvas createWidget(final DataList data) { gernotbelger@9066: gernotbelger@9066: final VLayout root = new VLayout(); gernotbelger@9066: final HLayout input = new HLayout(); gernotbelger@9066: final VLayout tableLayout = new VLayout(); gernotbelger@9066: gernotbelger@9066: this.elements = new ListGrid(); gernotbelger@9066: gernotbelger@9066: final Label title = new Label(data.get(0).getDescription()); gernotbelger@9066: title.setHeight("35px"); // orig:25 gernotbelger@9066: gernotbelger@9066: this.vegzone = PanelHelper.createItem("uinfo_vegetation_zone_label", this.MSG.uinfo_vegetation_zone_label(), 200, new IsStringValidator()); gernotbelger@9066: this.start = PanelHelper.createItem("uinfo_vegetation_zones_from", this.MSG.uinfo_vegetation_zones_from(), 40, new IsIntegerValidator()); gernotbelger@9066: this.end = PanelHelper.createItem("uinfo_vegetation_zones_to", this.MSG.uinfo_vegetation_zones_to(), 40, new IsIntegerValidator()); gernotbelger@9066: gernotbelger@9066: final Label sel = new Label(this.MSG.select()); gernotbelger@9066: sel.setHeight(25); gernotbelger@9066: this.elements.setWidth(450); // 185 gernotbelger@9066: this.elements.setHeight(500); // 120 gernotbelger@9066: this.elements.setShowHeaderContextMenu(false); gernotbelger@9066: this.elements.setCanReorderFields(false); gernotbelger@9066: this.elements.setCanSort(false); gernotbelger@9066: this.elements.setCanEdit(false); gernotbelger@9066: final ListGridField vegzone = new ListGridField("vegzone", this.MSG.uinfo_vegetation_zones_label()); gernotbelger@9066: final ListGridField from = new ListGridField("from", this.MSG.uinfo_vegetation_zones_from()); gernotbelger@9066: final ListGridField to = new ListGridField("to", this.MSG.uinfo_vegetation_zones_to()); gernotbelger@9066: vegzone.setWidth(285); gernotbelger@9066: from.setWidth(70); gernotbelger@9066: to.setWidth(70); gernotbelger@9066: gernotbelger@9066: for (final Data dataItem : data.getAll()) { gernotbelger@9066: createEntry(dataItem); gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: this.elements.setFields(vegzone, from, to); gernotbelger@9066: gernotbelger@9066: tableLayout.addMember(this.elements); gernotbelger@9066: root.addMember(title); gernotbelger@9066: root.addMember(input); gernotbelger@9066: root.addMember(tableLayout); gernotbelger@9066: root.addMember(PanelHelper.getSpacer(10)); gernotbelger@9066: gernotbelger@9066: return root; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: private void createEntry(final Data data) { gernotbelger@9066: gernotbelger@9066: if (data.getItems() != null) { gernotbelger@9066: for (final DataItem dataItem : data.getItems()) { gernotbelger@9066: if (dataItem.getStringValue() != null) { gernotbelger@9066: if (dataItem.getStringValue().contains(",")) { gernotbelger@9066: final String[] vals = dataItem.getStringValue().split(","); gernotbelger@9066: if (vals.length == 3) { gernotbelger@9066: final String vegzone = vals[0]; gernotbelger@9066: final String from = vals[1]; gernotbelger@9066: final String to = vals[2]; gernotbelger@9066: gernotbelger@9066: if (vegzone == null || from == null || to == null) { gernotbelger@9066: return; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: final ListGridRecord r = new ListGridRecord(); gernotbelger@9066: r.setAttribute("vegzone", vegzone); gernotbelger@9066: r.setAttribute("from", from); gernotbelger@9066: r.setAttribute("to", to); gernotbelger@9066: this.elements.addData(r); gernotbelger@9066: gernotbelger@9066: } gernotbelger@9066: } gernotbelger@9066: } gernotbelger@9066: } gernotbelger@9066: } gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: @Override gernotbelger@9066: public Canvas createOld(final DataList dataList) { // TODO: Veg-Table übersichtlich oben anzeigen, irgendwie abkürzen (etwa "20 Einträge") gernotbelger@9066: final HLayout layout = new HLayout(); gernotbelger@9066: layout.setWidth("400px"); gernotbelger@9066: final VLayout vLayout = new VLayout(); gernotbelger@9066: vLayout.setWidth(130); gernotbelger@9066: final Label label = new Label(dataList.getLabel()); gernotbelger@9066: label.setWidth("200px"); gernotbelger@9066: label.setHeight(25); gernotbelger@9066: gernotbelger@9066: final List items = dataList.getAll(); gernotbelger@9066: final Data str = getData(items, datakey); gernotbelger@9066: final DataItem[] strItems = str.getItems(); gernotbelger@9066: gernotbelger@9066: final String[] entries = strItems[0].getLabel().split(";"); gernotbelger@9066: for (final String entry : entries) { gernotbelger@9066: final String[] vals = entry.split(","); gernotbelger@9066: final Label dateLabel = new Label(vals[0] + " TODO: MAKE SELECTED ENTRIES VEGZONE FOR ARTIFACT" + vals[1]); gernotbelger@9066: dateLabel.setHeight(20); gernotbelger@9066: vLayout.addMember(dateLabel); gernotbelger@9066: } gernotbelger@9066: final Canvas back = getBackButton(dataList.getState()); gernotbelger@9066: layout.addMember(label); gernotbelger@9066: layout.addMember(vLayout); gernotbelger@9066: layout.addMember(back); gernotbelger@9066: gernotbelger@9066: return layout; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: @Override gernotbelger@9066: public Canvas create(final DataList data) { gernotbelger@9066: final VLayout layout = new VLayout(); gernotbelger@9066: final Canvas helper = createHelper(); gernotbelger@9066: this.helperContainer.addMember(helper); gernotbelger@9066: gernotbelger@9066: final Canvas submit = getNextButton(); gernotbelger@9066: // if (data.size() == 0) { // TODO: GET DATA gernotbelger@9066: gernotbelger@9066: data.add(getDummyData()); gernotbelger@9066: gernotbelger@9066: // } gernotbelger@9066: final Canvas widget = createWidget(data); gernotbelger@9066: gernotbelger@9066: layout.addMember(widget); gernotbelger@9066: layout.addMember(submit); // TODO: SUBMIT gernotbelger@9066: gernotbelger@9066: // fetchSedimentLoadData(); //TODO: feed from database... gernotbelger@9066: gernotbelger@9066: return layout; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: private Canvas createHelper() { gernotbelger@9066: this.table = new ListGrid(); gernotbelger@9066: this.table.setShowHeaderContextMenu(false); gernotbelger@9066: this.table.setWidth100(); gernotbelger@9066: this.table.setShowRecordComponents(true); gernotbelger@9066: this.table.setShowRecordComponentsByCell(true); gernotbelger@9066: this.table.setHeight100(); gernotbelger@9066: this.table.setEmptyMessage(this.MSG.empty_table()); gernotbelger@9066: this.table.setCanReorderFields(false); gernotbelger@9066: gernotbelger@9066: /* Input support pins */ gernotbelger@9066: // final String baseUrl = GWT.getHostPageBaseURL(); gernotbelger@9066: // final ListGridField pinFrom = new ListGridField("fromIcon", this.MSG.uinfo_vegetation_zones_from()); gernotbelger@9066: // pinFrom.setWidth(300); gernotbelger@9066: // pinFrom.setType(ListGridFieldType.ICON); gernotbelger@9066: // pinFrom.setCellIcon(baseUrl + this.MSG.markerGreen()); gernotbelger@9066: // gernotbelger@9066: // final ListGridField pinTo = new ListGridField("toIcon", this.MSG.uinfo_vegetation_zones_to()); gernotbelger@9066: // pinTo.setType(ListGridFieldType.ICON); gernotbelger@9066: // pinTo.setWidth(300); gernotbelger@9066: // pinTo.setCellIcon(baseUrl + this.MSG.markerRed()); gernotbelger@9066: // gernotbelger@9066: // pinFrom.addRecordClickHandler(new RecordClickHandler() { gernotbelger@9066: // @Override gernotbelger@9066: // public void onRecordClick(final RecordClickEvent e) { gernotbelger@9066: // final Record r = e.getRecord(); gernotbelger@9066: // VegetationzonesTableEditPanel.this.vegzone.setValue(r.getAttribute("date")); // date?? gernotbelger@9066: // } gernotbelger@9066: // }); gernotbelger@9066: // gernotbelger@9066: // pinFrom.addRecordClickHandler(new RecordClickHandler() { gernotbelger@9066: // @Override gernotbelger@9066: // public void onRecordClick(final RecordClickEvent e) { gernotbelger@9066: // final Record r = e.getRecord(); gernotbelger@9066: // VegetationzonesTableEditPanel.this.start.setValue(r.getAttribute("date")); gernotbelger@9066: // } gernotbelger@9066: // }); gernotbelger@9066: // gernotbelger@9066: // pinTo.addRecordClickHandler(new RecordClickHandler() { gernotbelger@9066: // @Override gernotbelger@9066: // public void onRecordClick(final RecordClickEvent e) { gernotbelger@9066: // final Record r = e.getRecord(); gernotbelger@9066: // VegetationzonesTableEditPanel.this.end.setValue(r.getAttribute("date")); gernotbelger@9066: // } gernotbelger@9066: // }); gernotbelger@9066: // gernotbelger@9066: // final ListGridField date = new ListGridField("date", this.MSG.year()); gernotbelger@9066: // date.setType(ListGridFieldType.TEXT); gernotbelger@9066: // date.setWidth(100); gernotbelger@9066: // gernotbelger@9066: // final ListGridField descr = new ListGridField("description", this.MSG.description()); gernotbelger@9066: // descr.setType(ListGridFieldType.TEXT); gernotbelger@9066: // descr.setWidth("*"); gernotbelger@9066: // gernotbelger@9066: // this.table.setFields(pinFrom, pinTo, date, descr); gernotbelger@9066: return this.table; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: @Override gernotbelger@9066: protected Data[] getData() { gernotbelger@9066: final List data = new ArrayList(); gernotbelger@9066: gernotbelger@9066: final ListGridRecord[] lgr = this.elements.getRecords(); gernotbelger@9066: if (lgr.length == 0) { gernotbelger@9066: return getDummyData();// return new Data[0]; gernotbelger@9066: } gernotbelger@9066: String d = ""; gernotbelger@9066: for (final ListGridRecord element : lgr) { gernotbelger@9066: final Record r = element; gernotbelger@9066: d += r.getAttribute("vegzone") + "," + r.getAttribute("from") + "," + r.getAttribute("to"); gernotbelger@9066: d += ";"; gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: final DataItem item = new DefaultDataItem(datakey, null, d); // DATA-key gernotbelger@9066: data.add(new DefaultData(datakey, null, null, new DataItem[] { item })); gernotbelger@9066: return data.toArray(new Data[data.size()]); gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: private Data[] getDummyData() { gernotbelger@9066: final List data = new ArrayList(); gernotbelger@9066: String d = ""; gernotbelger@9066: d = d + "Zonaler Wald" + "," + "0" + "," + "5"; gernotbelger@9066: final DataItem item = new DefaultDataItem(datakey, "entryDescription", d); // DATA-key gernotbelger@9066: data.add(new DefaultData(datakey, null, null, new DataItem[] { item })); gernotbelger@9066: return data.toArray(new Data[data.size()]); gernotbelger@9066: } gernotbelger@9066: gernotbelger@9066: }