puremvc-as3 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
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