puremvc-as3 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. data/2.0.4/asdoc/all-classes.html +81 -0
  2. data/2.0.4/asdoc/all-index-A.html +59 -0
  3. data/2.0.4/asdoc/all-index-B.html +52 -0
  4. data/2.0.4/asdoc/all-index-C.html +92 -0
  5. data/2.0.4/asdoc/all-index-D.html +58 -0
  6. data/2.0.4/asdoc/all-index-E.html +89 -0
  7. data/2.0.4/asdoc/all-index-F.html +72 -0
  8. data/2.0.4/asdoc/all-index-G.html +190 -0
  9. data/2.0.4/asdoc/all-index-H.html +174 -0
  10. data/2.0.4/asdoc/all-index-I.html +202 -0
  11. data/2.0.4/asdoc/all-index-J.html +52 -0
  12. data/2.0.4/asdoc/all-index-K.html +52 -0
  13. data/2.0.4/asdoc/all-index-L.html +67 -0
  14. data/2.0.4/asdoc/all-index-M.html +112 -0
  15. data/2.0.4/asdoc/all-index-N.html +128 -0
  16. data/2.0.4/asdoc/all-index-O.html +178 -0
  17. data/2.0.4/asdoc/all-index-P.html +79 -0
  18. data/2.0.4/asdoc/all-index-Q.html +52 -0
  19. data/2.0.4/asdoc/all-index-R.html +308 -0
  20. data/2.0.4/asdoc/all-index-S.html +193 -0
  21. data/2.0.4/asdoc/all-index-T.html +67 -0
  22. data/2.0.4/asdoc/all-index-U.html +52 -0
  23. data/2.0.4/asdoc/all-index-V.html +84 -0
  24. data/2.0.4/asdoc/all-index-W.html +52 -0
  25. data/2.0.4/asdoc/all-index-X.html +52 -0
  26. data/2.0.4/asdoc/all-index-Y.html +52 -0
  27. data/2.0.4/asdoc/all-index-Z.html +52 -0
  28. data/2.0.4/asdoc/appendixes.html +47 -0
  29. data/2.0.4/asdoc/asdoc.js +273 -0
  30. data/2.0.4/asdoc/class-summary.html +174 -0
  31. data/2.0.4/asdoc/cookies.js +84 -0
  32. data/2.0.4/asdoc/images/collapsed.gif +0 -0
  33. data/2.0.4/asdoc/images/detailHeaderRule.jpg +0 -0
  34. data/2.0.4/asdoc/images/detailSectionHeader.jpg +0 -0
  35. data/2.0.4/asdoc/images/expanded.gif +0 -0
  36. data/2.0.4/asdoc/images/inherit-arrow.gif +0 -0
  37. data/2.0.4/asdoc/images/inheritedSummary.gif +0 -0
  38. data/2.0.4/asdoc/images/logo.jpg +0 -0
  39. data/2.0.4/asdoc/images/titleTableBottom.jpg +0 -0
  40. data/2.0.4/asdoc/images/titleTableMiddle.jpg +0 -0
  41. data/2.0.4/asdoc/images/titleTableTop.jpg +0 -0
  42. data/2.0.4/asdoc/index-list.html +121 -0
  43. data/2.0.4/asdoc/index.html +63 -0
  44. data/2.0.4/asdoc/mxml-tags.html +45 -0
  45. data/2.0.4/asdoc/org/puremvc/as3/core/Controller.html +433 -0
  46. data/2.0.4/asdoc/org/puremvc/as3/core/Model.html +405 -0
  47. data/2.0.4/asdoc/org/puremvc/as3/core/View.html +524 -0
  48. data/2.0.4/asdoc/org/puremvc/as3/core/class-list.html +30 -0
  49. data/2.0.4/asdoc/org/puremvc/as3/core/package-detail.html +65 -0
  50. data/2.0.4/asdoc/org/puremvc/as3/interfaces/ICommand.html +110 -0
  51. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IController.html +226 -0
  52. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IFacade.html +520 -0
  53. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IMediator.html +345 -0
  54. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IModel.html +226 -0
  55. data/2.0.4/asdoc/org/puremvc/as3/interfaces/INotification.html +269 -0
  56. data/2.0.4/asdoc/org/puremvc/as3/interfaces/INotifier.html +151 -0
  57. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IObserver.html +234 -0
  58. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IProxy.html +217 -0
  59. data/2.0.4/asdoc/org/puremvc/as3/interfaces/IView.html +350 -0
  60. data/2.0.4/asdoc/org/puremvc/as3/interfaces/class-list.html +54 -0
  61. data/2.0.4/asdoc/org/puremvc/as3/interfaces/package-detail.html +93 -0
  62. data/2.0.4/asdoc/org/puremvc/as3/patterns/command/MacroCommand.html +284 -0
  63. data/2.0.4/asdoc/org/puremvc/as3/patterns/command/SimpleCommand.html +164 -0
  64. data/2.0.4/asdoc/org/puremvc/as3/patterns/command/class-list.html +27 -0
  65. data/2.0.4/asdoc/org/puremvc/as3/patterns/command/package-detail.html +61 -0
  66. data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/Facade.html +940 -0
  67. data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/class-list.html +24 -0
  68. data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/package-detail.html +57 -0
  69. data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/Mediator.html +402 -0
  70. data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/class-list.html +24 -0
  71. data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/package-detail.html +57 -0
  72. data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Notification.html +312 -0
  73. data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Notifier.html +180 -0
  74. data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Observer.html +253 -0
  75. data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/class-list.html +30 -0
  76. data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/package-detail.html +65 -0
  77. data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/Proxy.html +338 -0
  78. data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/class-list.html +24 -0
  79. data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/package-detail.html +57 -0
  80. data/2.0.4/asdoc/package-frame.html +36 -0
  81. data/2.0.4/asdoc/package-list.html +52 -0
  82. data/2.0.4/asdoc/package-summary.html +68 -0
  83. data/2.0.4/asdoc/print.css +110 -0
  84. data/2.0.4/asdoc/style.css +565 -0
  85. data/2.0.4/asdoc/title-bar.html +55 -0
  86. data/2.0.4/bin/PureMVC_AS3_2_0_4.swc +0 -0
  87. data/2.0.4/license.txt +61 -0
  88. data/2.0.4/src/org/puremvc/as3/core/Controller.as +183 -0
  89. data/2.0.4/src/org/puremvc/as3/core/Model.as +144 -0
  90. data/2.0.4/src/org/puremvc/as3/core/View.as +271 -0
  91. data/2.0.4/src/org/puremvc/as3/interfaces/ICommand.as +21 -0
  92. data/2.0.4/src/org/puremvc/as3/interfaces/IController.as +64 -0
  93. data/2.0.4/src/org/puremvc/as3/interfaces/IFacade.as +131 -0
  94. data/2.0.4/src/org/puremvc/as3/interfaces/IMediator.as +150 -0
  95. data/2.0.4/src/org/puremvc/as3/interfaces/IModel.as +57 -0
  96. data/2.0.4/src/org/puremvc/as3/interfaces/INotification.as +76 -0
  97. data/2.0.4/src/org/puremvc/as3/interfaces/INotifier.as +46 -0
  98. data/2.0.4/src/org/puremvc/as3/interfaces/IObserver.as +81 -0
  99. data/2.0.4/src/org/puremvc/as3/interfaces/IProxy.as +61 -0
  100. data/2.0.4/src/org/puremvc/as3/interfaces/IView.as +106 -0
  101. data/2.0.4/src/org/puremvc/as3/patterns/command/MacroCommand.as +121 -0
  102. data/2.0.4/src/org/puremvc/as3/patterns/command/SimpleCommand.as +42 -0
  103. data/2.0.4/src/org/puremvc/as3/patterns/facade/Facade.as +419 -0
  104. data/2.0.4/src/org/puremvc/as3/patterns/mediator/Mediator.as +115 -0
  105. data/2.0.4/src/org/puremvc/as3/patterns/observer/Notification.as +128 -0
  106. data/2.0.4/src/org/puremvc/as3/patterns/observer/Notifier.as +55 -0
  107. data/2.0.4/src/org/puremvc/as3/patterns/observer/Observer.as +114 -0
  108. data/2.0.4/src/org/puremvc/as3/patterns/proxy/Proxy.as +88 -0
  109. data/2.0.4/src/puremvc-manifest.xml +20 -0
  110. data/2.0.4/version.txt +117 -0
  111. data/Gemfile +4 -0
  112. data/README.textile +107 -0
  113. data/Rakefile +24 -0
  114. data/lib/puremvc-as3.rb +29 -0
  115. data/lib/rake/rename.rb +34 -0
  116. metadata +198 -0
