ingo@275: package de.intevation.flys.client.client.ui; ingo@275: ingo@275: import java.util.List; sascha@2931: import java.util.MissingResourceException; 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) { sascha@2931: try { sascha@2931: return MSG.getString(name) + " | " + MSG.getString(facet); sascha@2931: } sascha@2931: catch (MissingResourceException mre) { sascha@2931: return name + " | " + facet; sascha@2931: } ingo@433: } ingo@275: } ingo@275: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :