My initial frustration was I'd create this event class, which allowed strong-typing, like so:
package { import com.adobe.control.CairngormEvent; public class MyEvent extends CairngormEvent { public static const ACTION:String = "action"; public var someID:int; public function MyEvent(p_type:String, p_someID:int) { super(p_type); someID = p_someID; } } } So, my event now has context. If I need to have my Command get a person record from the DB for example, this event will contain the payload it needs; the person ID I'm looking for. However, by the time it gets to the Command, it's a base class, the CairngormEvent. package { public class MyCommand implements AllTheInterfacesEct { public function execute ( event:CairngormEvent ) { trace(event.someID); // faith based programming } } } Now, for some, their Events are directly linked to Commands, like so: LoginEvent will fire LoginCommand which calls LoginDelegate GetPersonEvent will fire GetPersonCommand which calls GetPersonDelegate At a simple level, yes, this'll do. So, you can acutally make some assumptions in the above; if you play by the default Cairngorm rules, you KNOW by convention that your MyCommand class will get a MyEvent, so you could risk up-casting, like so: someDelegateMethod ( MyEvent ( event ) . someID ); ...that's faith, though. You'll get an exception if for some reason that's not the real event. It'd be better if the compiler caught that vs. the runtime, before it's a problem. For me, I use multiple events inside Commands, so it's exacerbated. The Controller keeps all of this under tabs, but again, it'd be nice if MyCommand for example GOT MyEvent in the execute. I supposed you could make that assumption; not sure if it'd compile. Anyway, convention over strict-typing is ok since a lot of conventions teams follow can do the above, for example, and assume you'll get what you need. ----- Original Message ----- From: "ben.clinkinbeard" <[EMAIL PROTECTED]> To: <flexcoders@yahoogroups.com> Sent: Thursday, July 27, 2006 10:22 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Forgive the dense noob here, but how is the type info lost? I thought that by subclassing CairngormEvent you get basic checking and then you can just do a cast or 'event as MyCutomEvent' inside the execute method. I guess I am just not clear on what the issue is and where the problem lies. Can someone edumacate me? Thanks, Ben http://www.returnundefined.com/ --- In flexcoders@yahoogroups.com, "JesterXL" <[EMAIL PROTECTED]> wrote: > > Well, my events extend CairngormEvent, so I can technically upcast 'em when they get in the Command's execute method. I know Steven didn't really dig this idea, but if you case the type, you can compare to the Event's constant like: > > public static const EVENT_DOSOMETHING:String = "doSomething"; > > function execute(event:CairngormEvent) > { > switch(event.type) > { > case MyEvent.EVENT_DOSOMETHING: > someMethod ( MyEvent(event).someTypeSafeProp); > break; > } > } > > > ----- Original Message ----- > From: Ralf Bokelberg > To: flexcoders@yahoogroups.com > Sent: Thursday, July 27, 2006 4:20 PM > Subject: Re: [flexcoders] Re: cairngorm Events and data payloads > > > The only typesafe solution i can think of, is to abandon CairngormEvents and replace them by methods of the FrontController. Most of the apps i've seen so far don't make use of the runtime changeability anyways. What do we loose if we do it like that? > > Cheers, > Ralf. > > > On 7/27/06, JesterXL <[EMAIL PROTECTED]> wrote: > I'm with you. I've been determing type of event based on the event.type in the Command's execute method to get my strong-typing back. > > ----- Original Message ----- > From: Ralf Bokelberg > To: flexcoders@yahoogroups.com > Sent: Thursday, July 27, 2006 12:58 PM > Subject: Re: [flexcoders] Re: cairngorm Events and data payloads > > > Its really a pity, that we loose all the nice type information while going all the way through Cairngorm. > > Cheers, > Ralf. > > > On 7/27/06, Douglas Knudsen <[EMAIL PROTECTED]> wrote: > ah, righto. thanks d00ds. I had this hacked up too much...no worky good. If only I can get that damn RO to calm down now and do what its told! but that's another thread. > > > DK > > > > On 7/27/06, thunderstumpgesatwork < [EMAIL PROTECTED]> wrote: > Hi, > > The delegate function thinks you just have a CairngormEvent. I think > you just need to check to make sure the event you received is your > custom event type and then cast it. > > so: > > if (eventHere is LoadScorecardEvent) > { > del.getScorecard( LoadScorecardEvent(eventHere).scorecardId ); > } > else > { > // do nothing, or raise error, or log warning, or whatever. > } > > > best of luck, > Thunder > > --- In flexcoders@yahoogroups.com, "Douglas Knudsen" > <douglasknudsen@> wrote: > > > > can someone point me to a example of how to pass data in a cairngorm > type > > event? I'm trying the below with > > > > package com.mycompany.events > > { > > import com.adobe.cairngorm.control.CairngormEvent; > > > > public class LoadScorecardEvent extends CairngormEvent > > { > > public static var EVENT_LOAD_SCORECARD: String = > > 'LoadScorecardEvent'; > > public var scorecardId:Number; > > /** > > * The constructor, > > */ > > public function LoadScorecardEvent( ) > > { > > super( EVENT_LOAD_SCORECARD ); > > > > } > > > > } > > > > } > > > > then in a view dispatching like so > > var devent : LoadScorecardEvent = new LoadScorecardEvent( ); > > devent.scorecardId = 5; > > > CairngormEventDispatcher.getInstance().dispatchEvent( > > devent ); > > > > and in the command I have > > > > public function execute( eventHere : CairngormEvent ) : void > > { > > var del : MainDelegate = new MainDelegate( this ); > > del.getScorecard( eventHere.scorecardId ); > > > > } > > > > But this bombs out with a error about scorecardId not in eventHere. > > > > DK > > > > > > -- > > Douglas Knudsen > > http://www.cubicleman.com > > this is my signature, like it? > > > > > > > > > > -- > Flexcoders Mailing List > FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt > Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com > Yahoo! Groups Links > > > > > > > > > > > > -- > Douglas Knudsen > http://www.cubicleman.com > this is my signature, like it? > > > > > -- > Ralf Bokelberg <[EMAIL PROTECTED]> > > Flex & Flash Consultant based in Cologne/Germany > > > > -- > Ralf Bokelberg <[EMAIL PROTECTED]> > Flex & Flash Consultant based in Cologne/Germany > -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/