ingo@20: package de.intevation.flys.client.client.ui; ingo@20: ingo@20: import java.util.LinkedHashMap; ingo@20: ingo@20: import com.google.gwt.core.client.GWT; ingo@20: ingo@30: import com.smartgwt.client.types.VerticalAlignment; ingo@20: import com.smartgwt.client.widgets.Canvas; ingo@20: import com.smartgwt.client.widgets.IButton; ingo@30: import com.smartgwt.client.widgets.Label; ingo@20: import com.smartgwt.client.widgets.form.DynamicForm; ingo@20: import com.smartgwt.client.widgets.form.fields.ComboBoxItem; ingo@30: import com.smartgwt.client.widgets.layout.HLayout; ingo@20: import com.smartgwt.client.widgets.layout.VLayout; ingo@20: ingo@20: import de.intevation.flys.client.shared.model.Data; ingo@20: import de.intevation.flys.client.shared.model.DataItem; ingo@20: import de.intevation.flys.client.shared.model.DefaultData; ingo@20: import de.intevation.flys.client.shared.model.DefaultDataItem; ingo@20: ingo@20: import de.intevation.flys.client.client.FLYSMessages; ingo@20: ingo@20: ingo@20: /** ingo@20: * This UIProvider displays the DataItems of the Data object in a combo box. ingo@20: * ingo@20: * @author Ingo Weinzierl ingo@20: */ ingo@49: public class SelectProvider ingo@49: extends AbstractUIProvider ingo@20: { ingo@20: /** The message class that provides i18n strings.*/ ingo@20: protected FLYSMessages messages = GWT.create(FLYSMessages.class); ingo@20: ingo@20: /** The combobox.*/ ingo@20: protected ComboBoxItem combobox; ingo@20: ingo@38: /** The name of the data object.*/ ingo@38: protected String dataName; ingo@38: ingo@20: ingo@20: /** ingo@20: * This method currently returns a ingo@20: * {@link com.smartgwt.client.widgets.form.DynamicForm} that contains all ingo@20: * data items in a combobox stored in data. ingo@20: * ingo@20: * @param data The {@link Data} object. ingo@20: * ingo@20: * @return a combobox. ingo@20: */ ingo@20: public Canvas create(Data data) { ingo@38: dataName = data.getLabel(); ingo@38: ingo@20: VLayout v = new VLayout(); ingo@20: ingo@20: Canvas content = createWidget(data); ingo@20: ingo@20: IButton button = new IButton(messages.next(), this); ingo@20: ingo@20: v.addMember(content); ingo@20: v.addMember(button); ingo@20: ingo@20: return v; ingo@20: } ingo@20: ingo@20: ingo@20: /** ingo@20: * This method creates the content of the widget. ingo@20: * ingo@20: * @param data The {@link Data} object. ingo@20: * ingo@20: * @return a combobox. ingo@20: */ ingo@20: protected Canvas createWidget(Data data) { ingo@20: GWT.log("SelectProvider - create()"); ingo@20: ingo@30: HLayout layout = new HLayout(); ingo@38: Label label = new Label(data.getDescription()); ingo@30: DynamicForm form = new DynamicForm(); ingo@35: combobox = new ComboBoxItem(data.getLabel()); ingo@20: ingo@20: LinkedHashMap it = new LinkedHashMap(); ingo@20: ingo@20: for (DataItem item: data.getItems()) { ingo@20: it.put(item.getStringValue(), item.getLabel()); ingo@20: } ingo@20: ingo@30: label.setWidth(50); ingo@20: combobox.setValueMap(it); ingo@30: combobox.setShowTitle(false); ingo@20: form.setItems(combobox); ingo@20: ingo@30: layout.addMember(label); ingo@30: layout.addMember(form); ingo@30: ingo@30: label.setValign(VerticalAlignment.TOP); ingo@30: layout.setAlign(VerticalAlignment.TOP); ingo@30: ingo@30: return layout; ingo@20: } ingo@20: ingo@20: ingo@20: protected Data[] getData() { ingo@20: String selection = combobox.getValueAsString(); ingo@38: DataItem item = new DefaultDataItem(dataName, null, selection); ingo@20: ingo@20: return new Data[] { new DefaultData( ingo@38: dataName, null, null, new DataItem[] { item }, null) }; ingo@20: } ingo@20: } ingo@20: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :