Over 6 years of experience in Software Development including Analysis, Design and Development of various applications in Flash and Flex environment. Currently, I am associated with one of the India's leading IT company specialized in providing eLearning
services, Magic Software Pvt. Ltd (http://www.magicsw.com).
In spare time I blog at http://actionscript.org and at my own weblog brupp.com
To get full benefit from the post I will suggest you to go through the following posts first:
Since Flex framework is event driven; Cairngorm is designed in keeping it in mind. For an event to dispatch you need three things:
1) Event – In case of Cairngorm it is “CairngormEvent”.
2) Event dispatcher – “CairngormEventDispatcher”
3) Listener – Handled by FrontController and Command
This is how an event is dispatched in Cairngorm framework:
CairngormEventDispatcher is a singleton class used to invoke event using “dispatchEvent” function. “POPULATEGRID” is a event identifier constant which the listener will listen to. Now where is the listener? Listener is the command (loosely said). Lets understand the Command first.
Command is a ephemeral class. It has a very short life. It is “executed” when an event is invoked and dies when the task is completed. Every Cairngorm event we create has an associated command class which handles the business logic when event take place. For a class to be a Command class it should implement the Cairngorm’s ICommand interface:
public class <strong>PopulateGridCommand </strong>implements ICommand
public function execute(event:CairngormEvent):void
The interface asks for the “execute” method which is so to say the listener function of the command class which gets called by FrontController.
OK! So now there is an event there is a listener (so to say) then how it is registered to listen who does the mapping of event and command. Here comes in the FrontController.
public class FeedreaderController extends FrontController
public function FeedreaderController()
private function addCommands():void
So our FrontController is FeedreaderController which holds the mapping (check the code in bold) by utilizing “addCommand” method of “FrontController”. The “execute” method is the single entry to the Command class which is called by the Front Controller when a user-gesture indicates that the user wishes to perform a task for which a particular concrete command class has been provided. FrontController is a centralized request handling class in Cairnorm. As mentioned in Cairngorm API documentation, the role of the Front Controller is to first register all the different events that it is capable of handling against worker classes, called command classes. On hearing an application event, the Front Controller will look up its table of registered events, find the appropriate command for handling of the event, before dispatching control to the command by calling its execute() method.
Diagram below demonstrates the role and flow of control in Cairngorm. Other than what we have discussed in this and previous post the following also depicts the Model. Only Command can change the model. View elements can be bound by model properties so that when a property is updated the View doesnt has to listen and fetch for this information. It is handled all internally by Flex framework. Moreover Command can also update the View directly if the change in View isn’t dependent on Model property.
So by now you know know where to put which code in Cairngorm. Just to brief all the term/classes we read:
ViewHelper - Your view helper should have code to interact/change view. Remember the class in no brainier. It can just update the view and has no business logic.
FrontController - The front controller shouldn’t do more than mapping events with commands.
Command - Put the brain here. Command can update Model and View (through view helper). Uses delegates to fetch data. Will discuss more on these in the next article.