ingo@30: package de.intevation.flys.client.client.ui; ingo@30: ingo@45: import java.util.LinkedHashMap; ingo@45: ingo@30: import com.google.gwt.core.client.GWT; ingo@30: ingo@83: import com.smartgwt.client.types.VerticalAlignment; ingo@30: import com.smartgwt.client.widgets.Canvas; ingo@30: import com.smartgwt.client.widgets.Label; ingo@30: import com.smartgwt.client.widgets.form.DynamicForm; ingo@30: import com.smartgwt.client.widgets.form.fields.RadioGroupItem; ingo@30: import com.smartgwt.client.widgets.layout.HLayout; ingo@30: import com.smartgwt.client.widgets.layout.VLayout; ingo@30: ingo@30: import de.intevation.flys.client.shared.model.Data; ingo@30: import de.intevation.flys.client.shared.model.DataItem; ingo@51: import de.intevation.flys.client.shared.model.DataList; ingo@30: import de.intevation.flys.client.shared.model.DefaultData; ingo@30: import de.intevation.flys.client.shared.model.DefaultDataItem; raimund@282: import de.intevation.flys.client.client.event.HasStepForwardHandlers; ingo@30: ingo@211: import de.intevation.flys.client.client.FLYSConstants; ingo@30: ingo@30: /** ingo@30: * The ModuleSelection combines the river selection and the module selection in ingo@30: * one widget. It will display a vertical splitted widget - the upper part will ingo@30: * render checkboxes for each module, the lower one will display a combobox at ingo@30: * the left and a map panel on the right to choose the river. ingo@30: * ingo@30: * @author Ingo Weinzierl ingo@30: */ ingo@30: public class ModuleSelection extends MapSelection { ingo@30: ingo@30: /** The message class that provides i18n strings.*/ ingo@211: protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); ingo@30: ingo@45: ingo@45: /** Constant field name for the plugin selection.*/ ingo@45: public static final String FIELD_PLUGIN = "plugin"; ingo@45: ingo@45: /** Constant value for the WINFO plugin.*/ ingo@45: public static final String FIELD_PLUGIN_WINFO = "winfo"; ingo@45: ingo@45: /** Constant value for the MINFO plugin.*/ ingo@45: public static final String FIELD_PLUGIN_MINFO = "minfo"; ingo@45: ingo@45: /** Constant value for the MAP plugin.*/ ingo@45: public static final String FIELD_PLUGIN_MAP = "map"; ingo@45: ingo@86: /** Constant value for the CHART plugin.*/ ingo@86: public static final String FIELD_PLUGIN_CHART = "chart"; ingo@86: ingo@45: /** Constant value for the FIX plugin.*/ ingo@45: public static final String FIELD_PLUGIN_FIX = "fix"; ingo@45: ingo@45: ingo@30: /** The module checkboxes.*/ ingo@30: protected RadioGroupItem radio; ingo@30: ingo@30: ingo@30: /** ingo@30: * The default constructor. ingo@30: */ ingo@30: public ModuleSelection() { ingo@30: } ingo@30: ingo@30: ingo@30: /** ingo@30: * This method returns a widget that renders the checkboxes for each module ingo@30: * and the MapSelection that lets the user choose the river. ingo@30: * ingo@30: * @param data The provided rivers. ingo@30: * ingo@30: * @return the module selection combined with the river selection. ingo@30: */ ingo@51: public Canvas create(DataList data) { ingo@30: VLayout newLayout = new VLayout(); ingo@30: newLayout.setMembersMargin(10); raimund@282: newLayout.setAlign(VerticalAlignment.TOP); ingo@30: Canvas moduleSelection = createWidget(); ingo@30: raimund@282: moduleSelection.setHeight(100); raimund@282: newLayout.setHeight(70); ingo@30: newLayout.addMember(moduleSelection); ingo@30: ingo@30: return newLayout; ingo@30: } ingo@30: ingo@30: ingo@30: /** ingo@30: * Creates a widget that displays a checkbox for each module. ingo@30: * ingo@30: * @return a widget with checkboxes. ingo@30: */ ingo@30: protected Canvas createWidget() { ingo@30: HLayout layout = new HLayout(); ingo@30: ingo@30: Label label = new Label(MESSAGES.module_selection()); ingo@30: DynamicForm form = new DynamicForm(); ingo@30: ingo@30: radio = new RadioGroupItem("plugin"); ingo@30: ingo@30: label.setWidth(50); raimund@282: label.setHeight(25); ingo@30: ingo@45: LinkedHashMap values = new LinkedHashMap(); ingo@45: values.put(FIELD_PLUGIN_WINFO, messages.winfo()); ingo@45: values.put(FIELD_PLUGIN_MINFO, messages.minfo()); ingo@86: values.put(FIELD_PLUGIN_FIX, messages.fix()); ingo@86: values.put(FIELD_PLUGIN_CHART, messages.chart()); ingo@45: values.put(FIELD_PLUGIN_MAP, messages.map()); ingo@45: ingo@30: radio.setShowTitle(false); ingo@86: radio.setVertical(true); ingo@45: radio.setValueMap(values); ingo@45: ingo@45: LinkedHashMap initial = new LinkedHashMap(); ingo@45: initial.put(FIELD_PLUGIN, FIELD_PLUGIN_WINFO); ingo@30: ingo@30: form.setFields(radio); ingo@45: form.setValues(initial); ingo@30: ingo@30: layout.addMember(label); ingo@30: layout.addMember(form); ingo@30: ingo@30: return layout; ingo@30: } ingo@30: ingo@30: ingo@30: /** ingo@30: * This method prepares the data of two widgets - the module selection and ingo@30: * the river selection. The returning field will contain the Data that ingo@30: * represents the module selection at first position, the second position ingo@30: * stores the Data object that represents the river selection. ingo@30: * ingo@30: * @return the Data that was chosen in this widget. ingo@30: */ ingo@30: protected Data[] getData() { ingo@30: ingo@30: String module = radio.getValueAsString(); ingo@30: ingo@30: DataItem[] items = new DefaultDataItem[1]; ingo@30: items[0] = new DefaultDataItem(module, module, module); ingo@30: ingo@51: Data data = new DefaultData("module", null, null, items); ingo@30: raimund@282: return new Data[] {data}; ingo@30: } ingo@30: } ingo@30: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :