Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ExportPanel.java @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-client/src/main/java/org/dive4elements/river/client/client/ui/ExportPanel.java@821a02bbfb4e |
children | 172338b1407f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/ExportPanel.java Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,168 @@ +package org.dive4elements.river.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 org.dive4elements.river.client.shared.model.Collection; +import org.dive4elements.river.client.shared.model.ExportMode; +import org.dive4elements.river.client.shared.model.Facet; +import org.dive4elements.river.client.client.Config; +import org.dive4elements.river.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; + } + String filename = name; + if (name.equals("computed_dischargecurve_at_export")) { + filename = "dischargecurve"; + } + layout.addMember(createExportButton( + name, + facet.getName(), + filename)); + } + } + + 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 filename + ) { + String url = getExportUrl(name, facet, filename); + String imgUrl = GWT.getHostPageBaseURL(); + if (facet.equals("pdf")) { + imgUrl += MSG.downloadPDF(); + } + else if (facet.equals("at")) { + imgUrl += MSG.downloadAT(); + } + else if (facet.equals("wst")) { + imgUrl += MSG.downloadWST(); + } + else if (facet.equals("csv")) { + imgUrl += MSG.downloadCSV(); + } + else { + imgUrl += MSG.imageSave(); + } + ImgLink link = new ImgLink(imgUrl, 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, String filename) { + Config config = Config.getInstance(); + + String url = GWT.getModuleBaseURL(); + url += "export"; + url += "?uuid=" + c.identifier(); + url += "&name=" + filename; + 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 :