Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/ModuleSelection.java @ 4573:b87073a05f9d
flys-client: Patch to render combobox options as clickable links.
The way of passing data arguments to the links and further to
the Artifact feeding service is somewhat hacked and should be
refactored (later...).
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Tue, 27 Nov 2012 12:50:10 +0100 |
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 :