Created
July 2, 2014 22:00
-
-
Save jusopi/99dc0bba51fe43fcf278 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package app | |
{ | |
import flash.events.Event; | |
import flash.events.IEventDispatcher; | |
import mx.core.FlexGlobals; | |
import mx.managers.IFocusManager; | |
import app.commands.GetSystemSettingsCommand; | |
import app.commands.GetUtilityDataCommand; | |
import app.commands.InitAppCommand; | |
import app.commands.LoginRequestCommand; | |
import app.components.ServiceProgressPopup; | |
import app.components.iServiceProgressPopup; | |
import app.events.AppEventType; | |
import app.events.LoginRequestEvent; | |
import app.managers.ViewManager; | |
import app.mediators.AppMediator; | |
import app.mediators.LoginViewMediator; | |
import app.mediators.MainViewMediator; | |
import app.models.AdminModel; | |
import app.models.DREventsModel; | |
import app.models.NavigationModel; | |
import app.models.SettingsModel; | |
import app.models.UtilityServiceModel; | |
import app.models.ViewStateModel; | |
import app.models.WeatherModel; | |
import app.services.AccountServices; | |
import app.services.AdminAccountServices; | |
import app.services.AdminBillingServices; | |
import app.services.CustomerAccountServices; | |
import app.services.DREventServices; | |
import app.services.HanServices; | |
import app.services.InstallationServices; | |
import app.services.MiscServices; | |
import app.services.ParticipationServices; | |
import app.services.PortalConfigurationServices; | |
import app.services.ServiceHelper; | |
import app.services.ServiceLocator; | |
import app.services.WorkOrderServices; | |
import app.services.iAccountServices; | |
import app.services.iAdminAccountServices; | |
import app.services.iAdminBillingServices; | |
import app.services.iCustomerAccountServices; | |
import app.services.iDREventServices; | |
import app.services.iHanServices; | |
import app.services.iInstallationServices; | |
import app.services.iMiscServices; | |
import app.services.iParticipationServices; | |
import app.services.iPortalConfigurationServices; | |
import app.services.iWorkOrderServices; | |
import app.views.LoginPopup; | |
import app.views.MainView; | |
import robotlegs.bender.extensions.eventCommandMap.api.IEventCommandMap; | |
import robotlegs.bender.extensions.mediatorMap.api.IMediatorMap; | |
import robotlegs.bender.framework.api.IConfig; | |
import robotlegs.bender.framework.api.IInjector; | |
public class AppConfig implements IConfig | |
{ | |
[Inject] | |
public var injector:IInjector; | |
[Inject] | |
public var mediatorMap:IMediatorMap; | |
[Inject] | |
public var commandMap:IEventCommandMap; | |
[Inject] | |
public var dispatcher:IEventDispatcher; | |
public function configure():void | |
{ | |
//models, utils, helpers, etc. | |
injector.map( ServiceHelper ).asSingleton(); //toValue( new ServiceHelper( dispatcher )); | |
injector.map( ServiceLocator ).asSingleton(); //shouldn't need to inject outside of the services themselves | |
//services | |
//if we had mock services, we could inject actual instances here based on flags | |
injector.map( iAccountServices ).toSingleton( AccountServices ); | |
injector.map( iAdminAccountServices ).toSingleton( AdminAccountServices ); | |
injector.map( iAdminBillingServices ).toSingleton( AdminBillingServices ); | |
injector.map( iCustomerAccountServices ).toSingleton( CustomerAccountServices ); | |
injector.map( iDREventServices ).toSingleton( DREventServices ); | |
injector.map( iHanServices ).toSingleton( HanServices ) | |
injector.map( iInstallationServices ).toSingleton( InstallationServices ); | |
injector.map( iMiscServices ).toSingleton( MiscServices ); | |
injector.map( iParticipationServices ).toSingleton( ParticipationServices ); | |
injector.map( iPortalConfigurationServices ).toSingleton( PortalConfigurationServices ); | |
injector.map( iWorkOrderServices ).toSingleton( WorkOrderServices ); | |
//factory - usage injector.get | |
injector.map( iServiceProgressPopup ).toType( ServiceProgressPopup ); | |
injector.map( ViewManager ).asSingleton(); | |
injector.map( AdminModel ).asSingleton(); | |
injector.map( DREventsModel ).asSingleton(); | |
injector.map( NavigationModel ).asSingleton(); | |
injector.map( SettingsModel ).asSingleton(); | |
injector.map( UtilityServiceModel ).asSingleton(); | |
injector.map( ViewStateModel ).asSingleton(); | |
injector.map( WeatherModel ).asSingleton(); | |
//in cases where we may want to delay logic until the next frame cycle inside non-UI classes, | |
//we can inject this funtion. | |
//TODO - check for mem leaks | |
injector.map( Function, "callLater" ).toValue( FlexGlobals.topLevelApplication.callLater ); | |
injector.map( IFocusManager ).toValue( FlexGlobals.topLevelApplication.focusManager ); | |
//views -> mediators | |
mediatorMap.map( MihanUtilPortal_Next ).toMediator( AppMediator ); | |
mediatorMap.map( LoginPopup ).toMediator( LoginViewMediator ); | |
mediatorMap.map( MainView ).toMediator( MainViewMediator ); | |
//events -> commands | |
//this is a chain command... will fire several other commands | |
commandMap.map( AppEventType.INIT_APP_REQUEST ).toCommand( InitAppCommand ); | |
commandMap.map( AppEventType.GET_SYS_SETTINGS_REQUEST ).toCommand( GetSystemSettingsCommand ); | |
commandMap.map( LoginRequestEvent.LOGIN_REQUEST ).toCommand( LoginRequestCommand ); | |
commandMap.map( AppEventType.GET_UTILITY_DATA_REQUEST ).toCommand( GetUtilityDataCommand ); | |
//kickoff the app | |
dispatcher.dispatchEvent( new Event( AppEventType.INIT_APP_REQUEST )); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment