Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/ExportPanel.java @ 275:8264b02091ef
ISSUE-56 Display download buttons to export the computed data.
flys-client/trunk@1901 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 11 May 2011 14:29:35 +0000 |
parents | |
children | 50b88b641be6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/ExportPanel.java Wed May 11 14:29:35 2011 +0000 @@ -0,0 +1,121 @@ +package de.intevation.flys.client.client.ui; + +import java.util.List; + +import com.google.gwt.core.client.GWT; + +import com.smartgwt.client.widgets.Canvas; +import com.smartgwt.client.widgets.HTMLPane; +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(25); + 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) { + 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(); + + HTMLPane pane = new HTMLPane(); + pane.setContents("<a href='" + url + "'><img src='" + iUrl + "'></a>"); + + return pane; + } + + + /** + * 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; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :