Skip to content

Instantly share code, notes, and snippets.

@jusopi
Created July 2, 2014 22:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jusopi/99dc0bba51fe43fcf278 to your computer and use it in GitHub Desktop.
Save jusopi/99dc0bba51fe43fcf278 to your computer and use it in GitHub Desktop.
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