@@ -0,0 +1,128 @@
1
+ /*
2
+ PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
3
+ Your reuse is governed by the Creative Commons Attribution 3.0 United States License
4
+ */
5
+ package org.puremvc.as3.patterns.observer
6
+ {
7
+ import org.puremvc.as3.interfaces.*;
8
+
9
+ /**
10
+ * A base <code>INotification</code> implementation.
11
+ *
12
+ * <P>
13
+ * PureMVC does not rely upon underlying event models such
14
+ * as the one provided with Flash, and ActionScript 3 does
15
+ * not have an inherent event model.</P>
16
+ *
17
+ * <P>
18
+ * The Observer Pattern as implemented within PureMVC exists
19
+ * to support event-driven communication between the
20
+ * application and the actors of the MVC triad.</P>
21
+ *
22
+ * <P>
23
+ * Notifications are not meant to be a replacement for Events
24
+ * in Flex/Flash/Apollo. Generally, <code>IMediator</code> implementors
25
+ * place event listeners on their view components, which they
26
+ * then handle in the usual way. This may lead to the broadcast of <code>Notification</code>s to
27
+ * trigger <code>ICommand</code>s or to communicate with other <code>IMediators</code>. <code>IProxy</code> and <code>ICommand</code>
28
+ * instances communicate with each other and <code>IMediator</code>s
29
+ * by broadcasting <code>INotification</code>s.</P>
30
+ *
31
+ * <P>
32
+ * A key difference between Flash <code>Event</code>s and PureMVC
33
+ * <code>Notification</code>s is that <code>Event</code>s follow the
34
+ * 'Chain of Responsibility' pattern, 'bubbling' up the display hierarchy
35
+ * until some parent component handles the <code>Event</code>, while
36
+ * PureMVC <code>Notification</code>s follow a 'Publish/Subscribe'
37
+ * pattern. PureMVC classes need not be related to each other in a
38
+ * parent/child relationship in order to communicate with one another
39
+ * using <code>Notification</code>s.
40
+ *
41
+ * @see org.puremvc.as3.patterns.observer.Observer Observer
42
+ *
43
+ */
44
+ public class Notification implements INotification
45
+ {
46
+
47
+ /**
48
+ * Constructor.
49
+ *
50
+ * @param name name of the <code>Notification</code> instance. (required)
51
+ * @param body the <code>Notification</code> body. (optional)
52
+ * @param type the type of the <code>Notification</code> (optional)
53
+ */
54
+ public function Notification( name:String, body:Object=null, type:String=null )
55
+ {
56
+ this.name = name;
57
+ this.body = body;
58
+ this.type = type;
59
+ }
60
+
61
+ /**
62
+ * Get the name of the <code>Notification</code> instance.
63
+ *
64
+ * @return the name of the <code>Notification</code> instance.
65
+ */
66
+ public function getName():String
67
+ {
68
+ return name;
69
+ }
70
+
71
+ /**
72
+ * Set the body of the <code>Notification</code> instance.
73
+ */
74
+ public function setBody( body:Object ):void
75
+ {
76
+ this.body = body;
77
+ }
78
+
79
+ /**
80
+ * Get the body of the <code>Notification</code> instance.
81
+ *
82
+ * @return the body object.
83
+ */
84
+ public function getBody():Object
85
+ {
86
+ return body;
87
+ }
88
+
89
+ /**
90
+ * Set the type of the <code>Notification</code> instance.
91
+ */
92
+ public function setType( type:String ):void
93
+ {
94
+ this.type = type;
95
+ }
96
+
97
+ /**
98
+ * Get the type of the <code>Notification</code> instance.
99
+ *
100
+ * @return the type
101
+ */
102
+ public function getType():String
103
+ {
104
+ return type;
105
+ }
106
+
107
+ /**
108
+ * Get the string representation of the <code>Notification</code> instance.
109
+ *
110
+ * @return the string representation of the <code>Notification</code> instance.
111
+ */
112
+ public function toString():String
113
+ {
114
+ var msg:String = "Notification Name: "+getName();
115
+ msg += "\nBody:"+(( body == null )?"null":body.toString());
116
+ msg += "\nType:"+(( type == null )?"null":type);
117
+ return msg;
118
+ }
119
+
120
+ // the name of the notification instance
121
+ private var name : String;
122
+ // the type of the notification instance
123
+ private var type : String;
124
+ // the body of the notification instance
125
+ private var body : Object;
126
+
127
+ }
128
+ }
@@ -0,0 +1,55 @@
1
+ /*
2
+ PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
3
+ Your reuse is governed by the Creative Commons Attribution 3.0 United States License
4
+ */
5
+ package org.puremvc.as3.patterns.observer
6
+ {
7
+ import org.puremvc.as3.interfaces.*;
8
+ import org.puremvc.as3.patterns.facade.Facade;
9
+
10
+ /**
11
+ * A Base <code>INotifier</code> implementation.
12
+ *
13
+ * <P>
14
+ * <code>MacroCommand, Command, Mediator</code> and <code>Proxy</code>
15
+ * all have a need to send <code>Notifications</code>. <P>
16
+ * <P>
17
+ * The <code>INotifier</code> interface provides a common method called
18
+ * <code>sendNotification</code> that relieves implementation code of
19
+ * the necessity to actually construct <code>Notifications</code>.</P>
20
+ *
21
+ * <P>
22
+ * The <code>Notifier</code> class, which all of the above mentioned classes
23
+ * extend, provides an initialized reference to the <code>Facade</code>
24
+ * Singleton, which is required for the convienience method
25
+ * for sending <code>Notifications</code>, but also eases implementation as these
26
+ * classes have frequent <code>Facade</code> interactions and usually require
27
+ * access to the facade anyway.</P>
28
+ *
29
+ * @see org.puremvc.as3.patterns.facade.Facade Facade
30
+ * @see org.puremvc.as3.patterns.mediator.Mediator Mediator
31
+ * @see org.puremvc.as3.patterns.proxy.Proxy Proxy
32
+ * @see org.puremvc.as3.patterns.command.SimpleCommand SimpleCommand
33
+ * @see org.puremvc.as3.patterns.command.MacroCommand MacroCommand
34
+ */
35
+ public class Notifier implements INotifier
36
+ {
37
+ /**
38
+ * Create and send an <code>INotification</code>.
39
+ *
40
+ * <P>
41
+ * Keeps us from having to construct new INotification
42
+ * instances in our implementation code.
43
+ * @param notificationName the name of the notiification to send
44
+ * @param body the body of the notification (optional)
45
+ * @param type the type of the notification (optional)
46
+ */
47
+ public function sendNotification( notificationName:String, body:Object=null, type:String=null ):void
48
+ {
49
+ facade.sendNotification( notificationName, body, type );
50
+ }
51
+
52
+ // Local reference to the Facade Singleton
53
+ protected var facade:IFacade = Facade.getInstance();
54
+ }
55
+ }
@@ -0,0 +1,114 @@
1
+ /*
2
+ PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
3
+ Your reuse is governed by the Creative Commons Attribution 3.0 United States License
4
+ */
5
+ package org.puremvc.as3.patterns.observer
6
+ {
7
+ import org.puremvc.as3.interfaces.*;
8
+
9
+ /**
10
+ * A base <code>IObserver</code> implementation.
11
+ *
12
+ * <P>
13
+ * An <code>Observer</code> is an object that encapsulates information
14
+ * about an interested object with a method that should
15
+ * be called when a particular <code>INotification</code> is broadcast. </P>
16
+ *
17
+ * <P>
18
+ * In PureMVC, the <code>Observer</code> class assumes these responsibilities:
19
+ * <UL>
20
+ * <LI>Encapsulate the notification (callback) method of the interested object.</LI>
21
+ * <LI>Encapsulate the notification context (this) of the interested object.</LI>
22
+ * <LI>Provide methods for setting the notification method and context.</LI>
23
+ * <LI>Provide a method for notifying the interested object.</LI>
24
+ * </UL>
25
+ *
26
+ * @see org.puremvc.as3.core.view.View View
27
+ * @see org.puremvc.as3.patterns.observer.Notification Notification
28
+ */
29
+ public class Observer implements IObserver
30
+ {
31
+ private var notify:Function;
32
+ private var context:Object;
33
+
34
+ /**
35
+ * Constructor.
36
+ *
37
+ * <P>
38
+ * The notification method on the interested object should take
39
+ * one parameter of type <code>INotification</code></P>
40
+ *
41
+ * @param notifyMethod the notification method of the interested object
42
+ * @param notifyContext the notification context of the interested object
43
+ */
44
+ public function Observer( notifyMethod:Function, notifyContext:Object )
45
+ {
46
+ setNotifyMethod( notifyMethod );
47
+ setNotifyContext( notifyContext );
48
+ }
49
+
50
+ /**
51
+ * Set the notification method.
52
+ *
53
+ * <P>
54
+ * The notification method should take one parameter of type <code>INotification</code>.</P>
55
+ *
56
+ * @param notifyMethod the notification (callback) method of the interested object.
57
+ */
58
+ public function setNotifyMethod( notifyMethod:Function ):void
59
+ {
60
+ notify = notifyMethod;
61
+ }
62
+
63
+ /**
64
+ * Set the notification context.
65
+ *
66
+ * @param notifyContext the notification context (this) of the interested object.
67
+ */
68
+ public function setNotifyContext( notifyContext:Object ):void
69
+ {
70
+ context = notifyContext;
71
+ }
72
+
73
+ /**
74
+ * Get the notification method.
75
+ *
76
+ * @return the notification (callback) method of the interested object.
77
+ */
78
+ private function getNotifyMethod():Function
79
+ {
80
+ return notify;
81
+ }
82
+
83
+ /**
84
+ * Get the notification context.
85
+ *
86
+ * @return the notification context (<code>this</code>) of the interested object.
87
+ */
88
+ private function getNotifyContext():Object
89
+ {
90
+ return context;
91
+ }
92
+
93
+ /**
94
+ * Notify the interested object.
95
+ *
96
+ * @param notification the <code>INotification</code> to pass to the interested object's notification method.
97
+ */
98
+ public function notifyObserver( notification:INotification ):void
99
+ {
100
+ this.getNotifyMethod().apply(this.getNotifyContext(),[notification]);
101
+ }
102
+
103
+ /**
104
+ * Compare an object to the notification context.
105
+ *
106
+ * @param object the object to compare
107
+ * @return boolean indicating if the object and the notification context are the same
108
+ */
109
+ public function compareNotifyContext( object:Object ):Boolean
110
+ {
111
+ return object === this.context;
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,88 @@
1
+ /*
2
+ PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
3
+ Your reuse is governed by the Creative Commons Attribution 3.0 United States License
4
+ */
5
+ package org.puremvc.as3.patterns.proxy
6
+ {
7
+ import org.puremvc.as3.interfaces.*;
8
+ import org.puremvc.as3.patterns.observer.*;
9
+ import org.puremvc.as3.patterns.facade.Facade;
10
+
11
+ /**
12
+ * A base <code>IProxy</code> implementation.
13
+ *
14
+ * <P>
15
+ * In PureMVC, <code>Proxy</code> classes are used to manage parts of the
16
+ * application's data model. </P>
17
+ *
18
+ * <P>
19
+ * A <code>Proxy</code> might simply manage a reference to a local data object,
20
+ * in which case interacting with it might involve setting and
21
+ * getting of its data in synchronous fashion.</P>
22
+ *
23
+ * <P>
24
+ * <code>Proxy</code> classes are also used to encapsulate the application's
25
+ * interaction with remote services to save or retrieve data, in which case,
26
+ * we adopt an asyncronous idiom; setting data (or calling a method) on the
27
+ * <code>Proxy</code> and listening for a <code>Notification</code> to be sent
28
+ * when the <code>Proxy</code> has retrieved the data from the service. </P>
29
+ *
30
+ * @see org.puremvc.as3.core.model.Model Model
31
+ */
32
+ public class Proxy extends Notifier implements IProxy, INotifier
33
+ {
34
+
35
+ public static var NAME:String = 'Proxy';
36
+
37
+ /**
38
+ * Constructor
39
+ */
40
+ public function Proxy( proxyName:String=null, data:Object=null )
41
+ {
42
+
43
+ this.proxyName = (proxyName != null)?proxyName:NAME;
44
+ if (data != null) setData(data);
45
+ }
46
+
47
+ /**
48
+ * Get the proxy name
49
+ */
50
+ public function getProxyName():String
51
+ {
52
+ return proxyName;
53
+ }
54
+
55
+ /**
56
+ * Set the data object
57
+ */
58
+ public function setData( data:Object ):void
59
+ {
60
+ this.data = data;
61
+ }
62
+
63
+ /**
64
+ * Get the data object
65
+ */
66
+ public function getData():Object
67
+ {
68
+ return data;
69
+ }
70
+
71
+ /**
72
+ * Called by the Model when the Proxy is registered
73
+ */
74
+ public function onRegister( ):void {}
75
+
76
+ /**
77
+ * Called by the Model when the Proxy is removed
78
+ */
79
+ public function onRemove( ):void {}
80
+
81
+
82
+ // the proxy name
83
+ protected var proxyName:String;
84
+
85
+ // the data object
86
+ protected var data:Object;
87
+ }
88
+ }
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
4
+ Your reuse is governed by the Creative Commons Attribution 3.0 United States License
5
+ -->
6
+ <componentPackage>
7
+ <!-- Core Components -->
8
+ <component id="Controller" class="org.puremvc.as3.core.Controller"/>
9
+ <component id="Model" class="org.puremvc.as3.core.Model"/>
10
+ <component id="View" class="org.puremvc.as3.core.View"/>
11
+ <!-- Pattern Components -->
12
+ <component id="Notifier" class="org.puremvc.as3.patterns.observer.Notifier"/>
13
+ <component id="Facade" class="org.puremvc.as3.patterns.facade.Facade"/>
14
+ <component id="Observer" class="org.puremvc.as3.patterns.observer.Observer"/>
15
+ <component id="Notification" class="org.puremvc.as3.patterns.observer.Notification"/>
16
+ <component id="Mediator" class="org.puremvc.as3.patterns.mediator.Mediator"/>
17
+ <component id="Proxy" class="org.puremvc.as3.patterns.proxy.Proxy"/>
18
+ <component id="SimpleCommand" class="org.puremvc.as3.patterns.command.SimpleCommand"/>
19
+ <component id="MacroCommand" class="org.puremvc.as3.patterns.command.MacroCommand"/>
20
+ </componentPackage>
@@ -0,0 +1,117 @@
1
+ PureMVC - Copyright(c) 2006-08 Futurescale, Inc., Some rights reserved.
2
+ --------------------------------------------------------------------------
3
+ Release Date: 08/14/08
4
+ Platform: ActionScript 3 (Flash, Flex, AIR)
5
+ Version: 2
6
+ Revision: 0
7
+ Minor: 4
8
+ Author: Cliff Hall <cliff@puremvc.org>
9
+ License: Creative Commons Attribution 3.0 United States License
10
+ --------------------------------------------------------------------------
11
+ 2.0.4 Dissallowed re-registration of Mediators in View.registerMediator.
12
+ For more on this bug, see:
13
+ http://forums.puremvc.org/index.php?topic=372
14
+ Modified View.notifyObservers to notify from a copy of the
15
+ observer list rather than the actual observer list, which may
16
+ change during the notification loop. For more on this bug, see:
17
+ http://forums.puremvc.org/index.php?topic=490
18
+
19
+ 2.0.3 Added notifyObservers back to IFacade, where it is required
20
+ if you are sending custom Notifications. No unit tests required.
21
+
22
+ 2.0.2 Refactored View.removeMediator method, moving the logic for removing
23
+ an observer into a removeObserver method (also on IView), which is now
24
+ called by the Controller.removeCommand method as well as the
25
+ View.removeMediator method. This fixes the issue described here:
26
+ http://forums.puremvc.org/index.php?topic=308.0
27
+ Also, the Proxy.removeProxy method only attempts to remove the Proxy
28
+ if it is registered.
29
+
30
+ 2.0.1 This is the public release, due to the limited release of 2.0 which
31
+ did not contain onRegister and onRemove for Proxy and IProxy. Also
32
+ Model, View and Controller classes have been moved together in the
33
+ core package. This has impact to you only if you are extending or
34
+ importing Model, View or Controller directly. Since access to
35
+ these actors is generally through the Facade, this should not be
36
+ an issue.
37
+
38
+ 2.0 This release breaks backward compatibility with any previous release
39
+ because the package structure has changed to incorporate the language
40
+ for this release. Also, the Mediator naming scheme changed to match
41
+ that of the Proxy. Now the constructor to the Mediator takes a
42
+ mediatorName argument before the viewComponent argument. This means
43
+ that you no longer need to override the getMediatorName method in
44
+ your Mediators, you merely send the name to super to be set in the
45
+ constructor.The Mediator also gets a setViewComponent method so that
46
+ transient view components are supported. The Model, View and Facade
47
+ removeProxy and removeMediator methods now return a reference to the
48
+ Proxy or Mediator that was removed from the Model or the View. This
49
+ supports dynamic unregistration and reregistration of Proxies and
50
+ Mediators. And the Facade now implements INotifier, adding a
51
+ sendNotification method. This method makes use of the facade's
52
+ notifyObservers method, and so Notifier's sendNotification method now
53
+ calls facade.sendNotification. This means that you never have
54
+ to create a notification inside the facade and call notifyObservers,
55
+ you may simply call sendNotification with the parameters in the same
56
+ way that Commands, Mediators and Proxies do. It is left public in the
57
+ facade only so that you may still create and send custom notification
58
+ classes. Model and Facade get hasProxy method; View and Facade get a
59
+ hasMediator method to. Mediator and Proxy get onRegister and onRemove
60
+ methods. Notification.toString method was fixed.
61
+
62
+ 1.7.1 A unneeded break statement was in the view's removeMediator method after the
63
+ refactor for 1.7. This bug was not flushed out because of a flaw in the test
64
+ which has been corrected. Here is the associated forum post:
65
+ http://forums.puremvc.org/index.php?topic=181.msg579#msg579
66
+
67
+ 1.7 The Controller's registerCommand method was modified to only create the corresponding
68
+ Observer for the ICommand being registered if no previous ICommand was registered
69
+ to the Notification name in question. The behavior of the method is the same in that
70
+ if an ICommand was previously registered for the Notification, it is no longer used
71
+ and the newly registered ICommand is. However, the previous implementation created
72
+ and registered an extra Observer, which could lead to the new ICommand being executed
73
+ twice. Added removeCommand method to the Facade, which is passed through to the
74
+ Controller. Being such a little-used method its omission was intentional, but it is
75
+ included now as a matter of form. Added to the removeCommand to the IFacade interface
76
+ as well. An issue with the View's removeMediator method was fixed. The previous
77
+ implementation iterated through the observer list, removing associated Observers,
78
+ however this caused the length of the Observer list to change, leading to the
79
+ possibility that some Observers would not be removed when they should have been. The
80
+ issue is discussed here: http://forums.puremvc.org/index.php?topic=145.msg478#msg478
81
+
82
+ 1.6 The 1.5 removeMediator implementation created a new situation where after an
83
+ observerMap array was nulled due to its length falling to zero. subsequent calls
84
+ to removeMediator could throw an exception. This was because the method of removing
85
+ the only reference to the array was setting the observerMap value to null for the
86
+ observerMap key in question. This method was used since Adobe's 'Programming
87
+ ActionScript 3.0 > Core ActionScript 3.0 Data Types and Classes > Working with
88
+ Arrays' says: "You may come across code that uses the delete operator on an array
89
+ element. The delete operator sets the value of an array element to undefined, but
90
+ it does not remove the element from the array". However, this proves to no longer
91
+ be the case. So now, the delete operator is used to remove both observerMap and
92
+ mediatorMap entries.
93
+
94
+ 1.5 Amended removeMediator method to remove associated Observer references from
95
+ the observerMap. When a notificationName's observer list length falls to zero
96
+ the reference to the observer list is also removed. Added compareNotifyContext
97
+ method to the Observer class and IObserver interface, which compares a given
98
+ object to the Observer's notification context and returns a Boolean indicating
99
+ their equality. This allows the View to compare the Mediator being removed with
100
+ the Observer's notification context without breaking the Observer's encapsulation.
101
+
102
+ 1.4 Added INotifier interface and Notifier class. MacroCommand, Command, Mediator
103
+ and Proxy all extend Notifier and implement INotifier. The sendNotification
104
+ method in Proxy and Mediator was moved to Notifier and is now available to
105
+ Commands. Also the protected facade property was moved from Proxy and Mediator
106
+ into Notifier, so Commands now get the facade reference at construction time.
107
+
108
+ 1.3 Obviated the need for AbstractProxy and AbstractMediator in applications:
109
+ * Implemented sendNotification convenience method in Proxy and Mediator
110
+ * Added protected facade:Ifacade property initialized to Facade.getInstance()
111
+ on both Mediator and Proxy. The concrete Facade must be instantiated
112
+ first, but this call will return the concrete instance, even though the
113
+ framework Facade.getInstance is called.
114
+
115
+ 1.2 - Removed old files that were inadvertently included.
116
+
117
+ 1.1 - Repackaged zip and updated inline docs