Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/SelectProvider.java @ 51:a2923d63f530
Introduced a data structure DataList to manage to list of Data objects of a single state.
flys-client/trunk@1505 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 17 Mar 2011 16:44:51 +0000 |
parents | d573ae975330 |
children | 3d5d7788d471 |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import com.google.gwt.core.client.GWT; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.Label; 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.DataList; import de.intevation.flys.client.shared.model.DefaultData; import de.intevation.flys.client.shared.model.DefaultDataItem; import de.intevation.flys.client.client.FLYSMessages; /** * 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 extends AbstractUIProvider { /** The message class that provides i18n strings.*/ protected FLYSMessages messages = GWT.create(FLYSMessages.class); /** The combobox.*/ protected DynamicForm form; /** * 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(DataList data) { VLayout v = new VLayout(); Canvas content = createWidget(data); IButton button = new IButton(messages.next(), this); 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(DataList data) { GWT.log("SelectProvider - create()"); VLayout layout = new VLayout(); form = new DynamicForm(); 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); ComboBoxItem combobox = new ComboBoxItem(d.getLabel()); LinkedHashMap<String, String> it = new LinkedHashMap<String, String>(); for (DataItem item: d.getItems()) { it.put(item.getStringValue(), item.getLabel()); } label.setWidth(50); combobox.setValueMap(it); combobox.setShowTitle(false); form.setItems(combobox); layout.addMember(label); layout.addMember(form); } layout.setAlign(VerticalAlignment.TOP); return layout; } protected Data[] getData() { Map values = form.getValues(); Iterator keys = values.keySet().iterator(); Data[] list = new Data[values.size()]; int i = 0; while (keys.hasNext()) { String fieldname = (String) keys.next(); String selection = (String) values.get(fieldname); DataItem item = new DefaultDataItem(fieldname, null, selection); list[i++] = new DefaultData( fieldname, null, null, new DataItem[] { item }); } return list; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :