what is mate? · a tag-based, event-driven flex framework laura ar guello "mqib what is mate?...
TRANSCRIPT
![Page 1: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/1.jpg)
A tag-based, event-driven Flex framework
Laura Arguello
Alpha!
What is Mate?!
A Flex framework
Not an ActionScript framework
Currently in Alpha (but internally at iteration 4)
![Page 2: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/2.jpg)
Why we created it
To solve recurring problems
Easy to understand
Non-invasive
Easy handling of data retrieval from server
Easy to extend
Event Map
View
Data and
ServicesFlex application
ColdFusion
LiveCycle
SQLite
Business
Logic
Business
LogicView View
Application
![Page 3: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/3.jpg)
How does it do it?
1. You give it a list of actions for every event
2. Mate performs them when the event is dispatched
Using tags to accomplish it!
How to separate the service layer from the views and
business logic
Common Problem
![Page 4: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/4.jpg)
Search
A view
MySearchView.mxml
All-in-one (everything in the view)
MySearchView.mxml
<mx:RemoteObject result="handleResult(event)"
! ! ! ! ! ! fault="handleFault(event)">
private function handleResult(event:ResultEvent):void {
//parse results
}
private function handleFault(event:FaultEvent):void {}
<mx:Button label="Search" click="...”
/>
![Page 5: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/5.jpg)
eventView Controller Command Delegate Remote Object
Cairngorm style
How does Mate work?
1.You give it a list of actions for every event
![Page 6: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/6.jpg)
What you need
an Event
Call the server
Store the data
....
a list of actions
to perform
Event Bus
View
![Page 7: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/7.jpg)
Event Bus
View Event Map
Event Bus
View
Event Map
searchEvent
loginEvent
logoutEvent
EventHandlers
EventHandlers
EventHandlers
![Page 8: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/8.jpg)
Event Bus
Event Map
loginEvent
logoutEvent
searchEvent
<EventHandlers
type="searchEvent">
....."
</EventHandlers>
<mate:EventHandlers type="searchEvent">
! !
</mate:EventHandlers>
Call the server
Event Handlers
Store the data
....
![Page 9: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/9.jpg)
<mate:EventHandlers type="searchEvent">
! !
</mate:EventHandlers>
Event Handlers
<mate:RemoteObjectInvoker ...>
<mate:MethodInvoker ...>
<mate: ...>
<mate:EventHandlers type="searchEvent">
! !
</mate:EventHandlers>
Event Handlers
<mate:RemoteObjectInvoker ...>
<mate:MethodInvoker ...>
<ns:YourTag ... >
![Page 10: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/10.jpg)
<mate:EventHandlers type="searchEvent">
! !
</mate:EventHandlers>
<mate:RemoteObjectInvoker ...>
EventHandlers
<mate:MethodInvoker
generator="MyClass"
method="saveResult"
arguments="{[...]}>
var worker:MyClass = new MyClass();
worker.saveResult(...);
<EventHandlers type="searchEvent">
</EventHandlers>
<RemoteObjectInvoker ...>
resultHandlers for service calls
<resultHandlers>
! !
</resultHandlers>
</RemoteObjectInvoker>
<MethodInvoker ... />
![Page 11: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/11.jpg)
<EventHandlers type="searchEvent">
! !
</EventHandlers>
<RemoteObjectInvoker ...>
faultHandlers for service calls
<resultHandlers>
! !
</resultHandlers>
</RemoteObjectInvoker>
<MethodInvoker ... />
<faultHandlers>
! !
</faultHandlers><MethodInvoker ... />
<?xml version="1.0" encoding="utf-8"?>
<mx:Application ...>
!
! <!-- Event Maps -->
! <maps:MyEventMap />
! <!-- Views -->
! <views:MainUI />!
</mx:Application>
Your main application
![Page 12: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/12.jpg)
<?xml version="1.0" encoding="utf-8"?>
<EventMap ...>
<EventHandlers type="searchEvent">
! ! <RemoteObjectInvoker ...>
<resultHandlers>
! ! <MethodInvoker ... />
</resultHandlers>
</RemoteObjectInvoker>
</EventHandlers>
</EventMap>
The Event Map
1
2
Mate’s solution
How to separate the service layer from the views and
business logic
{eventView EventMap
1 Remote Object
2
Business
Logic
3 ...
![Page 13: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/13.jpg)
Parsing data coming from server
Common Problem
Call Flickr to get a photo
1. Call Flickr
2. Receive XML with photo information
3. Parse XML
4. Store the photo information as a Photo object
![Page 14: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/14.jpg)
//Class com.example.MyPhotoHandler
public function setPhoto(photo:Photo):void
{
...//store data
}
Parsing XML
{EventMap
HTTPService1 Retrieves data
Business
Logic2 Stores data in model
//Class com.example.MyPhotoHandler
public function setPhoto(photo:Photo):void
{
...//store data
}
Parsing XML
{EventMap
XMLHTTPService1
Business
Logic2
=
![Page 15: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/15.jpg)
Parse XML
Parsing XML
{EventMap
XMLHTTPService1
Parser2
Business
Logic3
public function
parsePhoto(xml:XML):Photo {
...
}
Parsing XML
{EventMap
XMLHTTPService1
Parser2
Business
Logic3
![Page 16: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/16.jpg)
Parsing XML
{EventMap
XMLHTTPService1
XMLParser2
Business
Logic3
<EventHandlers type="{PhotoEvent.GET}">
!
</EventHandlers>
In the EventMap (MyEventMap.mxml)
<HTTPServiceInvoker .....>
</HTTPServiceInvoker>
<resultHandlers>
! ! !
! ! !
! ! ! !
! </resultHandlers>
![Page 17: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/17.jpg)
<EventHandlers type="{PhotoEvent.GET}">
!
</EventHandlers>
In the EventMap (MyEventMap.mxml)
<HTTPServiceInvoker .....>
</HTTPServiceInvoker>
<MethodInvoker
generator="com.example.MyPhotoHandler"
method="setPhoto"
arguments="{lastReturn}" />
<resultHandlers>
! ! !
! ! !
! ! ! !
! </resultHandlers>
<MethodInvoker
generator="com.example.MyXMLParser"
method="parsePhoto"
arguments="{resultObject}" />
Problem
How to switch between different types of services
![Page 18: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/18.jpg)
RemoteObject1
XML to Remote Object
{EventMap
Parser2
Business
Logic3
RemoteObject1
XML to Remote Object
{EventMap
Business
Logic2
![Page 19: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/19.jpg)
<EventHandlers type="{PhotoEvent.GET}">
!
</EventHandlers>
<RemoteObjectInvoker .....>
</RemoteObjectInvoker>
XML to Remote Object
<resultHandlers>
! ! !
! ! !
! ! ! !
! </resultHandlers>
<MethodInvoker
generator="com.example.MyPhotoHandler"
method="setPhoto"
arguments="{resultObject}" />
Other handy features
Little things that’ll make you happy
![Page 20: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/20.jpg)
creationComplete="init()" >
! <mx:Script>
private function init():void {
var event:MyInitEvent = new MyInitEvent();! ! ! !
...
dispatchEvent(event);
</mx:Script>
Listen for initialization events
<mx:Application ...
!
</mx:Application>
Listen for initialization events
<mx:Application ...
!
</mx:Application>
<maps:MyEventMap />
>
![Page 21: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/21.jpg)
Listen for Flex events
<EventMap ...>
<EventHandlers type="{FlexEvent.INITIALIZE}">
! !
... actions to perform ...
</EventHandlers>
</EventMap>
Chaining service calls
Remote Object
login( )1
result
Remote Object
getPreferences( user id )2
result
HTTPService
loadStyle( user
preferred style )
3
...
![Page 22: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/22.jpg)
Chaining service calls
<EventHandlers type="{LoginEvent.LOGIN}">
! !
</EventHandlers>
<RemoteObjectInvoker method="login" ...>
<resultHandlers>
</resultHandlers>
</RemoteObjectInvoker>
... actions to perform on result ...
Result has its
own set of
actions to
perform
Chaining service calls
<EventHandlers type="{LoginEvent.LOGIN}">
! !
</EventHandlers>
<RemoteObjectInvoker method="login" ...>
<resultHandlers>
</resultHandlers>
</RemoteObjectInvoker>
<RemoteObjectInvoker method="getPreferences" >
<resultHandlers>... actions to perform on result ...
</resultHandlers>
</RemoteObjectInvoker>
![Page 23: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/23.jpg)
Stopping the handlers
<EventHandlers type="{SearchEvent.FIND_ALL}">
! !
</EventHandlers>
<MethodInvoker ... />
<MethodInvoker ... />
<MethodInvoker ... />
1
2
3 ?
<StopHandlers ... />
Flex messaging integration
Handling Message events
![Page 24: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/24.jpg)
Application Event Map
View
LiveCycle
View View
Flex messaging integration
<MessageHandlers destination="ColdFusionGateway">
! !
</MessageHandlers>
Flex messaging integration
... actions to perform on message received ...
![Page 25: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/25.jpg)
Views-views, event map-views
Multi-way communication
A view
MySearchView.mxml
Searching...Tom
![Page 26: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/26.jpg)
?
{eventView EventMap
1 Remote Object
2Business
Logic
3 ...
How do we get back to the view?
Receiving a response in the view
var event:SearchEvent =
new SearchEvent("searchEvent", true);
event.keyword = textinput.text;
myDispatcher.dispatchEvent(event);
![Page 27: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/27.jpg)
<mate:Dispatcher id="myDispatcher">
</mate:Dispatcher>
Receiving a response in the view
var event:SearchEvent =
new SearchEvent("searchEvent", true);
event.keyword = textinput.text;
myDispatcher.dispatchEvent(event);
<mate:Dispatcher id="myDispatcher">
</mate:Dispatcher>
<mate:ResponseHandler type="searchResultResponse"
response="handleResult()" .../>
Receiving a response in the view
var event:SearchEvent =
new SearchEvent("searchEvent", true);
event.keyword = textinput.text;
myDispatcher.dispatchEvent(event);
<EventMap ...>
<EventHandlers type="searchEvent">
<ResponseAnnouncer .../>
</EventHandlers>
</EventMap>
![Page 28: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/28.jpg)
<mate:Dispatcher id="myDispatcher">
</mate:Dispatcher>
<mate:ResponseHandler type="searchResultResponse"
response="handleResult()" .../>
Receiving a response in the view
var event:SearchEvent =
new SearchEvent("searchEvent", true);
event.keyword = textinput.text;
myDispatcher.dispatchEvent(event);
<EventMap ...>
<EventHandlers type="searchEvent">
<ResponseAnnouncer .../>
</EventHandlers>
</EventMap>
<mate:Dispatcher id="myDispatcher">
</mate:Dispatcher>
<mate:ResponseHandler type="searchResultResponse"
response="handleResult()" .../>
Receiving a response in the view
var event:SearchEvent =
new SearchEvent("searchEvent", true);
event.keyword = textinput.text;
myDispatcher.dispatchEvent(event);
![Page 29: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/29.jpg)
<mate:Dispatcher id="myDispatcher">
</mate:Dispatcher>
<mate:ResponseHandler type="searchResultResponse"
response="handleResult()" .../>
Receiving a response in the view
private function handleResult():void {
//remove loading animation
}
?
EventMap
Can we communicate with views?
View
Business
Logic
![Page 30: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/30.jpg)
EventMap
Can we communicate with views?
View
Business
Logic
EventMap
Can we communicate with views?
View
Business
Logic
![Page 31: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/31.jpg)
EventMap
Can we communicate with views?
View
Business
Logic<Listener type="myEventType" receive="eventWasDispatched()" />
<EventAnnouncer
generator="{MyEvent}
type="myEventType">
Can we communicate between views?
View
?
?
PopUp
EventMap
View
Business
Logic
![Page 32: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/32.jpg)
Can we communicate between views?
View
?
?
PopUp
EventMap
View
Business
Logic
Can we communicate between views?
View
PopUp
View<Listener type="myEventType"
receive="eventWasDispatched()" />
![Page 33: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/33.jpg)
Dependency Injection
Photo
Manager
ColdFusion
//Class com.example.PhotoManager
public function setPhoto(photo:Photo):void
{
...//store data
}
EventMap
![Page 34: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/34.jpg)
Photo
Manager
ColdFusionEventMap
<MethodInvoker generator="{PhotoManager}"
method="setPhoto" arguments="{resultObject}"
cache='true' />
Photo
Manager
PhotoView
ColdFusionEventMap
Model
How can the view get this photo?
without:
Direct reference to model
(ie: ModelLocator.getInstance())
Supplying it from parent view
![Page 35: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/35.jpg)
Photo
Manager
PhotoView
ColdFusionEventMap
Model
public var photo:Photo;
Photo
Manager
PhotoView
ColdFusionEventMap
Model
<Injectors target="{PhotoView}">
! <PropertyInjector
source="{PhotoManager}"
sourceKey="currentPhoto"
targetKey="photo" />
</Injectors>
public var photo:Photo;
![Page 36: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/36.jpg)
Photo
Manager
PhotoView
Model
User
Manager
Album
Manager
PhotoViewAdapter
Photo
Manager
PhotoView
Model
User
Manager
Album
Manager
PhotoViewAdapter
<PhotoViewAdapter id="myAdapter">
![Page 37: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/37.jpg)
Photo
Manager
PhotoView
Model
User
Manager
Album
Manager
PhotoViewAdapter
{myAdapter.photo}
{myAdapter.user}
{myAdapter.album}
<PhotoViewAdapter id="myAdapter">
Photo
Manager
PhotoView
Model
User
Manager
Album
Manager
PhotoViewAdapter
{myAdapter.photo}
{myAdapter.user}
{myAdapter.album}
<PhotoViewAdapter id="myAdapter">
<Injectors target="{PhotoViewAdapter}">
<PropertyInjector
source="{PhotoManager}" .. />
<PropertyInjector
source="{UserManager}" ... />
<PropertyInjector
source="{AlbumManager}" ... />
</Injectors>
![Page 38: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/38.jpg)
Debugging
How to debug the event map
Debugging a sequence
<Debugger level="{LogEventLevel.ALL}" />
<EventHandlers debug="true"
type="{PhotoEvent.SEARCH}">
</EventHandlers>
<HTTPServiceInvoker .....>
<MethodInvoker generator="{FlickrHelper}" ...>
<EventMap ...>
</EventMap>
... actions to perform ...
![Page 39: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/39.jpg)
Debugging a sequence
<Debugger level="{LogEventLevel.ALL}" />
<EventHandlers debug="true"
type="{PhotoEvent.SEARCH}">
</EventHandlers>
<HTTPServiceInvoker .....>
<MethodInvoker generator="{FlickrHelper}" ...>
<EventMap ...>
</EventMap>
... actions to perform ...
Debugging a sequence
<Debugger level="{LogEventLevel.ALL}" />
<EventHandlers debug="true"
type="{PhotoEvent.SEARCH}">
</EventHandlers>
<HTTPServiceInvoker .....>
<MethodInvoker generator="{FlickrHelper}" ...>
<EventMap ...>
</EventMap>
... actions to perform ...
![Page 40: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/40.jpg)
<EventHandlers (started)
type="PhotoEvent.SEARCH" (searchPhotoEvent) priority="0">
<MethodInvoker cache="true"
arguments="[ arg1, null, 1 ]"
method="getSearchUrl"
generator="[class FlickrHelper]"/>
<HTTPServiceInvoker resultFormat="e4x"
url="http://api.flickr.com/services/rest/?
method=flickr.photos.search&api_key=..." method="GET" .../>
</EventHandlers (end) type="PhotoEvent.SEARCH" (searchPhotoEvent)>
Debugging output
Why you’ll love it
Benefits
![Page 41: What is Mate? · A tag-based, event-driven Flex framework Laura Ar guello "MQIB What is Mate? ! A Flex framework Not an ActionScript framework Curr ently in Alpha (but inter nally](https://reader036.vdocuments.net/reader036/viewer/2022062604/5fc4bc4ebcc68679d322a61a/html5/thumbnails/41.jpg)
Highly decoupled
Your classes do not extend from Mate
Business logic is independent of framework
Can be tested & reused
Business logic decoupled from events
Business logic decoupled from services
Events are normal Flash events
Can be reused
Get more
http://mate.asfusion.com