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 combobox.*/ raimund@282: protected DynamicForm form; 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: raimund@282: form = new DynamicForm(); 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(); felix@3546: Img map = new Img(baseUrl + messages.riverMap(), 400, 452); 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 :