Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java@821a02bbfb4e |
children | 172338b1407f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/LinkSelection.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,181 @@ +package org.dive4elements.river.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.Img; +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.form.fields.events.ClickEvent; +import com.smartgwt.client.widgets.form.fields.events.ClickHandler; +import com.smartgwt.client.widgets.layout.HLayout; +import com.smartgwt.client.widgets.layout.VLayout; + +import org.dive4elements.river.client.client.FLYSConstants; +import org.dive4elements.river.client.client.event.StepForwardEvent; +import org.dive4elements.river.client.shared.model.Data; +import org.dive4elements.river.client.shared.model.DataItem; +import org.dive4elements.river.client.shared.model.DataList; +import org.dive4elements.river.client.shared.model.DefaultData; +import org.dive4elements.river.client.shared.model.DefaultDataItem; + + +/** + * 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 +{ + + private static final long serialVersionUID = -7138270638349711024L; + + /** The message class that provides i18n strings.*/ + protected FLYSConstants messages = GWT.create(FLYSConstants.class); + + /** 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. + */ + @Override + public Canvas create(DataList data) { + VLayout v = new VLayout(); + v.setMembersMargin(10); + v.setAlign(VerticalAlignment.TOP); + if (data.getState() == null) { + Canvas module = super.createWidget(data); + v.addMember(module); + } + Canvas content = createWidget(data); + v.addMember(content); + + return v; + } + + + @Override + 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 + */ + @Override + protected Canvas createWidget(DataList data) { + GWT.log("LinkSelection - create()"); + + VLayout layout = new VLayout(); + layout.setAlign(VerticalAlignment.TOP); + layout.setHeight(25); + + 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() { + @Override + 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); + + String baseUrl = GWT.getHostPageBaseURL(); + Img map = new Img(baseUrl + messages.riverMap(), 494, 582); + helperContainer.addMember(map); + + return layout; + } + + + @Override + 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 :