FictiveSectionsTransition.as

Go to the documentation of this file.
00001 import mx.utils.Delegate;
00002 
00003 import gugga.application.SectionsTransition;
00004 import gugga.common.EventDescriptor;
00005 import gugga.sequence.FictiveTask;
00006 import gugga.sequence.PreconditionsTask;
00007 import gugga.sequence.ProgressMonitor;
00008 import gugga.utils.DoLaterUtil;
00009 
00014 class gugga.application.FictiveSectionsTransition extends SectionsTransition
00015 {
00016         private var mFictiveLoadingTask : FictiveTask;
00017         private var mCompletionPreconditionsTask : PreconditionsTask;
00018         
00019         public function FictiveSectionsTransition(aCompletionPrecondition : EventDescriptor) 
00020         {
00021                 mFictiveLoadingTask = new FictiveTask();
00022                 
00023                 mPreOpenProgressMonitor = new ProgressMonitor();
00024                 mPreOpenProgressMonitor.addTask(mFictiveLoadingTask);
00025                 mPreOpenProgressMonitor.start();
00026                 
00027                 if(aCompletionPrecondition)
00028                 {
00029                         mCompletionPreconditionsTask = new PreconditionsTask();
00030                         mCompletionPreconditionsTask.add(aCompletionPrecondition);
00031                         
00032                         mCompletionPreconditionsTask.addEventListener("completed", 
00033                                 Delegate.create(this, onCompletionPreconditionsTaskCompleted));
00034                 }
00035         }
00036 
00037         public function start() : Void
00038         {
00039                 mIsRunning = true;
00040                 dispatchEvent({type: "start", target: this});
00041                 
00042                 DoLaterUtil.doLater(this, doMiddlePointTasks, null, 1);
00043         }
00044         
00045         private function doMiddlePointTasks() : Void
00046         {
00047                 mFictiveLoadingTask.start();
00048                 dispatchEvent({type: "sectionsSwapped", target: this});
00049                 
00050                 if(mCompletionPreconditionsTask)
00051                 {
00052                         mCompletionPreconditionsTask.start();
00053                 }
00054                 else
00055                 {
00056                         DoLaterUtil.doLater(this, complete, null, 1);
00057                 }
00058         }
00059         
00060         public function canInterrupt() : Boolean
00061         {
00062                 return false;
00063         }
00064         
00065         private function complete()
00066         {       
00067                 mIsRunning = false;
00068                 dispatchEvent({type: "completed", target: this});
00069                 dispatchEvent({type: "disposed", target: this});
00070         }
00071         
00072         private function onCompletionPreconditionsTaskCompleted(aEvent : Object) : Void 
00073         {
00074                 complete();     
00075         }
00076 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2