Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/ModuleSelection.java @ 4221:480de0dbca8e
Extended location input helper.
The locationpicker has now an attribute whether the input is distance or
location to display one or two clickable columns.
Replaced the record click handler with cell click handler.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Tue, 23 Oct 2012 13:17:20 +0200 |
parents | 360e22afb98b |
children | 2aabd9752d5e |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.RadioGroupItem; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.FLYSConstants; import de.intevation.flys.client.client.services.ModuleService; import de.intevation.flys.client.client.services.ModuleServiceAsync; 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.shared.model.Module; import java.util.LinkedHashMap; /** * The ModuleSelection combines the river selection and the module selection in * one widget. It will display a vertical splitted widget - the upper part will * render checkboxes for each module, the lower one will display a combobox at * the left and a map panel on the right to choose the river. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class ModuleSelection extends MapSelection { private static final long serialVersionUID = -5634831815175543328L; /** The message class that provides i18n strings.*/ protected FLYSConstants MESSAGES = GWT.create(FLYSConstants.class); /** The module checkboxes.*/ protected RadioGroupItem radio; /** */ protected Module[] modules; /** The ModuleService used to retrieve the available modules of a user.*/ protected ModuleServiceAsync moduleService = GWT.create(ModuleService.class); /** * The default constructor. */ public ModuleSelection() { readModules(); } /** * This method returns a widget that renders the checkboxes for each module * and the MapSelection that lets the user choose the river. * * @param data The provided rivers. * * @return the module selection combined with the river selection. */ @Override public Canvas create(DataList data) { GWT.log("ModuleSelection - create()"); VLayout newLayout = new VLayout(); newLayout.setMembersMargin(10); newLayout.setAlign(VerticalAlignment.TOP); Canvas moduleSelection = createWidget(); moduleSelection.setHeight(100); newLayout.setHeight(70); newLayout.addMember(moduleSelection); return newLayout; } private void readModules() { Config config = Config.getInstance(); String locale = config.getLocale(); moduleService.list(locale, new AsyncCallback<Module[]>() { @Override public void onFailure(Throwable caught) { GWT.log("Could not recieve a list of modules."); SC.warn(MSG.getString(caught.getMessage())); } @Override public void onSuccess(Module[] newmodules) { GWT.log("Retrieved " + newmodules.length + " modules."); modules = newmodules; setModules(); } }); } private void setModules() { LinkedHashMap<String, String> values = new LinkedHashMap<String, String>(); if (this.modules!= null) { for(Module module : this.modules) { values.put(module.getName(), module.getLocalizedName()); if (module.isSelected()) { GWT.log("Module " + module.getName() + " is selected."); if (radio != null) { radio.setDefaultValue(module.getName()); GWT.log("Setting " + module.getName() + " as selected."); } } } } if (radio != null) { radio.setValueMap(values); } } /** * Creates a widget that displays a checkbox for each module. * * @return a widget with checkboxes. */ protected Canvas createWidget() { HLayout layout = new HLayout(); Label label = new Label(MESSAGES.module_selection()); DynamicForm form = new DynamicForm(); radio = new RadioGroupItem("plugin"); label.setWidth(50); label.setHeight(25); radio.setShowTitle(false); radio.setVertical(true); setModules(); form.setFields(radio); layout.addMember(label); layout.addMember(form); return layout; } /** * This method prepares the data of two widgets - the module selection and * the river selection. The returning field will contain the Data that * represents the module selection at first position, the second position * stores the Data object that represents the river selection. * * @return the Data that was chosen in this widget. */ @Override protected Data[] getData() { String module = radio.getValueAsString(); DataItem[] items = new DefaultDataItem[1]; items[0] = new DefaultDataItem(module, module, module); Data data = new DefaultData("module", null, null, items); return new Data[] {data}; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :