ingo@75: package de.intevation.flys.client.client.ui; ingo@75: ingo@213: import java.util.Date; ingo@213: ingo@78: import com.google.gwt.core.client.GWT; ingo@78: ingo@75: import com.smartgwt.client.widgets.Canvas; ingo@75: import com.smartgwt.client.widgets.Img; ingo@267: import com.smartgwt.client.widgets.Label; sascha@276: import com.smartgwt.client.widgets.IButton; sascha@276: ingo@75: import com.smartgwt.client.widgets.layout.HLayout; ingo@267: import com.smartgwt.client.widgets.layout.VLayout; ingo@75: sascha@276: import com.smartgwt.client.widgets.events.ClickEvent; sascha@276: import com.smartgwt.client.widgets.events.ClickHandler; sascha@276: import com.smartgwt.client.widgets.events.CloseClickHandler; sascha@276: import com.smartgwt.client.widgets.events.CloseClientEvent; sascha@276: ingo@75: import de.intevation.flys.client.shared.model.Collection; ingo@75: import de.intevation.flys.client.shared.model.OutputMode; ingo@75: import de.intevation.flys.client.client.Config; ingo@75: sascha@276: import de.intevation.flys.client.shared.model.Artifact; ingo@75: ingo@75: /** ingo@75: * @author Ingo Weinzierl ingo@75: */ ingo@75: public class ChartOutputTab extends OutputTab { ingo@75: ingo@267: /** The canvas that wraps the chart toolbar.*/ ingo@267: protected Canvas tbarPanel; ingo@267: ingo@75: /** The canvas that wraps the theme editor.*/ ingo@75: protected Canvas left; ingo@75: ingo@75: /** The canvas that wraps the chart.*/ ingo@75: protected Canvas right; ingo@75: ingo@75: ingo@75: /** ingo@75: * The default constructor to create a new ChartOutputTab. ingo@75: * ingo@75: * @param title The title of this tab. ingo@75: * @param collection The Collection which this chart belongs to. ingo@75: * @param mode The OutputMode. ingo@75: */ sascha@276: public ChartOutputTab( sascha@276: String title, sascha@276: Collection collection, sascha@276: OutputMode mode, sascha@276: CollectionView collectionView sascha@276: ){ ingo@75: super(title, collection, mode); ingo@75: ingo@267: tbarPanel = new Canvas(); ingo@267: left = new Canvas(); ingo@267: right = new Canvas(); ingo@75: ingo@267: tbarPanel.setBorder("1px solid black"); ingo@267: tbarPanel.setHeight(25); ingo@267: left.setBorder("1px solid black"); ingo@75: left.setWidth("25%"); ingo@75: right.setWidth("*"); ingo@75: ingo@267: VLayout vLayout = new VLayout(); ingo@267: vLayout.setMembersMargin(2); ingo@267: ingo@75: HLayout hLayout = new HLayout(); ingo@75: hLayout.setWidth100(); ingo@75: hLayout.setHeight100(); ingo@75: hLayout.setMembersMargin(10); ingo@75: ingo@75: hLayout.addMember(left); ingo@75: hLayout.addMember(right); ingo@75: ingo@267: right.addChild(createChartPanel()); ingo@267: left.addChild(createThemeControlPanel()); sascha@276: tbarPanel.addChild( sascha@276: createTBarPanel(collectionView)); ingo@267: ingo@267: vLayout.addMember(tbarPanel); ingo@267: vLayout.addMember(hLayout); ingo@267: ingo@267: setPane(vLayout); ingo@267: } ingo@267: ingo@267: sascha@276: protected Canvas createTBarPanel( sascha@276: final CollectionView collectionView sascha@276: ) { sascha@276: HLayout hLayout = new HLayout(); sascha@276: hLayout.setWidth100(); sascha@276: hLayout.setHeight100(); sascha@276: hLayout.setMembersMargin(10); ingo@267: sascha@276: IButton datacage = new IButton("Datenkorb"); sascha@276: datacage.setHeight(25); sascha@276: datacage.setMargin(5); sascha@276: sascha@276: hLayout.addMember(datacage); sascha@276: datacage.addClickHandler(new ClickHandler() { sascha@276: public void onClick(ClickEvent event) { sascha@276: GWT.log("Clicked 'datacage' button."); sascha@276: openDatacageWindow( sascha@276: collectionView.getArtifact()); sascha@276: } sascha@276: }); sascha@276: sascha@276: return hLayout; sascha@276: } sascha@276: sascha@276: protected void openDatacageWindow(Artifact artifact) { sascha@276: final DatacageWindow dc = new DatacageWindow(artifact); sascha@276: dc.addCloseClickHandler(new CloseClickHandler() { sascha@276: public void onCloseClick(CloseClientEvent event) { sascha@276: dc.destroy(); sascha@276: } sascha@276: }); sascha@276: dc.show(); ingo@267: } ingo@267: ingo@267: ingo@267: protected Canvas createChartPanel() { ingo@75: Img chart = getChartImg(); ingo@78: chart.setWidth100(); ingo@78: chart.setHeight100(); ingo@75: ingo@267: return chart; ingo@267: } ingo@75: ingo@267: ingo@267: protected Canvas createThemeControlPanel() { ingo@267: Label label = new Label("Themensteuerung"); ingo@267: label.setHeight(25); ingo@267: label.setMargin(5); ingo@267: ingo@267: return label; ingo@75: } ingo@75: ingo@75: ingo@75: /** ingo@75: * Builds the chart image and returns it. ingo@75: * ingo@75: * @return the chart image. ingo@75: */ ingo@75: protected Img getChartImg() { ingo@75: return new Img(getImgUrl()); ingo@75: } ingo@75: ingo@75: ingo@75: /** ingo@75: * Builds the URL that points to the chart image. ingo@75: * ingo@75: * @return the URL to the chart image. ingo@75: */ ingo@75: protected String getImgUrl() { ingo@75: Config config = Config.getInstance(); ingo@78: ingo@78: String imgUrl = GWT.getModuleBaseURL(); ingo@78: imgUrl += "chart"; ingo@213: imgUrl += "?uuid=" + collection.identifier(); ingo@213: imgUrl += "&type=" + mode.getName(); ingo@254: imgUrl += "&server=" + config.getServerUrl(); ingo@254: imgUrl += "&locale=" + config.getLocale(); ingo@213: imgUrl += "×tamp=" + new Date().getTime(); ingo@280: imgUrl += "&width=" + Integer.toString(600); ingo@280: imgUrl += "&height=" + Integer.toString(500); ingo@78: ingo@78: return imgUrl; ingo@75: } ingo@75: } ingo@75: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :