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