Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/client/ui/ExportPanel.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 | b67af5b44d68 |
children | 94b95e002fb9 |
line wrap: on
line source
package de.intevation.flys.client.client.ui; import java.util.List; import java.util.MissingResourceException; import com.google.gwt.core.client.GWT; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.ExportMode; import de.intevation.flys.client.shared.model.Facet; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.FLYSConstants; /** * A panel that displays an download icon for all available export modes of a * Collection. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class ExportPanel extends VLayout { /** The message class that provides i18n strings.*/ protected FLYSConstants MSG = GWT.create(FLYSConstants.class); protected Collection c; protected List<ExportMode> exports; /** This layout will store a list of available export types.*/ protected HLayout container; public ExportPanel(Collection c, List<ExportMode> exports) { super(); this.c = c; this.exports = exports; this.container = new HLayout(); Label title = new Label(MSG.dataexport()); title.setHeight(15); title.setStyleName("fontNormalSmallUnderlined"); addMember(title); addMember(createExportItems()); setHeight(45); setMembersMargin(5); } /** * This method is used to create an item (created by createExportButton) for * each facet for each export mode. * * @return a horizontal list of buttons. */ protected HLayout createExportItems() { HLayout layout = new HLayout(); for (ExportMode mode: exports) { String name = mode.getName(); List<Facet> facets = mode.getFacets(); for (Facet facet: facets) { if (name.equals("fix_wq_curve_at_export")) { continue; } layout.addMember(createExportButton(name, facet.getName())); } } return layout; } /** * This method is used to create a button (with click handler) for a * concrete export mode / type. * * @param name The name of the export. * @param facet The name of the export type (e.g. CSV, WST). * * @return an image with click handler. */ protected Canvas createExportButton(String name, String facet) { String url = getExportUrl(name, facet); String iUrl = GWT.getHostPageBaseURL() + MSG.imageSave(); ImgLink link = new ImgLink(iUrl, url, 30, 30); link.setTooltip(getTooltipText(name, facet)); return link; } /** * Creates the URL used to trigger an export. * * @param name The name of the export. * @param facet The name of the export type (e.g. CSV, WST). * * @return the export URL. */ protected String getExportUrl(String name, String facet) { Config config = Config.getInstance(); String url = GWT.getModuleBaseURL(); url += "export"; url += "?uuid=" + c.identifier(); url += "&mode=" + name; url += "&type=" + facet; url += "&server=" + config.getServerUrl(); url += "&locale=" + config.getLocale(); return url; } /** * Creates a text used as tooltip for a specific export and type. * * @param name The name of the export. * @param facet The name of the export type (e.g. CSV, WST). * * @return a tooltip text. */ protected String getTooltipText(String name, String facet) { try { return MSG.getString(name) + " | " + MSG.getString(facet); } catch (MissingResourceException mre) { return name + " | " + facet; } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :