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.
- data/2.0.4/asdoc/all-classes.html +81 -0
- data/2.0.4/asdoc/all-index-A.html +59 -0
- data/2.0.4/asdoc/all-index-B.html +52 -0
- data/2.0.4/asdoc/all-index-C.html +92 -0
- data/2.0.4/asdoc/all-index-D.html +58 -0
- data/2.0.4/asdoc/all-index-E.html +89 -0
- data/2.0.4/asdoc/all-index-F.html +72 -0
- data/2.0.4/asdoc/all-index-G.html +190 -0
- data/2.0.4/asdoc/all-index-H.html +174 -0
- data/2.0.4/asdoc/all-index-I.html +202 -0
- data/2.0.4/asdoc/all-index-J.html +52 -0
- data/2.0.4/asdoc/all-index-K.html +52 -0
- data/2.0.4/asdoc/all-index-L.html +67 -0
- data/2.0.4/asdoc/all-index-M.html +112 -0
- data/2.0.4/asdoc/all-index-N.html +128 -0
- data/2.0.4/asdoc/all-index-O.html +178 -0
- data/2.0.4/asdoc/all-index-P.html +79 -0
- data/2.0.4/asdoc/all-index-Q.html +52 -0
- data/2.0.4/asdoc/all-index-R.html +308 -0
- data/2.0.4/asdoc/all-index-S.html +193 -0
- data/2.0.4/asdoc/all-index-T.html +67 -0
- data/2.0.4/asdoc/all-index-U.html +52 -0
- data/2.0.4/asdoc/all-index-V.html +84 -0
- data/2.0.4/asdoc/all-index-W.html +52 -0
- data/2.0.4/asdoc/all-index-X.html +52 -0
- data/2.0.4/asdoc/all-index-Y.html +52 -0
- data/2.0.4/asdoc/all-index-Z.html +52 -0
- data/2.0.4/asdoc/appendixes.html +47 -0
- data/2.0.4/asdoc/asdoc.js +273 -0
- data/2.0.4/asdoc/class-summary.html +174 -0
- data/2.0.4/asdoc/cookies.js +84 -0
- data/2.0.4/asdoc/images/collapsed.gif +0 -0
- data/2.0.4/asdoc/images/detailHeaderRule.jpg +0 -0
- data/2.0.4/asdoc/images/detailSectionHeader.jpg +0 -0
- data/2.0.4/asdoc/images/expanded.gif +0 -0
- data/2.0.4/asdoc/images/inherit-arrow.gif +0 -0
- data/2.0.4/asdoc/images/inheritedSummary.gif +0 -0
- data/2.0.4/asdoc/images/logo.jpg +0 -0
- data/2.0.4/asdoc/images/titleTableBottom.jpg +0 -0
- data/2.0.4/asdoc/images/titleTableMiddle.jpg +0 -0
- data/2.0.4/asdoc/images/titleTableTop.jpg +0 -0
- data/2.0.4/asdoc/index-list.html +121 -0
- data/2.0.4/asdoc/index.html +63 -0
- data/2.0.4/asdoc/mxml-tags.html +45 -0
- data/2.0.4/asdoc/org/puremvc/as3/core/Controller.html +433 -0
- data/2.0.4/asdoc/org/puremvc/as3/core/Model.html +405 -0
- data/2.0.4/asdoc/org/puremvc/as3/core/View.html +524 -0
- data/2.0.4/asdoc/org/puremvc/as3/core/class-list.html +30 -0
- data/2.0.4/asdoc/org/puremvc/as3/core/package-detail.html +65 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/ICommand.html +110 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IController.html +226 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IFacade.html +520 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IMediator.html +345 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IModel.html +226 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/INotification.html +269 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/INotifier.html +151 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IObserver.html +234 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IProxy.html +217 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/IView.html +350 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/class-list.html +54 -0
- data/2.0.4/asdoc/org/puremvc/as3/interfaces/package-detail.html +93 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/command/MacroCommand.html +284 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/command/SimpleCommand.html +164 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/command/class-list.html +27 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/command/package-detail.html +61 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/Facade.html +940 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/class-list.html +24 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/facade/package-detail.html +57 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/Mediator.html +402 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/class-list.html +24 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/mediator/package-detail.html +57 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Notification.html +312 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Notifier.html +180 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/Observer.html +253 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/class-list.html +30 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/observer/package-detail.html +65 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/Proxy.html +338 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/class-list.html +24 -0
- data/2.0.4/asdoc/org/puremvc/as3/patterns/proxy/package-detail.html +57 -0
- data/2.0.4/asdoc/package-frame.html +36 -0
- data/2.0.4/asdoc/package-list.html +52 -0
- data/2.0.4/asdoc/package-summary.html +68 -0
- data/2.0.4/asdoc/print.css +110 -0
- data/2.0.4/asdoc/style.css +565 -0
- data/2.0.4/asdoc/title-bar.html +55 -0
- data/2.0.4/bin/PureMVC_AS3_2_0_4.swc +0 -0
- data/2.0.4/license.txt +61 -0
- data/2.0.4/src/org/puremvc/as3/core/Controller.as +183 -0
- data/2.0.4/src/org/puremvc/as3/core/Model.as +144 -0
- data/2.0.4/src/org/puremvc/as3/core/View.as +271 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/ICommand.as +21 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IController.as +64 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IFacade.as +131 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IMediator.as +150 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IModel.as +57 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/INotification.as +76 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/INotifier.as +46 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IObserver.as +81 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IProxy.as +61 -0
- data/2.0.4/src/org/puremvc/as3/interfaces/IView.as +106 -0
- data/2.0.4/src/org/puremvc/as3/patterns/command/MacroCommand.as +121 -0
- data/2.0.4/src/org/puremvc/as3/patterns/command/SimpleCommand.as +42 -0
- data/2.0.4/src/org/puremvc/as3/patterns/facade/Facade.as +419 -0
- data/2.0.4/src/org/puremvc/as3/patterns/mediator/Mediator.as +115 -0
- data/2.0.4/src/org/puremvc/as3/patterns/observer/Notification.as +128 -0
- data/2.0.4/src/org/puremvc/as3/patterns/observer/Notifier.as +55 -0
- data/2.0.4/src/org/puremvc/as3/patterns/observer/Observer.as +114 -0
- data/2.0.4/src/org/puremvc/as3/patterns/proxy/Proxy.as +88 -0
- data/2.0.4/src/puremvc-manifest.xml +20 -0
- data/2.0.4/version.txt +117 -0
- data/Gemfile +4 -0
- data/README.textile +107 -0
- data/Rakefile +24 -0
- data/lib/puremvc-as3.rb +29 -0
- data/lib/rake/rename.rb +34 -0
- metadata +198 -0
|
@@ -0,0 +1,419 @@
|
|
|
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.facade
|
|
6
|
+
{
|
|
7
|
+
|
|
8
|
+
import org.puremvc.as3.core.*;
|
|
9
|
+
import org.puremvc.as3.interfaces.*;
|
|
10
|
+
import org.puremvc.as3.patterns.observer.Notification;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A base Singleton <code>IFacade</code> implementation.
|
|
14
|
+
*
|
|
15
|
+
* <P>
|
|
16
|
+
* In PureMVC, the <code>Facade</code> class assumes these
|
|
17
|
+
* responsibilities:
|
|
18
|
+
* <UL>
|
|
19
|
+
* <LI>Initializing the <code>Model</code>, <code>View</code>
|
|
20
|
+
* and <code>Controller</code> Singletons.</LI>
|
|
21
|
+
* <LI>Providing all the methods defined by the <code>IModel,
|
|
22
|
+
* IView, & IController</code> interfaces.</LI>
|
|
23
|
+
* <LI>Providing the ability to override the specific <code>Model</code>,
|
|
24
|
+
* <code>View</code> and <code>Controller</code> Singletons created.</LI>
|
|
25
|
+
* <LI>Providing a single point of contact to the application for
|
|
26
|
+
* registering <code>Commands</code> and notifying <code>Observers</code></LI>
|
|
27
|
+
* </UL>
|
|
28
|
+
* <P>
|
|
29
|
+
* Example usage:
|
|
30
|
+
* <listing>
|
|
31
|
+
* import org.puremvc.as3.patterns.facade.∗;
|
|
32
|
+
*
|
|
33
|
+
* import com.me.myapp.model.~~;
|
|
34
|
+
* import com.me.myapp.view.~~;
|
|
35
|
+
* import com.me.myapp.controller.~~;
|
|
36
|
+
*
|
|
37
|
+
* public class MyFacade extends Facade
|
|
38
|
+
* {
|
|
39
|
+
* // Notification constants. The Facade is the ideal
|
|
40
|
+
* // location for these constants, since any part
|
|
41
|
+
* // of the application participating in PureMVC
|
|
42
|
+
* // Observer Notification will know the Facade.
|
|
43
|
+
* public static const GO_COMMAND:String = "go";
|
|
44
|
+
*
|
|
45
|
+
* // Override Singleton Factory method
|
|
46
|
+
* public static function getInstance() : MyFacade {
|
|
47
|
+
* if (instance == null) instance = new MyFacade();
|
|
48
|
+
* return instance as MyFacade;
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* // optional initialization hook for Facade
|
|
52
|
+
* override public function initializeFacade() : void {
|
|
53
|
+
* super.initializeFacade();
|
|
54
|
+
* // do any special subclass initialization here
|
|
55
|
+
* }
|
|
56
|
+
*
|
|
57
|
+
* // optional initialization hook for Controller
|
|
58
|
+
* override public function initializeController() : void {
|
|
59
|
+
* // call super to use the PureMVC Controller Singleton.
|
|
60
|
+
* super.initializeController();
|
|
61
|
+
*
|
|
62
|
+
* // Otherwise, if you're implmenting your own
|
|
63
|
+
* // IController, then instead do:
|
|
64
|
+
* // if ( controller != null ) return;
|
|
65
|
+
* // controller = MyAppController.getInstance();
|
|
66
|
+
*
|
|
67
|
+
* // do any special subclass initialization here
|
|
68
|
+
* // such as registering Commands
|
|
69
|
+
* registerCommand( GO_COMMAND, com.me.myapp.controller.GoCommand )
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* // optional initialization hook for Model
|
|
73
|
+
* override public function initializeModel() : void {
|
|
74
|
+
* // call super to use the PureMVC Model Singleton.
|
|
75
|
+
* super.initializeModel();
|
|
76
|
+
*
|
|
77
|
+
* // Otherwise, if you're implmenting your own
|
|
78
|
+
* // IModel, then instead do:
|
|
79
|
+
* // if ( model != null ) return;
|
|
80
|
+
* // model = MyAppModel.getInstance();
|
|
81
|
+
*
|
|
82
|
+
* // do any special subclass initialization here
|
|
83
|
+
* // such as creating and registering Model proxys
|
|
84
|
+
* // that don't require a facade reference at
|
|
85
|
+
* // construction time, such as fixed type lists
|
|
86
|
+
* // that never need to send Notifications.
|
|
87
|
+
* regsiterProxy( new USStateNamesProxy() );
|
|
88
|
+
*
|
|
89
|
+
* // CAREFUL: Can't reference Facade instance in constructor
|
|
90
|
+
* // of new Proxys from here, since this step is part of
|
|
91
|
+
* // Facade construction! Usually, Proxys needing to send
|
|
92
|
+
* // notifications are registered elsewhere in the app
|
|
93
|
+
* // for this reason.
|
|
94
|
+
* }
|
|
95
|
+
*
|
|
96
|
+
* // optional initialization hook for View
|
|
97
|
+
* override public function initializeView() : void {
|
|
98
|
+
* // call super to use the PureMVC View Singleton.
|
|
99
|
+
* super.initializeView();
|
|
100
|
+
*
|
|
101
|
+
* // Otherwise, if you're implmenting your own
|
|
102
|
+
* // IView, then instead do:
|
|
103
|
+
* // if ( view != null ) return;
|
|
104
|
+
* // view = MyAppView.getInstance();
|
|
105
|
+
*
|
|
106
|
+
* // do any special subclass initialization here
|
|
107
|
+
* // such as creating and registering Mediators
|
|
108
|
+
* // that do not need a Facade reference at construction
|
|
109
|
+
* // time.
|
|
110
|
+
* registerMediator( new LoginMediator() );
|
|
111
|
+
*
|
|
112
|
+
* // CAREFUL: Can't reference Facade instance in constructor
|
|
113
|
+
* // of new Mediators from here, since this is a step
|
|
114
|
+
* // in Facade construction! Usually, all Mediators need
|
|
115
|
+
* // receive notifications, and are registered elsewhere in
|
|
116
|
+
* // the app for this reason.
|
|
117
|
+
* }
|
|
118
|
+
* }
|
|
119
|
+
* </listing>
|
|
120
|
+
*
|
|
121
|
+
* @see org.puremvc.as3.core.model.Model Model
|
|
122
|
+
* @see org.puremvc.as3.core.view.View View
|
|
123
|
+
* @see org.puremvc.as3.core.controller.Controller Controller
|
|
124
|
+
* @see org.puremvc.as3.patterns.observer.Notification Notification
|
|
125
|
+
* @see org.puremvc.as3.patterns.mediator.Mediator Mediator
|
|
126
|
+
* @see org.puremvc.as3.patterns.proxy.Proxy Proxy
|
|
127
|
+
* @see org.puremvc.as3.patterns.command.SimpleCommand SimpleCommand
|
|
128
|
+
* @see org.puremvc.as3.patterns.command.MacroCommand MacroCommand
|
|
129
|
+
*/
|
|
130
|
+
public class Facade implements IFacade
|
|
131
|
+
{
|
|
132
|
+
/**
|
|
133
|
+
* Constructor.
|
|
134
|
+
*
|
|
135
|
+
* <P>
|
|
136
|
+
* This <code>IFacade</code> implementation is a Singleton,
|
|
137
|
+
* so you should not call the constructor
|
|
138
|
+
* directly, but instead call the static Singleton
|
|
139
|
+
* Factory method <code>Facade.getInstance()</code>
|
|
140
|
+
*
|
|
141
|
+
* @throws Error Error if Singleton instance has already been constructed
|
|
142
|
+
*
|
|
143
|
+
*/
|
|
144
|
+
public function Facade( ) {
|
|
145
|
+
if (instance != null) throw Error(SINGLETON_MSG);
|
|
146
|
+
instance = this;
|
|
147
|
+
initializeFacade();
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Initialize the Singleton <code>Facade</code> instance.
|
|
152
|
+
*
|
|
153
|
+
* <P>
|
|
154
|
+
* Called automatically by the constructor. Override in your
|
|
155
|
+
* subclass to do any subclass specific initializations. Be
|
|
156
|
+
* sure to call <code>super.initializeFacade()</code>, though.</P>
|
|
157
|
+
*/
|
|
158
|
+
protected function initializeFacade( ):void {
|
|
159
|
+
initializeModel();
|
|
160
|
+
initializeController();
|
|
161
|
+
initializeView();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Facade Singleton Factory method
|
|
166
|
+
*
|
|
167
|
+
* @return the Singleton instance of the Facade
|
|
168
|
+
*/
|
|
169
|
+
public static function getInstance():IFacade {
|
|
170
|
+
if (instance == null) instance = new Facade( );
|
|
171
|
+
return instance;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Initialize the <code>Controller</code>.
|
|
176
|
+
*
|
|
177
|
+
* <P>
|
|
178
|
+
* Called by the <code>initializeFacade</code> method.
|
|
179
|
+
* Override this method in your subclass of <code>Facade</code>
|
|
180
|
+
* if one or both of the following are true:
|
|
181
|
+
* <UL>
|
|
182
|
+
* <LI> You wish to initialize a different <code>IController</code>.</LI>
|
|
183
|
+
* <LI> You have <code>Commands</code> to register with the <code>Controller</code> at startup.</code>. </LI>
|
|
184
|
+
* </UL>
|
|
185
|
+
* If you don't want to initialize a different <code>IController</code>,
|
|
186
|
+
* call <code>super.initializeController()</code> at the beginning of your
|
|
187
|
+
* method, then register <code>Command</code>s.
|
|
188
|
+
* </P>
|
|
189
|
+
*/
|
|
190
|
+
protected function initializeController( ):void {
|
|
191
|
+
if ( controller != null ) return;
|
|
192
|
+
controller = Controller.getInstance();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Initialize the <code>Model</code>.
|
|
197
|
+
*
|
|
198
|
+
* <P>
|
|
199
|
+
* Called by the <code>initializeFacade</code> method.
|
|
200
|
+
* Override this method in your subclass of <code>Facade</code>
|
|
201
|
+
* if one or both of the following are true:
|
|
202
|
+
* <UL>
|
|
203
|
+
* <LI> You wish to initialize a different <code>IModel</code>.</LI>
|
|
204
|
+
* <LI> You have <code>Proxy</code>s to register with the Model that do not
|
|
205
|
+
* retrieve a reference to the Facade at construction time.</code></LI>
|
|
206
|
+
* </UL>
|
|
207
|
+
* If you don't want to initialize a different <code>IModel</code>,
|
|
208
|
+
* call <code>super.initializeModel()</code> at the beginning of your
|
|
209
|
+
* method, then register <code>Proxy</code>s.
|
|
210
|
+
* <P>
|
|
211
|
+
* Note: This method is <i>rarely</i> overridden; in practice you are more
|
|
212
|
+
* likely to use a <code>Command</code> to create and register <code>Proxy</code>s
|
|
213
|
+
* with the <code>Model</code>, since <code>Proxy</code>s with mutable data will likely
|
|
214
|
+
* need to send <code>INotification</code>s and thus will likely want to fetch a reference to
|
|
215
|
+
* the <code>Facade</code> during their construction.
|
|
216
|
+
* </P>
|
|
217
|
+
*/
|
|
218
|
+
protected function initializeModel( ):void {
|
|
219
|
+
if ( model != null ) return;
|
|
220
|
+
model = Model.getInstance();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Initialize the <code>View</code>.
|
|
226
|
+
*
|
|
227
|
+
* <P>
|
|
228
|
+
* Called by the <code>initializeFacade</code> method.
|
|
229
|
+
* Override this method in your subclass of <code>Facade</code>
|
|
230
|
+
* if one or both of the following are true:
|
|
231
|
+
* <UL>
|
|
232
|
+
* <LI> You wish to initialize a different <code>IView</code>.</LI>
|
|
233
|
+
* <LI> You have <code>Observers</code> to register with the <code>View</code></LI>
|
|
234
|
+
* </UL>
|
|
235
|
+
* If you don't want to initialize a different <code>IView</code>,
|
|
236
|
+
* call <code>super.initializeView()</code> at the beginning of your
|
|
237
|
+
* method, then register <code>IMediator</code> instances.
|
|
238
|
+
* <P>
|
|
239
|
+
* Note: This method is <i>rarely</i> overridden; in practice you are more
|
|
240
|
+
* likely to use a <code>Command</code> to create and register <code>Mediator</code>s
|
|
241
|
+
* with the <code>View</code>, since <code>IMediator</code> instances will need to send
|
|
242
|
+
* <code>INotification</code>s and thus will likely want to fetch a reference
|
|
243
|
+
* to the <code>Facade</code> during their construction.
|
|
244
|
+
* </P>
|
|
245
|
+
*/
|
|
246
|
+
protected function initializeView( ):void {
|
|
247
|
+
if ( view != null ) return;
|
|
248
|
+
view = View.getInstance();
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Register an <code>ICommand</code> with the <code>Controller</code> by Notification name.
|
|
253
|
+
*
|
|
254
|
+
* @param notificationName the name of the <code>INotification</code> to associate the <code>ICommand</code> with
|
|
255
|
+
* @param commandClassRef a reference to the Class of the <code>ICommand</code>
|
|
256
|
+
*/
|
|
257
|
+
public function registerCommand( notificationName:String, commandClassRef:Class ):void
|
|
258
|
+
{
|
|
259
|
+
controller.registerCommand( notificationName, commandClassRef );
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Remove a previously registered <code>ICommand</code> to <code>INotification</code> mapping from the Controller.
|
|
264
|
+
*
|
|
265
|
+
* @param notificationName the name of the <code>INotification</code> to remove the <code>ICommand</code> mapping for
|
|
266
|
+
*/
|
|
267
|
+
public function removeCommand( notificationName:String ):void
|
|
268
|
+
{
|
|
269
|
+
controller.removeCommand( notificationName );
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Check if a Command is registered for a given Notification
|
|
274
|
+
*
|
|
275
|
+
* @param notificationName
|
|
276
|
+
* @return whether a Command is currently registered for the given <code>notificationName</code>.
|
|
277
|
+
*/
|
|
278
|
+
public function hasCommand( notificationName:String ) : Boolean
|
|
279
|
+
{
|
|
280
|
+
return controller.hasCommand(notificationName);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Register an <code>IProxy</code> with the <code>Model</code> by name.
|
|
285
|
+
*
|
|
286
|
+
* @param proxyName the name of the <code>IProxy</code>.
|
|
287
|
+
* @param proxy the <code>IProxy</code> instance to be registered with the <code>Model</code>.
|
|
288
|
+
*/
|
|
289
|
+
public function registerProxy ( proxy:IProxy ):void
|
|
290
|
+
{
|
|
291
|
+
model.registerProxy ( proxy );
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Retrieve an <code>IProxy</code> from the <code>Model</code> by name.
|
|
296
|
+
*
|
|
297
|
+
* @param proxyName the name of the proxy to be retrieved.
|
|
298
|
+
* @return the <code>IProxy</code> instance previously registered with the given <code>proxyName</code>.
|
|
299
|
+
*/
|
|
300
|
+
public function retrieveProxy ( proxyName:String ):IProxy
|
|
301
|
+
{
|
|
302
|
+
return model.retrieveProxy ( proxyName );
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Remove an <code>IProxy</code> from the <code>Model</code> by name.
|
|
307
|
+
*
|
|
308
|
+
* @param proxyName the <code>IProxy</code> to remove from the <code>Model</code>.
|
|
309
|
+
* @return the <code>IProxy</code> that was removed from the <code>Model</code>
|
|
310
|
+
*/
|
|
311
|
+
public function removeProxy ( proxyName:String ):IProxy
|
|
312
|
+
{
|
|
313
|
+
var proxy:IProxy;
|
|
314
|
+
if ( model != null ) proxy = model.removeProxy ( proxyName );
|
|
315
|
+
return proxy
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Check if a Proxy is registered
|
|
320
|
+
*
|
|
321
|
+
* @param proxyName
|
|
322
|
+
* @return whether a Proxy is currently registered with the given <code>proxyName</code>.
|
|
323
|
+
*/
|
|
324
|
+
public function hasProxy( proxyName:String ) : Boolean
|
|
325
|
+
{
|
|
326
|
+
return model.hasProxy( proxyName );
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Register a <code>IMediator</code> with the <code>View</code>.
|
|
331
|
+
*
|
|
332
|
+
* @param mediatorName the name to associate with this <code>IMediator</code>
|
|
333
|
+
* @param mediator a reference to the <code>IMediator</code>
|
|
334
|
+
*/
|
|
335
|
+
public function registerMediator( mediator:IMediator ):void
|
|
336
|
+
{
|
|
337
|
+
if ( view != null ) view.registerMediator( mediator );
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Retrieve an <code>IMediator</code> from the <code>View</code>.
|
|
342
|
+
*
|
|
343
|
+
* @param mediatorName
|
|
344
|
+
* @return the <code>IMediator</code> previously registered with the given <code>mediatorName</code>.
|
|
345
|
+
*/
|
|
346
|
+
public function retrieveMediator( mediatorName:String ):IMediator
|
|
347
|
+
{
|
|
348
|
+
return view.retrieveMediator( mediatorName ) as IMediator;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Remove an <code>IMediator</code> from the <code>View</code>.
|
|
353
|
+
*
|
|
354
|
+
* @param mediatorName name of the <code>IMediator</code> to be removed.
|
|
355
|
+
* @return the <code>IMediator</code> that was removed from the <code>View</code>
|
|
356
|
+
*/
|
|
357
|
+
public function removeMediator( mediatorName:String ) : IMediator
|
|
358
|
+
{
|
|
359
|
+
var mediator:IMediator;
|
|
360
|
+
if ( view != null ) mediator = view.removeMediator( mediatorName );
|
|
361
|
+
return mediator;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Check if a Mediator is registered or not
|
|
366
|
+
*
|
|
367
|
+
* @param mediatorName
|
|
368
|
+
* @return whether a Mediator is registered with the given <code>mediatorName</code>.
|
|
369
|
+
*/
|
|
370
|
+
public function hasMediator( mediatorName:String ) : Boolean
|
|
371
|
+
{
|
|
372
|
+
return view.hasMediator( mediatorName );
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Create and send an <code>INotification</code>.
|
|
377
|
+
*
|
|
378
|
+
* <P>
|
|
379
|
+
* Keeps us from having to construct new notification
|
|
380
|
+
* instances in our implementation code.
|
|
381
|
+
* @param notificationName the name of the notiification to send
|
|
382
|
+
* @param body the body of the notification (optional)
|
|
383
|
+
* @param type the type of the notification (optional)
|
|
384
|
+
*/
|
|
385
|
+
public function sendNotification( notificationName:String, body:Object=null, type:String=null ):void
|
|
386
|
+
{
|
|
387
|
+
notifyObservers( new Notification( notificationName, body, type ) );
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Notify <code>Observer</code>s.
|
|
392
|
+
* <P>
|
|
393
|
+
* This method is left public mostly for backward
|
|
394
|
+
* compatibility, and to allow you to send custom
|
|
395
|
+
* notification classes using the facade.</P>
|
|
396
|
+
*<P>
|
|
397
|
+
* Usually you should just call sendNotification
|
|
398
|
+
* and pass the parameters, never having to
|
|
399
|
+
* construct the notification yourself.</P>
|
|
400
|
+
*
|
|
401
|
+
* @param notification the <code>INotification</code> to have the <code>View</code> notify <code>Observers</code> of.
|
|
402
|
+
*/
|
|
403
|
+
public function notifyObservers ( notification:INotification ):void {
|
|
404
|
+
if ( view != null ) view.notifyObservers( notification );
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// Private references to Model, View and Controller
|
|
408
|
+
protected var controller : IController;
|
|
409
|
+
protected var model : IModel;
|
|
410
|
+
protected var view : IView;
|
|
411
|
+
|
|
412
|
+
// The Singleton Facade instance.
|
|
413
|
+
protected static var instance : IFacade;
|
|
414
|
+
|
|
415
|
+
// Message Constants
|
|
416
|
+
protected const SINGLETON_MSG : String = "Facade Singleton already constructed!";
|
|
417
|
+
|
|
418
|
+
}
|
|
419
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
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.mediator
|
|
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>IMediator</code> implementation.
|
|
13
|
+
*
|
|
14
|
+
* @see org.puremvc.as3.core.view.View View
|
|
15
|
+
*/
|
|
16
|
+
public class Mediator extends Notifier implements IMediator, INotifier
|
|
17
|
+
{
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The name of the <code>Mediator</code>.
|
|
21
|
+
*
|
|
22
|
+
* <P>
|
|
23
|
+
* Typically, a <code>Mediator</code> will be written to serve
|
|
24
|
+
* one specific control or group controls and so,
|
|
25
|
+
* will not have a need to be dynamically named.</P>
|
|
26
|
+
*/
|
|
27
|
+
public static const NAME:String = 'Mediator';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Constructor.
|
|
31
|
+
*/
|
|
32
|
+
public function Mediator( mediatorName:String=null, viewComponent:Object=null ) {
|
|
33
|
+
this.mediatorName = (mediatorName != null)?mediatorName:NAME;
|
|
34
|
+
this.viewComponent = viewComponent;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get the name of the <code>Mediator</code>.
|
|
39
|
+
* @return the Mediator name
|
|
40
|
+
*/
|
|
41
|
+
public function getMediatorName():String
|
|
42
|
+
{
|
|
43
|
+
return mediatorName;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Set the <code>IMediator</code>'s view component.
|
|
48
|
+
*
|
|
49
|
+
* @param Object the view component
|
|
50
|
+
*/
|
|
51
|
+
public function setViewComponent( viewComponent:Object ):void
|
|
52
|
+
{
|
|
53
|
+
this.viewComponent = viewComponent;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get the <code>Mediator</code>'s view component.
|
|
58
|
+
*
|
|
59
|
+
* <P>
|
|
60
|
+
* Additionally, an implicit getter will usually
|
|
61
|
+
* be defined in the subclass that casts the view
|
|
62
|
+
* object to a type, like this:</P>
|
|
63
|
+
*
|
|
64
|
+
* <listing>
|
|
65
|
+
* private function get comboBox : mx.controls.ComboBox
|
|
66
|
+
* {
|
|
67
|
+
* return viewComponent as mx.controls.ComboBox;
|
|
68
|
+
* }
|
|
69
|
+
* </listing>
|
|
70
|
+
*
|
|
71
|
+
* @return the view component
|
|
72
|
+
*/
|
|
73
|
+
public function getViewComponent():Object
|
|
74
|
+
{
|
|
75
|
+
return viewComponent;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* List the <code>INotification</code> names this
|
|
80
|
+
* <code>Mediator</code> is interested in being notified of.
|
|
81
|
+
*
|
|
82
|
+
* @return Array the list of <code>INotification</code> names
|
|
83
|
+
*/
|
|
84
|
+
public function listNotificationInterests():Array
|
|
85
|
+
{
|
|
86
|
+
return [ ];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Handle <code>INotification</code>s.
|
|
91
|
+
*
|
|
92
|
+
* <P>
|
|
93
|
+
* Typically this will be handled in a switch statement,
|
|
94
|
+
* with one 'case' entry per <code>INotification</code>
|
|
95
|
+
* the <code>Mediator</code> is interested in.
|
|
96
|
+
*/
|
|
97
|
+
public function handleNotification( notification:INotification ):void {}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Called by the View when the Mediator is registered
|
|
101
|
+
*/
|
|
102
|
+
public function onRegister( ):void {}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Called by the View when the Mediator is removed
|
|
106
|
+
*/
|
|
107
|
+
public function onRemove( ):void {}
|
|
108
|
+
|
|
109
|
+
// the mediator name
|
|
110
|
+
protected var mediatorName:String;
|
|
111
|
+
|
|
112
|
+
// The view component
|
|
113
|
+
protected var viewComponent:Object;
|
|
114
|
+
}
|
|
115
|
+
}
|