Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java @ 20:c128d675386b
Added UIProviders that are used to create widgets for entering data.
flys-client/trunk@1334 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 22 Feb 2011 17:17:12 +0000 |
parents | |
children | 5709bd8f4d7c |
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/SelectProvider.java Tue Feb 22 17:17:12 2011 +0000 @@ -0,0 +1,155 @@ +package de.intevation.flys.client.client.ui; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + +import com.google.gwt.core.client.GWT; + +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.IButton; +import com.smartgwt.client.widgets.events.ClickEvent; +import com.smartgwt.client.widgets.events.ClickHandler; +import com.smartgwt.client.widgets.form.DynamicForm; +import com.smartgwt.client.widgets.form.fields.ComboBoxItem; +import com.smartgwt.client.widgets.layout.VLayout; + +import de.intevation.flys.client.shared.model.Data; +import de.intevation.flys.client.shared.model.DataItem; +import de.intevation.flys.client.shared.model.DefaultData; +import de.intevation.flys.client.shared.model.DefaultDataItem; + +import de.intevation.flys.client.client.FLYSMessages; +import de.intevation.flys.client.client.event.HasStepForwardHandlers; +import de.intevation.flys.client.client.event.StepForwardEvent; +import de.intevation.flys.client.client.event.StepForwardHandler; + + +/** + * This UIProvider displays the DataItems of the Data object in a combo box. + * + * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> + */ +public class SelectProvider implements UIProvider, HasStepForwardHandlers, + ClickHandler +{ + /** The message class that provides i18n strings.*/ + protected FLYSMessages messages = GWT.create(FLYSMessages.class); + + /** The StepForwardHandlers.*/ + protected List<StepForwardHandler> forwardHandlers; + + /** The combobox.*/ + protected ComboBoxItem combobox; + + + /** + * Creates a new UIProvider instance of this class. + */ + public SelectProvider() { + forwardHandlers = new ArrayList<StepForwardHandler>(); + } + + + public void addStepForwardHandler(StepForwardHandler handler) { + if (handler != null) { + GWT.log("SelectProvider - addStepForwardHandler()"); + forwardHandlers.add(handler); + } + + GWT.log("Handlers now: " + forwardHandlers.size()); + } + + + /** + * This method is called after the user has clicked on the 'next' button to + * step to the next state. + * + * @param e The StepForwardEvent. + */ + protected void fireStepForwardEvent(StepForwardEvent e) { + GWT.log("SelectProvider - fireStepForwardEvent() handlers: " + forwardHandlers.size()); + for (StepForwardHandler handler: forwardHandlers) { + GWT.log("SelectProvider - fireStepForwardEvent()"); + handler.onStepForward(e); + } + } + + public void onClick(ClickEvent e) { + GWT.log("SelectProvider - feed and advance..."); + Data[] data = getData(); + + GWT.log("GO ON..."); + SelectProvider.this.fireStepForwardEvent(new StepForwardEvent(data)); + } + + /** + * This method currently returns a + * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all + * data items in a combobox stored in <i>data</i>. + * + * @param data The {@link Data} object. + * + * @return a combobox. + */ + public Canvas create(Data data) { + VLayout v = new VLayout(); + + Canvas content = createWidget(data); + + IButton button = new IButton(messages.next(), this); + //IButton button = new IButton(messages.next(), new ClickHandler() { + // public void onClick(ClickEvent e) { + // GWT.log("SelectProvider - feed and advance..."); + // Data[] data = getData(); + + // GWT.log("GO ON..."); + // SelectProvider.this.fireStepForwardEvent(new StepForwardEvent(data)); + // } + //}); + + v.addMember(content); + v.addMember(button); + + return v; + } + + + /** + * This method creates the content of the widget. + * + * @param data The {@link Data} object. + * + * @return a combobox. + */ + protected Canvas createWidget(Data data) { + GWT.log("SelectProvider - create()"); + + DynamicForm form = new DynamicForm(); + combobox = new ComboBoxItem("river"); + + LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); + + for (DataItem item: data.getItems()) { + GWT.log("Add item: " + item.getLabel()); + it.put(item.getStringValue(), item.getLabel()); + } + + combobox.setValueMap(it); + form.setItems(combobox); + + return form; + } + + + protected Data[] getData() { + String selection = combobox.getValueAsString(); + + GWT.log("SelectProvider - getData() Selected value = " + selection); + DataItem item = new DefaultDataItem("river", null, selection); + + return new Data[] { new DefaultData( + "river", null, null, new DataItem[] { item }, null) }; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :