[Arp] arpx - > CommandControl
Sander Wichers
sander at qi-ideas.com
Thu Dec 21 03:01:50 PST 2006
Nyls is talking about me :), so here is my (grants) stripped
commandcontroller:
Adding mappings:
CommandController.getInstance().addEventMapping(EventNames.FOO_REQUEST,
"com.foo.command.GetFooCommand", com.foo.command.GetFooCommand);
I prefer to use the commandcontroller instead of the systemcontroller,
so dispatching would be something like this:
CommandController.getInstance().dispatchEvent({type:
EventNames.FOO_REQUEST, target: this});
-- Sander
import mx.utils.Delegate;
import mx.events.EventDispatcher;
import com.ariaware.arp.CommandTemplate;
class com.foo.CommandController
{
private static var instance : CommandController = null;
private var eventCommandMap : Object;
public var addEventListener : Function;
public var removeEventListener : Function;
public var dispatchEvent : Function;
private function CommandController()
{
EventDispatcher.initialize(this);
this.eventCommandMap = new Object();
}
public static function getInstance() : CommandController
{
if (!instance)
{
instance = new CommandController();
}
return instance;
}
public function addEventMapping(event : String, cmd : String,
classRef : Function) : Void
{
// dynamically create a command:
var command : Function = eval("_global." + cmd);
if (command == null)
{
trace("CommandController:addEventMapping() Could
not create instance for command [" + cmd + "] make sure the command is
FORCED into your swf file.");
}
if (!this.eventCommandMap [ event ])
{
this.eventCommandMap [ event ] = command;
this.addEventListener(event, this);
}
}
private function handleEvent(event:Object) : Void
{
var cmd : CommandTemplate;
if ((cmd = this.eventCommandMap[event.type]) != null)
{
var theCommand : Object = new cmd();
// Execute the command
theCommand.execute( event.target );
}
else
{
trace("CommandController:handleEvent() Could not
find command for event " + event.type);
}
}
}
________________________________
From: arp-bounces at ariaware.com [mailto:arp-bounces at ariaware.com] On
Behalf Of henrik weber (freemind-design)
Sent: donderdag 21 december 2006 11:25
To: General List for Ariaware RIA Platform users and developers
Subject: [Arp] arpx - > CommandControl
hi nyls,
this sounds really interesting; totally failed to notice the
CommandControl-class.
your college absolutely has a point... could someone sketch how we could
use it this way?
@colin: grant explained his thoughts about arpx pretty detailed here ->
http://theresidentalien.typepad.com/ginormous/2005/10/extending_arp.html
hth
henrik
--
_______freemind design_______
MediaDesign & FlashDevelopment
home: www.freemind-design.de
nyls wrote:
Yeps,
I use the CommandControl class, it just binds commands
to events .. I think it is more elegant then the original ARP controller
.. speaking with my new upcoming college :> he made his point that it is
maybe a little overkill to use an external XML file for mapping commands
to events, why not do the 'binding' in the command controller class
itself. You need to 'import' the commands anyway (forceImport for
compiling)
nyls
________________________________
Van: arp-bounces at ariaware.com
[mailto:arp-bounces at ariaware.com] Namens COLIN LIGHT
Verzonden: Wednesday, December 20, 2006 5:32 PM
Aan: General List for Ariaware RIA Platform users and developers
Onderwerp: Re: [Arp] Another ModelLocator Question
Hi Nyls,
I've just been looking at Grants arpx classes. Can you
tell me do you use his CommandControl class? from what I can make out
brings in commands from the 'command-config.xml'
Col.
COLIN LIGHT <colin.light at btopenworld.com>
<mailto:colin.light at btopenworld.com> wrote:
Hi Nyls,
Thanks again for getting back to me.
Yeah this does make sense. I've been
getting a little muddled up cos I downloaded Grants arpx (which doesn't
seem to contain a ModelLocator) and christophes version which seems
slightly different with a modelLocator with binding etc.
Col.
nyls <info at nyls.nl> wrote:
Hey,
The modellocator (ML) is
a singleton so there is only one instance of it in your app. This is
your single entry point to your data/ models from everywhere in your
app.
I tend to use the ARPX
-systemcontroller from Grant , So I let views listen to the
systemcontroller for 'update' events.
So when a command get's
it's result it fills a model through the ML and dispatches an
systemEvent
ModelLocator.getInstance().setModel(ModelNames.NAVIGATION_MODEL,OCLiteVO
(response.ocliteVO));
SystemController.getInstance().dispatchEvent({type:EventNames.NAVIGATION
_MODEL_CHANGE})
And in the appropriate
views I listen for thos system events and grab the model from the
modellocator
SystemController.getInstance().addEventListener(EventNames.NAVIGATION_MO
DEL_CHANGE, Proxy.create(this, navigationModelChanged));
var navModel =
ModelLocator.getInstance().getModel(ModelNames.NAVIGATION_MODEL).getValu
e();
That's how I do it,
Is this of help ??
nyls
________________________________
Van:
arp-bounces at ariaware.com [mailto:arp-bounces at ariaware.com] Namens COLIN
LIGHT
Verzonden: Wednesday, December 20, 2006 2:37 PM
Aan: arp at ariaware.com
Onderwerp: [Arp] Another ModelLocator Question
Hi List,
I'm (as ever) hoping
someone can help me out with an ARP issue. I've been using arp for a few
months now and just when I think I'm get it something else comes along
and I question my own understanding :(
I've been looking at the
ModelLocator pattern, I have read previous post's about this and found
some sample files although it does seem a little confusing. I downloaded
the arpx classes http://www.herrodius.com/upload/arp_extensions.zip
which contain quite a comprehensive version with databinding etc, I've
also seen and much simpler single class version which I have been trying
to use.
I have a number of
ArpForms which compose my views. Within these forms are other Arpforms
which effectively are like components.
What I'm struggling with
is how to populate mx components in my component forms, is it good
practice to import my modelLocator class and then have an update method
which gets called from the main application class when the model gets
populate or create a listener on each form for update events from the
modelLocator?
Col.
_______________________________________________
Arp mailing list
Arp at ariaware.com
http://ariaware.com/mailman/listinfo/arp_ariaware.com
_______________________________________________
Arp mailing list
Arp at ariaware.com
http://ariaware.com/mailman/listinfo/arp_ariaware.com
________________________________
_______________________________________________
Arp mailing list
Arp at ariaware.com
http://ariaware.com/mailman/listinfo/arp_ariaware.com
More information about the Arp
mailing list