I am converting my application to use Modules... so far most things are working, but I have run into two errors that I have yet to work around. I have pasted the parts of the code pertaining to modules below the message.
1) Sometimes a refresh of the browser window (I am setup for deeplinking... so it returns to the selectedIndex) results in a Class not found error where the Class that cannot be found is my Module class for the module for the deep link selectedIndex. Stack trace is pasted below. 2) I am also getting intermittent DragManager exceptions. I thought that using the SharedCodeModule approach would resolve this... but I must have done something wrong. As always any help is appreciated. Thanks Scott --- MainView.mxml --- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:components="common.components.*" creationComplete="init()" height="100%" width="100%" paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"> <mx:Style source="/PMStyles.css"/> <mx:Script> <![CDATA[ import common.data.Project; ... public function init():void { var m:IModuleInfo = ModuleManager.getModule("SharedCodeModule.swf"); m.load(ApplicationDomain.currentDomain); } public function handleTabIndexChanged(event:IndexChangedEvent):void { deactivateOldTab(event.oldIndex); activateNewTab(event.newIndex); } public function deactivateOldTab(index:int):void { if(index == 0) { ApplicationModule(projReportModule.child).deactivate(); } else if(index == 1) { ApplicationModule(projDetailsModule.child).deactivate(); } else if(index == 2) { ApplicationModule(elTaskModule.child).deactivate(); } else if(index == 6) { ApplicationModule(setupMod.child).deactivate(); } } public function activateNewTab(index:int):void { if(index == 0) { if(projReportModule.child != null) { ApplicationModule(projReportModule.child).init(); } } else if(index == 1) { if(projDetailsModule.child != null) { ApplicationModule(projDetailsModule.child).init(); } } else if(index == 2) { if(elTaskModule.child != null) { ApplicationModule(elTaskModule.child).init(); } } else if(index == 6) { if(setupMod.child != null) { ApplicationModule(setupMod.child).init(); } } } ]]> </mx:Script> <mx:Panel width="100%" height="100%" horizontalCenter="0" layout="absolute" resizeEffect="Resize" title="Project Management System - Verson 2.02" paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"> <components:ExtTabNavigator id="tn" width="100%" height="100%" historyManagementEnabled="true" change="handleTabIndexChanged(event)"> <mx:ModuleLoader id="projReportModule" url="projectReportModule/ProjectReportModule.swf" label="Project Report"/> <mx:ModuleLoader id="projDetailsModule" url="projectDetailsModule/ProjectDetailsModule.swf" label="Project Details"/> <mx:ModuleLoader id="elTaskModule" url="elementTaskModule/ElementTaskModule.swf" label="Element/Task"/> <mx:VBox label="Production Report"/> <mx:VBox label="Design Report"/> <mx:VBox label="Calendar"/> <mx:ModuleLoader id="setupMod" url="setupModule/SetupModule.swf" label="Setup"/> </components:ExtTabNavigator> <mx:ApplicationControlBar width="95%" height="35"> <mx:HBox width="90%"> <mx:Label text="Status:" color="blue" visible="{statusMsg.text.length > 0}"/> <mx:Label id="statusMsg" text=""/> </mx:HBox> <mx:LinkButton id="logoutLink" color="0x0000ff" toolTip="Logout {m_userName}" label="Logout {m_userName}" click="logoutUser(event)"/> </mx:ApplicationControlBar> </mx:Panel> </mx:Application> --- SharedCodeModule.mxml --- <?xml version="1.0" encoding="utf-8"?> <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ import mx.managers.PopUpManager; import common.util.Controller; import mx.managers.DragManager; private var controller:Controller; private var dragManager:DragManager; private var popupManager:PopUpManager ]]> </mx:Script> </mx:Module> --- Module Class not found exception --- Error: Class 'projectReportModule.ProjectReportModule' not found. at _ProjectReportModule_mx_core_FlexModuleFactory/create() at mx.modules::ModuleLoader/moduleReadyHandler()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\modules\ModuleLoader.as:332] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at ModuleInfoProxy/moduleEventHandler()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\modules\ModuleManager.as:1025] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at ModuleInfo/readyHandler()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\modules\ModuleManager.as:704] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::FlexModuleFactory/update()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:324] at mx.core::FlexModuleFactory/docFrameHandler()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:412] --- TypeCoercion exception --- TypeError: Error #1034: Type Coercion failed: cannot convert mx.managers::[EMAIL PROTECTED] to mx.managers.IDragManager. at mx.managers::DragManager$/get impl()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\managers\DragManager.as:150] at mx.managers::DragManager$/get isDragging()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\managers\DragManager.as:185] at mx.controls.listClasses::ListBase/dragScroll()[E:\dev\flex\sdk\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:7083] at Function/http://adobe.com/AS3/2006/builtin::apply() at <anonymous>() at SetIntervalTimer/onTimer() at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick()