import nl.idgis.giclient.gui.ContainerContent; import nl.idgis.giclient.webserviceconnector.MapConnector; import nl.idgis.giclient.gis.Layer; import nl.idgis.giclient.gis.GIS; import nl.idgis.giclient.util.Strings; import nl.idgis.giclient.gis.CentreScale; import nl.idgis.giclient.template.TemplateMovie; import nl.idgis.giclient.template.Page; import nl.idgis.giclient.framework.SinglePaneComponent; import nl.idgis.giclient.event.StateEvent; import nl.idgis.giclient.event.StateEventListener; /** * @author copierrj */ class nl.idgis.giclient.print.PrintMovie extends ContainerContent implements StateEventListener { function onLoad() { _parent.refreshPane(); var printDialog:SinglePaneComponent = SinglePaneComponent(ruler.getGIClientConfig().getGIComponent("PrintDialog")); printDialog.addEventListener(this, StateEvent.CHANGE, "visible"); } static var screenPrintFactor:Number = 1.2597631645250692869740488788108; private static var margin:Number = 10; private var currentElement:Number = 0; public static function toPoints(value : Number) : Number { return value * screenPrintFactor; } public function renderPages(pages:Array, handler:Object):Void { for(var clipName:String in this) { if(clipName.indexOf("print") != -1) { MovieClip(this[clipName]).removeMovieClip(); } } var subHandler:Object = new Object(); subHandler.handler = handler; subHandler.counter = pages.length; subHandler.printButton = this["printButton"]; subHandler.onReady = function() { this.counter--; if(this.counter == 0) { handler.onReady(); } }; var y:Number = margin; for(var i:Number = 0; i < pages.length; i++) { var page:Page = pages[i]; drawPrint(TemplateMovie(attachMovie("TemplateMovie", "print" + i, this.getNextHighestDepth(), {_y: y, _x: margin})) , subHandler, page); y += (page.getHeight() + margin) * PrintMovie.screenPrintFactor; } } private function drawPrint(printMovie:TemplateMovie, printHandler:Object, page:Page):Void { printMovie._visible = false; printMovie.createEmptyMovieClip("background", printMovie.getNextHighestDepth()); this.currentElement = 0; var handler:Object = new Object(); handler.handler = printHandler; handler.parent = _parent; handler.screenPrintFactor = screenPrintFactor; handler.onReady = function() { var background:MovieClip = printMovie["background"]; var width:Number = printMovie._width; var height:Number = printMovie._height; background.beginFill(0xffffff, 100); background.moveTo(0, 0); background.lineTo(width, 0); background.lineTo(width, height); background.lineTo(0, height); background.lineTo(0, 0); printMovie._xscale = 100 * PrintMovie.screenPrintFactor; printMovie._yscale = 100 * PrintMovie.screenPrintFactor; printMovie._visible = true; this.parent.refreshPane(); this.handler.onReady(); }; page.renderPage(printMovie, handler); } function onStateEvent(stateEvent : StateEvent) : Void { if(stateEvent.getActionType() == StateEvent.CHANGE && stateEvent.getPropertyName() == "visible" && stateEvent.getSourceClassName() == "SinglePaneComponent") { if(SinglePaneComponent(stateEvent.getSource()).getPane() == null) { SinglePaneComponent(ruler.getGIClientConfig() .getGIComponent("PrintPreview")).hidePane(); } } } }