5 coffee's and 3 RedBull's later, I'm running on fumes, so don't really have intelligent answers for you, just guesses.
Don't know, I guess you're right. Find some way to either A) follow the convention a Command will get the event class of a similiar name, and thus feel safe in casting it or B ) find some way to strongly type that parameter. You can't up-cast function arguments, though, so it's kind of stuck as CairngormEvent... I think. For the multiple events, yes, you are correct. I've definately taken for granted all my other stuff has worked for that very fact. Oops. Actually, at this point, no clue... wtf were you talking about anyway, Bokel? ----- Original Message ----- From: "ben.clinkinbeard" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Thursday, July 27, 2006 10:50 PM Subject: [flexcoders] Re: cairngorm Events and data payloads Doesn't execute() accept a CairngromEvent for the sake of polymorphism though? How could you do things any differently and still preserve that aspect? Additionally, if you want your Commands to support multiple types of events isn't it essential that execute() accept a superclass or common interface? Are you just wishing AS supported method overloading or is there something I am still not getting? Thanks, Ben http://www.returnundefined.com/ --- In [email protected], "JesterXL" <[EMAIL PROTECTED]> wrote: > > 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: <[email protected]> > 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 [email protected], "JesterXL" <jesterxl@> 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: [email protected] > > 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 <jesterxl@> 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: [email protected] > > 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 <douglasknudsen@> 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 < thunder.stumpges@> 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 [email protected], "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 <ralf.bokelberg@> > > > > Flex & Flash Consultant based in Cologne/Germany > > > > > > > > -- > > Ralf Bokelberg <ralf.bokelberg@> > > 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 -- 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/

