raimund@282: package de.intevation.flys.client.client.ui;
raimund@282:
raimund@282: import com.google.gwt.core.client.GWT;
raimund@282:
raimund@282: import com.smartgwt.client.types.VerticalAlignment;
raimund@282: import com.smartgwt.client.widgets.Canvas;
felix@3546: import com.smartgwt.client.widgets.Img;
raimund@282: import com.smartgwt.client.widgets.Label;
raimund@282: import com.smartgwt.client.widgets.form.DynamicForm;
raimund@282: import com.smartgwt.client.widgets.form.fields.LinkItem;
christian@4064: import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
christian@4064: import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
raimund@282: import com.smartgwt.client.widgets.layout.HLayout;
raimund@282: import com.smartgwt.client.widgets.layout.VLayout;
raimund@282:
christian@4064: import de.intevation.flys.client.client.FLYSConstants;
christian@4064: import de.intevation.flys.client.client.event.StepForwardEvent;
raimund@282: import de.intevation.flys.client.shared.model.Data;
raimund@282: import de.intevation.flys.client.shared.model.DataItem;
raimund@282: import de.intevation.flys.client.shared.model.DataList;
raimund@282: import de.intevation.flys.client.shared.model.DefaultData;
raimund@282: import de.intevation.flys.client.shared.model.DefaultDataItem;
raimund@282:
raimund@282:
raimund@282: /**
raimund@282: * This UIProvider displays the DataItems of the Data object in a list of links.
raimund@282: *
raimund@282: * @author Raimund Renkert
raimund@282: */
raimund@282: public class LinkSelection
raimund@282: extends MapSelection
raimund@282: {
christian@4131:
christian@4131: private static final long serialVersionUID = -7138270638349711024L;
christian@4131:
raimund@282: /** The message class that provides i18n strings.*/
raimund@282: protected FLYSConstants messages = GWT.create(FLYSConstants.class);
raimund@282:
raimund@282: /** The selected river*/
raimund@282: protected Data river;
raimund@282:
raimund@282: /**
raimund@282: * This method currently returns a
raimund@282: * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all
raimund@282: * data items in a list of links stored in data.
raimund@282: *
raimund@282: * @param data The {@link Data} object.
raimund@282: *
raimund@282: * @return a combobox.
raimund@282: */
christian@4064: @Override
raimund@282: public Canvas create(DataList data) {
raimund@282: VLayout v = new VLayout();
raimund@282: v.setMembersMargin(10);
raimund@282: v.setAlign(VerticalAlignment.TOP);
raimund@282: if (data.getState() == null) {
raimund@282: Canvas module = super.createWidget(data);
raimund@282: v.addMember(module);
raimund@282: }
raimund@282: Canvas content = createWidget(data);
raimund@282: v.addMember(content);
raimund@282:
raimund@282: return v;
raimund@282: }
raimund@282:
raimund@282:
christian@4064: @Override
raimund@282: public Canvas createOld(DataList dataList) {
raimund@282: HLayout layout = new HLayout();
raimund@282: VLayout vLayout = new VLayout();
raimund@282: layout.setWidth("400px");
raimund@282:
raimund@282: Label label = new Label(dataList.getLabel());
raimund@282: label.setWidth("200px");
raimund@282:
raimund@282: int size = dataList.size();
raimund@282: for (int i = 0; i < size; i++) {
raimund@282: Data data = dataList.get(i);
raimund@282: DataItem[] items = data.getItems();
raimund@282:
raimund@282: for (DataItem item: items) {
raimund@282: HLayout hLayout = new HLayout();
raimund@282:
raimund@282: hLayout.addMember(label);
raimund@282: hLayout.addMember(new Label(item.getLabel()));
raimund@282:
raimund@282: vLayout.addMember(hLayout);
raimund@282: vLayout.setWidth("130px");
raimund@282: }
raimund@282: }
raimund@282:
raimund@282: Canvas back = getBackButton(dataList.getState());
raimund@282:
raimund@282: layout.addMember(label);
raimund@282: layout.addMember(vLayout);
raimund@282: layout.addMember(back);
raimund@282:
raimund@282: return layout;
raimund@282: }
raimund@282:
raimund@282:
raimund@282: /**
raimund@282: * This method creates the content of the widget.
raimund@282: *
raimund@282: * @param data The {@link Data} object.
raimund@282: *
raimund@282: * @return a list of links
raimund@282: */
christian@4064: @Override
raimund@282: protected Canvas createWidget(DataList data) {
raimund@282: GWT.log("LinkSelection - create()");
raimund@282:
raimund@282: VLayout layout = new VLayout();
raimund@282: layout.setAlign(VerticalAlignment.TOP);
raimund@282: layout.setHeight(25);
raimund@282:
raimund@282: VLayout formLayout = new VLayout();
raimund@282:
raimund@282: formLayout.setLayoutLeftMargin(60);
raimund@282: int size = data.size();
raimund@282:
raimund@282: for (int i = 0; i < size; i++) {
raimund@282: Data d = data.get(i);
raimund@282:
raimund@282: Label label = new Label(d.getDescription());
raimund@282: label.setValign(VerticalAlignment.TOP);
raimund@282: label.setHeight(20);
raimund@282:
raimund@282: for (DataItem item: d.getItems()) {
raimund@282: LinkItem link = new LinkItem("river");
raimund@282: link.setLinkTitle(item.getLabel());
raimund@282: link.setTarget(item.getStringValue());
raimund@282: link.setShowTitle(false);
raimund@282: DynamicForm f = new DynamicForm();
raimund@282: f.setItems(link);
raimund@282: formLayout.addMember(f);
raimund@282: link.addClickHandler(new ClickHandler() {
christian@4064: @Override
raimund@282: public void onClick(ClickEvent event) {
raimund@282: DataItem item = new DefaultDataItem(
raimund@282: ((LinkItem)event.getItem()).getLinkTitle(),
raimund@282: null,
raimund@282: ((LinkItem)event.getItem()).getLinkTitle());
raimund@282:
raimund@282: river = new DefaultData(
raimund@282: "river",
raimund@282: null,
raimund@282: null,
raimund@282: new DataItem [] {item});
raimund@282: fireStepForwardEvent (new StepForwardEvent (getData()));
raimund@282: }
raimund@282: });
raimund@282:
raimund@282: }
raimund@282: label.setWidth(50);
raimund@282:
raimund@282: layout.addMember(label);
raimund@282: layout.addMember(formLayout);
raimund@282: }
raimund@282: layout.setAlign(VerticalAlignment.TOP);
raimund@282:
felix@3546: String baseUrl = GWT.getHostPageBaseURL();
bjoern@4563: Img map = new Img(baseUrl + messages.riverMap(), 494, 582);
felix@3546: helperContainer.addMember(map);
felix@3546:
raimund@282: return layout;
raimund@282: }
raimund@282:
raimund@282:
christian@4064: @Override
raimund@282: protected Data[] getData() {
raimund@282: Data[] module = super.getData();
raimund@282: if (module != null) {
raimund@282: return new Data[] {module[0], river};
raimund@282: }
raimund@282: else {
raimund@282: return new Data[] {river};
raimund@282: }
raimund@282: }
raimund@282: }
raimund@282: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :