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