import nl.idgis.giclient.template.TemplateElement; import nl.idgis.giclient.gis.GIS; import nl.idgis.giclient.framework.FrameWork; import flash.display.BitmapData; import nl.idgis.giclient.framework.Frame; import flash.geom.Matrix; import nl.idgis.giclient.gui.htmlviewer.HtmlViewer; /** * @author copierrj */ class nl.idgis.giclient.template.WindowElement extends TemplateElement { private var windows:Array; private var borderThickness:Number = 0; public function WindowElement(gis : GIS) { super(gis); windows = new Array(); } public function doDrawElement(mc:MovieClip, handler:Object):Void { var frameWork:FrameWork = FrameWork(_root["frameWork"]); var frames:MovieClip = frameWork["frames"]; var dy:Number = 0; var drawBorder:Boolean = false; for(var i:Number = 0; i < windows.length; i++) { if(frames[windows[i]] == null || !frames[windows[i]]._visible) { continue; } var target:MovieClip = MovieClip(Frame(frames[windows[i]]).getScrollContent()); var width:Number = target._width * 4; var height:Number = target._height * 4; var content:MovieClip = mc.createEmptyMovieClip("content" + i, mc.getNextHighestDepth()); content._y = dy; if(target instanceof HtmlViewer) { var html:String = TextField(target["textField"]).htmlText + "
\n"; var tf:TextField = content.createTextField("tf", content.getNextHighestDepth(), 0, 0, 10, 10); tf.autoSize = true; tf.html = true; tf.multiline = true; tf.htmlText = html; tf.selectable = false; dy += tf._height; } else { var bitmap:BitmapData = new BitmapData(width, height); if(bitmap == null) { frameWork.message("Window too large: " + windows[i]); continue; } target.setMask(null); var matrix:Matrix = new Matrix(); matrix.scale(4, 4); bitmap.draw(target, matrix); target.setMask(target._parent["mask_mc"]); content.beginBitmapFill(bitmap); content.moveTo(0, 0); content.lineTo(width, 0); content.lineTo(width, height); content.lineTo(0, height); content.lineTo(0, 0); content._xscale = 25; content._yscale = 25; dy += target._height; } drawBorder = true; } if(drawBorder && borderThickness != 0) { var hThickness = borderThickness / 2; width = mc._width - hThickness; height = mc._height - hThickness; var border:MovieClip = mc.createEmptyMovieClip("border", mc.getNextHighestDepth()); border.lineStyle(borderThickness); border.moveTo(hThickness, hThickness); border.lineTo(width, hThickness); border.lineTo(width, height); border.lineTo(hThickness, height); border.lineTo(hThickness, hThickness); } mc.beginFill(0xffffff); mc.moveTo(0, 0); mc.lineTo(mc._width, 0); mc.lineTo(mc._width, mc._height); mc.lineTo(0, mc._height); mc.lineTo(0, 0); handler.onReady(); } }