Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java @ 282:e92f7ef455d6
Show rivers as links instead of a combobox.
flys-client/trunk@1911 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 12 May 2011 14:59:18 +0000 |
parents | |
children | be842e36ce1c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/LinkSelection.java Thu May 12 14:59:18 2011 +0000 @@ -0,0 +1,175 @@ +package de.intevation.flys.client.client.ui; + +import com.google.gwt.core.client.GWT; + +import com.smartgwt.client.types.VerticalAlignment; +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.Label; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.LinkItem; +import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.VLayout; +import com.smartgwt.client.widgets.form.fields.events.ClickHandler; +import com.smartgwt.client.widgets.form.fields.events.ClickEvent; + +import de.intevation.flys.client.shared.model.Data; +import de.intevation.flys.client.shared.model.DataItem; +import de.intevation.flys.client.shared.model.DataList; +import de.intevation.flys.client.shared.model.DefaultData; +import de.intevation.flys.client.shared.model.DefaultDataItem; +import de.intevation.flys.client.client.event.StepForwardEvent; + +import de.intevation.flys.client.client.FLYSConstants; + + +/** + * This UIProvider displays the DataItems of the Data object in a list of links. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class LinkSelection +extends MapSelection +{ + /** The message class that provides i18n strings.*/ + protected FLYSConstants messages = GWT.create(FLYSConstants.class); + + /** The combobox.*/ + protected DynamicForm form; + + /** The selected river*/ + protected Data river; + + /** + * This method currently returns a + * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all + * data items in a list of links stored in <i>data</i>. + * + * @param data The {@link Data} object. + * + * @return a combobox. + */ + public Canvas create(DataList data) { + VLayout v = new VLayout(); + v.setMembersMargin(10); + v.setAlign(VerticalAlignment.TOP); + GWT.log("-------datastate: "+ data.getState()); + if (data.getState() == null) { + Canvas module = super.createWidget(data); + v.addMember(module); + } + Canvas content = createWidget(data); + v.addMember(content); + + return v; + } + + + public Canvas createOld(DataList dataList) { + HLayout layout = new HLayout(); + VLayout vLayout = new VLayout(); + layout.setWidth("400px"); + + Label label = new Label(dataList.getLabel()); + label.setWidth("200px"); + + int size = dataList.size(); + for (int i = 0; i < size; i++) { + Data data = dataList.get(i); + DataItem[] items = data.getItems(); + + for (DataItem item: items) { + HLayout hLayout = new HLayout(); + + hLayout.addMember(label); + hLayout.addMember(new Label(item.getLabel())); + + vLayout.addMember(hLayout); + vLayout.setWidth("130px"); + } + } + + Canvas back = getBackButton(dataList.getState()); + + layout.addMember(label); + layout.addMember(vLayout); + layout.addMember(back); + + return layout; + } + + + /** + * This method creates the content of the widget. + * + * @param data The {@link Data} object. + * + * @return a list of links + */ + protected Canvas createWidget(DataList data) { + GWT.log("LinkSelection - create()"); + + VLayout layout = new VLayout(); + layout.setAlign(VerticalAlignment.TOP); + layout.setHeight(25); + + + form = new DynamicForm(); + VLayout formLayout = new VLayout(); + + formLayout.setLayoutLeftMargin(60); + int size = data.size(); + + for (int i = 0; i < size; i++) { + Data d = data.get(i); + + Label label = new Label(d.getDescription()); + label.setValign(VerticalAlignment.TOP); + label.setHeight(20); + + for (DataItem item: d.getItems()) { + LinkItem link = new LinkItem("river"); + link.setLinkTitle(item.getLabel()); + link.setTarget(item.getStringValue()); + link.setShowTitle(false); + DynamicForm f = new DynamicForm(); + f.setItems(link); + formLayout.addMember(f); + link.addClickHandler(new ClickHandler() { + public void onClick(ClickEvent event) { + DataItem item = new DefaultDataItem( + ((LinkItem)event.getItem()).getLinkTitle(), + null, + ((LinkItem)event.getItem()).getLinkTitle()); + + river = new DefaultData( + "river", + null, + null, + new DataItem [] {item}); + fireStepForwardEvent (new StepForwardEvent (getData())); + } + }); + + } + label.setWidth(50); + + layout.addMember(label); + layout.addMember(formLayout); + } + layout.setAlign(VerticalAlignment.TOP); + + return layout; + } + + + protected Data[] getData() { + Data[] module = super.getData(); + if (module != null) { + return new Data[] {module[0], river}; + } + else { + return new Data[] {river}; + } + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :