PageRenderTime 64ms CodeModel.GetById 41ms app.highlight 9ms RepoModel.GetById 7ms app.codeStats 0ms

/src/org/robotlegs/mvcs/Mediator.as

https://bitbucket.org/HopeSky/mars_nd2d
ActionScript | 159 lines | 67 code | 16 blank | 76 comment | 3 complexity | d0b9d5795cb9479c14d4f157637788d0 MD5 | raw file
  1/*
  2 * Copyright (c) 2009 the original author or authors
  3 * 
  4 * Permission is hereby granted to use, modify, and distribute this file 
  5 * in accordance with the terms of the license agreement accompanying it.
  6 */
  7
  8package org.robotlegs.mvcs
  9{
 10	import flash.display.DisplayObjectContainer;
 11	import flash.events.Event;
 12	import flash.events.IEventDispatcher;
 13	
 14	import org.robotlegs.base.EventMap;
 15	import org.robotlegs.base.MediatorBase;
 16	import org.robotlegs.core.IEventMap;
 17	import org.robotlegs.core.IMediatorMap;
 18	
 19	/**
 20	 * Abstract MVCS <code>IMediator</code> implementation
 21	 */
 22	public class Mediator extends MediatorBase
 23	{
 24		[Inject]
 25		public var contextView:DisplayObjectContainer;
 26		
 27		[Inject]
 28		public var mediatorMap:IMediatorMap;
 29		
 30		/**
 31		 * @private
 32		 */
 33		protected var _eventDispatcher:IEventDispatcher;
 34		
 35		/**
 36		 * @private
 37		 */
 38		protected var _eventMap:IEventMap;
 39		
 40		public function Mediator()
 41		{
 42		}
 43		
 44		/**
 45		 * @inheritDoc
 46		 */
 47		override public function preRemove():void
 48		{
 49			if (_eventMap)
 50				_eventMap.unmapListeners();
 51			super.preRemove();
 52		}
 53		
 54		/**
 55		 * @inheritDoc
 56		 */
 57		public function get eventDispatcher():IEventDispatcher
 58		{
 59			return _eventDispatcher;
 60		}
 61		
 62		[Inject]
 63		/**
 64		 * @private
 65		 */
 66		public function set eventDispatcher(value:IEventDispatcher):void
 67		{
 68			_eventDispatcher = value;
 69		}
 70		
 71		/**
 72		 * Local EventMap
 73		 *
 74		 * @return The EventMap for this Actor
 75		 */
 76		protected function get eventMap():IEventMap
 77		{
 78			return _eventMap || (_eventMap = new EventMap(eventDispatcher));
 79		}
 80		
 81		/**
 82		 * Dispatch helper method
 83		 *
 84		 * @param event The Event to dispatch on the <code>IContext</code>'s <code>IEventDispatcher</code>
 85		 */
 86		protected function dispatch(event:Event):Boolean
 87		{
 88 		    if(eventDispatcher.hasEventListener(event.type))
 89 		        return eventDispatcher.dispatchEvent(event);
 90 		 	return false;
 91		}
 92		
 93		/**
 94		 * Syntactical sugar for mapping a listener to the <code>viewComponent</code> 
 95		 * 
 96		 * @param type
 97		 * @param listener
 98		 * @param eventClass
 99		 * @param useCapture
100		 * @param priority
101		 * @param useWeakReference
102		 * 
103		 */		
104		protected function addViewListener(type:String, listener:Function, eventClass:Class = null, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = true):void
105		{
106			eventMap.mapListener(IEventDispatcher(viewComponent), type, listener, 
107				eventClass, useCapture, priority, useWeakReference); 
108		}
109
110        /**
111		 * Syntactical sugar for mapping a listener from the <code>viewComponent</code>
112		 *
113		 * @param type
114		 * @param listener
115		 * @param eventClass
116		 * @param useCapture
117		 *
118		 */
119		protected function removeViewListener(type:String, listener:Function, eventClass:Class = null, useCapture:Boolean = false):void
120		{
121			eventMap.unmapListener(IEventDispatcher(viewComponent), type, listener,
122				eventClass, useCapture);
123		}
124
125		/**
126		 * Syntactical sugar for mapping a listener to an <code>IEventDispatcher</code> 
127		 * 
128		 * @param dispatcher
129		 * @param type
130		 * @param listener
131		 * @param eventClass
132		 * @param useCapture
133		 * @param priority
134		 * @param useWeakReference
135		 * 
136		 */		
137		protected function addContextListener(type:String, listener:Function, eventClass:Class = null, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = true):void
138	 	{
139			eventMap.mapListener(eventDispatcher, type, listener, 
140				eventClass, useCapture, priority, useWeakReference); 									   
141		}
142
143		/**
144		 * Syntactical sugar for unmapping a listener from an <code>IEventDispatcher</code>
145		 *
146		 * @param dispatcher
147		 * @param type
148		 * @param listener
149		 * @param eventClass
150		 * @param useCapture
151		 *
152		 */
153		protected function removeContextListener(type:String, listener:Function, eventClass:Class = null, useCapture:Boolean = false):void
154	 	{
155			eventMap.unmapListener(eventDispatcher, type, listener,
156				eventClass, useCapture);
157		}
158	}
159}