/**
 * Flash Video for Professionals: MVC Player 
 * http://www.flashconnections.com
 * @author James O'Reilly
 */
package com.flashconnections.pattern.mvc
{
	import flash.display.MovieClip;
	
	import com.flashconnections.core.Core;
	import com.flashconnections.pattern.mvc.Controller;
	import com.flashconnections.pattern.mvc.ifc.Iactionscript_video_com_flashconnections_pattern_mvc_View;
	import com.flashconnections.pattern.mvc.Model;
	import com.flashconnections.ui.util.ifc.ICoordinateSpace;
	
	public class actionscript_video_com_flashconnections_pattern_mvc_View extends Core implements Iactionscript_video_com_flashconnections_pattern_mvc_View, ICoordinateSpace
	{
		public var _x:Number;
		public var _y:Number;
		public var _w:Number;
		public var _h:Number;
		
		private var _model:Model;
		private var _controller:Controller;
		private var _container:MovieClip;
		private var _content:MovieClip;
		
		public function actionscript_video_com_flashconnections_pattern_mvc_View(model:Model, controller:Controller, container:MovieClip) {
			setModel(model);
			setController(controller);
			getModel().setactionscript_video_com_flashconnections_pattern_mvc_View(this);
			getController().setactionscript_video_com_flashconnections_pattern_mvc_View(this);
			getController().setModel(getModel());
			setContainer(container);
		}
		public function setModel(val:Model):void {
			_model = val;
		}
		public function getModel():Model {
			return _model;
		}
		public function setController(val:Controller):void {
			_controller = val;
			getController().setactionscript_video_com_flashconnections_pattern_mvc_View(this);
		}
		public function getController():Controller {
			return _controller;
		}
		public function getDefaultController():Controller {
			return null;
		}
		public function setContainer(val:MovieClip):void {
			_container = val;
		}
		public function getContainer():MovieClip {
			return _container;
		}
		public function setContent(val:MovieClip):void {
			_content = val;
		}
		public function getContent():MovieClip {
			return _content;
		}
		public function init():void {}
		public function layout():void {}
		// methods from ICoordinateSpace
		public function initCoordinates(x:Number, y:Number, w:Number, h:Number):void {
			setX(x);
			setY(y);
			setWidth(w);
			setHeight(h);
		}
		//interface implementations
		//instance
		public function setName(val:String):void {}
		public function getName():String {
			return null;
		}
		//visibility
		public function show():void {}
		public function hide():void {}
		public function destroy():void {}		
		//size
		public function setSize(W:Number, H:Number):void {
			_w = W;
			_h = H;
		}
		public function getSize():Object {
			return {w:_w, h:_h};
		}
		public function setWidth(val:Number):void {
			_w = val;
		}
		public function getWidth():Number {
			return _w;
		}
		public function setHeight(val:Number):void {
			_h = val;
		}
		public function getHeight():Number {
			return _h;
		}
		//position
		public function setPosition(X:Number, Y:Number):void {
			_x = X;
			_y = Y;
		}
		public function getPosition():Object {
			return {x:_x, y:_y};
		}
		public function setX(val:Number):void {
			_x = val;
		}
		public function getX():Number {
			return _x;
		}
		public function setY(val:Number):void {
			_y = val;
		}
		public function getY():Number {
			return _y;
		}
		//bounds
		public function getBounds():Object {
			return {xMin:_x, xMax:_x + _w, yMin:_y, yMax:_y + _h};
		}
		public function setRight(val:Number):void {
			_w = val - _x;
		}
		public function getRight():Number {
			return _x + _w;
		}
		public function setBottom(val:Number):void {
			_h = val - _y;
		}
		public function getBottom():Number {
			return _y + _h;
		}
		public function toString():String {
			return "com.flashconnections.pattern.mvc.actionscript_video_com_flashconnections_pattern_mvc_View";
		}
	}
}