Great amount of knowledge. I need some time to discuss it with my other team mate who is expert in OOP and also taking care of webservice part. I appreciate your prompt replies and willingness to share your knowledge. How do I contact you once we design something you suggested? Should I reply to the same thread after some time(may be days)or send an email directly.
Thanks Ars --- In [email protected], Wally Kolcz <wko...@...> wrote: > > One of the joys of Mate is that you can create a 'Services' component > set to fx:object and set up all your data services (web services) and > give them ID's and the wsdl address, then, in your map per eventhandler > call a different method on that web services via the WebServicesInvoker. > Then depending on what Manager you want to tweek the data, call then in > the resultsHandler and MethodInvoker. Focus on creating custom events to > handler different scenerios of data needs. You can also create an > EventHandler that invokes other EventHandlers to set up multiple data > needs per view. > > Lets say you have a email client where you need all messages and > emailaddresses (for a phonebook). Rather than having the view fire off > multiple events to retrieve the different datas, you can have a single > Event (MessengerEvent.START) and in your EventHandler, have it perform > multiple single event calls. > > <EventHandlers type="{MessengerEvent.START}"> > <EventAnnouncer type="{MessEvent.LIST}"> > <Properties username="{event.username}" /> > </EventAnnouncer> > <EventAnnouncer type="{PhoneBookEvent.LIST}"> > <Properties username="{event.username}" /> > </EventAnnouncer> > </EventHandlers> > > This way you can preserve the individual Events incase another view > needs only one. For example another view just wants the phone book, it > can just call the PhoneBookEvent.LIST event and have that view be binded > to that ArrayCollection also. > > A manager is just there to tweek the data and put it into a dataholder. > It doesn't care where it goes to or how many elements are using it. As > long as it can support it. > > Split your managers up by category and you can have as many as you like. > I break mine up by view (or view category). For my child portal > application I have ChatManager, ArtManager, UserManager, UsageManager, > JournalManager, MailManager, AppManager, and about a dozen others. Don't > make a generic manager that handler EVERYTHING, especially if you are > talking over 100 views. > > Also, as your EventMap grows, break it up into other EventMaps. I have > mine by Event type letters (A-L, M-R, S-Z). For Example MailEvent goes > in M-R, JournalEvent goes in A-L, etc. > > Hope that helps. If you need anything else. Let me know. I can share > what knowledge I have. > > On 4/20/2010 2:55 PM, md_ars wrote: > > > > > > > > Thanks Wally. It worked. I don't know where I was missing. I started > > from the same because with one panel I tested it successfully to > > populate data in a DataGrid. When I added multiple modules and menu, I > > modified DataManage and might have missed either some sequence or > > properties. > > > > I am using only one menu which is the starting page. Main Application > > call this page(view as this page and Eventmap) then event is > > dispatched from this module to get the data for menu. I have added > > addEventListener(MenuEvent.ITEM_CLICK,onMenuClick) to call the other > > modules(component) attached to menu items. Hope this is appropriate. > > Now my concern is every called module(mxml component) as well as menu > > using the same webservice and same method with different arguments. > > Does this need a separate event handler for each module(component) as > > it is doing for menu(given below) and in the SAME eventmap. Do I need > > to write a separate method in DataManger for each result handler. One > > module may have more than one operation (fetch and save). My worry is > > it will become huge if I add 150 screens and 100 reports. Is there any > > way to make event handler generic and same with DataManger. Please > > suggest. I am new to both OOP and Flex. > > > > <EventHandlers type="{GetDataEvent.GET_M}" debug="true"> > > <WebServiceInvoker wsdl="http://10d/MyApps/App?WSDL > > <http://10d/MyApps/App?WSDL>" > > method="mtExecute" > > arguments="{[SessionManager.dbSessionID, event.dbParam]}" > > debug="true"> > > <resultHandlers> > > <!-- parse the results --> > > <MethodInvoker generator="{DataManager}" method="saveMenuData" > > arguments="{resultObject}" /> > > <EventAnnouncer generator="{GetDataEvent}" > > type="{EventSequenceDispatcher.EVENT_FINISHED}" /> > > </resultHandlers> > > </WebServiceInvoker> > > </EventHandlers> > > > > --- In [email protected] > > <mailto:flexcoders%40yahoogroups.com>, Wally Kolcz <wkolcz@> wrote: > > > > > > If you created an ArrayCollection in your DataManager, did you set > > it to > > > [Bindable]? The AC doesn't care where it is injected or into what > > > element (as long as it supports it), its just a data wrapper. Is the > > > menu a separate component that you 'include' in multiple views or are > > > you creating a new menu in each view? If you share a component Menu, > > > then you would just need to add a Bindable arraycollection in the > > > script area of your Menu then (in your EventMap) add an injector to > > bind > > > it to the AC in the manager. > > > > > > For Example: > > > DataManager: [Bindable] public var sourceData:ArrayCollection; > > > Menu Component: [Bindable] public var menuData:ArrayCollection; > > > > > > <Injectors target="{MyMenuComponent}"> > > > <PropertyInjector source="{DataManager}" sourceKey="sourceData" > > > targetKey="menuData" /> > > > </Injectors> > > > > > > If you have a menu in 2 different views (not recommended), just > > create 2 > > > injectors. > > > DataManager: [Bindable] public var sourceData:ArrayCollection; > > > View 1: [Bindable] public var menuData:ArrayCollection; > > > View 2: [Bindable] public var menuData:ArrayCollection; > > > > > > <Injectors target="{View1}"> > > > <PropertyInjector source="{DataManager}" sourceKey="sourceData" > > > targetKey="menuData" /> > > > </Injectors> > > > <Injectors target="{View2}"> > > > <PropertyInjector source="{DataManager}" sourceKey="sourceData" > > > targetKey="menuData" /> > > > </Injectors> > > > > > > In any case, you only need one EventMap for an application (unless you > > > want to break it up to make it smaller cause they can get QUITE long). > > > You would need multiple injectors (one per view) unless you create a > > > component out of all shared pieces (which promotes reuse...a true OO > > > best practice). > > > > > > Let me know if this helps at all > > > > > > On 4/20/2010 12:56 PM, md_ars wrote: > > > > > > > > > > > > > > > > Thanks for the reply. > > > > > > > > Please check my requirement below and let me know do I need separate > > > > event map for each screen/mxml component? how it will be linked to > > > > main event map. > > > > > > > > I created a ArrayCollection in the DataManager that is being > > populated > > > > in the result event and I want to inject it in the calling module. > > > > > > > > -- The main application calling the view which contains the menu bar. > > > > It dispatches the event. Once event is triggered and fetched the data > > > > from database, control should come back to view and menu should be > > > > populated with database value(menu items). The intermediate > > > > ArrayCollection is being populated but not assigning values to the > > > > dataprovider of menu. > > > > > > > > Ars > > > > > > > > --- In [email protected] > > <mailto:flexcoders%40yahoogroups.com> > > > > <mailto:flexcoders%40yahoogroups.com>, Wally Kolcz <wkolcz@> wrote: > > > > > > > > > > I use Mate on all my projects. I use a lot of injectors to push > > my data > > > > > to my views by binding them to the manager Class. What is the > > issue you > > > > > are having? If you are reusing the same element on 2 views, > > you'd need > > > > > to either put the data binding (ArrayCollection, Object, etc) on the > > > > > component with your menu or push the data to both views to have the > > > > menu > > > > > use it as a datasource. > > > > > > > > > > I particularly like Mate for 2 main reasons. Lower learning > > curve and > > > > > you don't put any of the framework into your views or models. All is > > > > > managed by custom events and the map. So, if at any time in the > > future, > > > > > you want to pop it out of the application, its minimal work > > (just have > > > > > to write connectors for the events). > > > > > > > > > > On 4/19/2010 1:55 PM, md_ars wrote: > > > > > > > > > > > > Hello, > > > > > > > > > > > > We are planning to use MATE framework for our project. We will > > have > > > > > > two separate applications our main transaction application > > will have > > > > > > probably over 150 screens and 100 reports. The application is > > mostly > > > > > > data driven and we are using web-services to display and enter the > > > > > > data. I tested the MATE frame work with one screen and it was > > easy to > > > > > > implement. Now I am trying with one MENU and two screens and it is > > > > > > getting complicated to use shared classes etc. Is the MATE > > framework > > > > > > good for our application? If yes what is the best way to implement > > > > > > MATE? With two screens I am already finding tricky to use > > Injectors. > > > > > > The main code structure of my project looks like as given below. > > > > > > > > > > > > Main -- Contains Application module > > > > > > view > > > > > > Forms -- Contains screens based on panels/vbox or mdi window > > > > > > Events - Contains main event map and following folders > > > > > > Session -- Events triggered from the screens. > > > > > > EventManager -- Parsing the data after session events fetched data > > > > > > through web service. > > > > > > ControlClass -- Common classes used for screens etc. > > > > > > > > > > > > Should I use a common structure of the whole application or > > should it > > > > > > a separate for each screen? To me it will be too messy to have > > common > > > > > > structure whereas too tedious for each screen. So far team > > size is 2 > > > > > > and may extend to 3. Please suggest an optimum way. > > > > > > > > > > > > Thanks > > > > > > Ars > > > > > > > > > > > >

