Index: lams_central/src/flash/org/lamsfoundation/lams/learner/Application.as =================================================================== diff -u --- lams_central/src/flash/org/lamsfoundation/lams/learner/Application.as (revision 0) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/Application.as (revision 28b715a01947af8f7ef21044fab203d3c9a7bd04) @@ -0,0 +1,72 @@ +import org.lamsfoundation.lams.common.comms.* //communications +import org.lamsfoundation.lams.common.* ] +import org.lamsfoundation.lams.learner.ls.*; +import org.lamsfoundation.lams.learner.ls.LessonModel; +import mx.managers.* +import mx.utils.* +/** +* Application - LAMS Learner Application +* @author Mitchell Seaton +*/ +class org.lamsfoundation.lams.learner.Application { + + // public constants + + // private constants + private var _comms:Communication; + + private static var LESSON_X:Number = 5; + private static var LESSON_Y:Number = 5; + + + // UI Elements + + //Application instance is stored as a static in the application class + private static var _instance:Application = null; + private var _container_mc:MovieClip; //Main container + + + /** + * Application - Constructor + */ + private function Application(){ + + + } + + /** + * Retrieves an instance of the Application singleton + */ + public static function getInstance():Application{ + if(Application._instance == null){ + Application._instance = new Application(); + } + return Application._instance; + } + + /** + * Main entry point to the application + */ + public function main(container_mc:MovieClip){ + + _container_mc = container_mc; + _UILoaded = false; + + //Comms object - do this before any objects are created that require it for server communication + _comms = new Communication(); + + } + + public function getUserID():Number { + // return mmm - test user + return 4; + } + + /** + * returns the the Comms instance + */ + public function getComms():Communication{ + return _comms; + } + +} \ No newline at end of file Index: lams_central/src/flash/org/lamsfoundation/lams/learner/lb/Library.as =================================================================== diff -u --- lams_central/src/flash/org/lamsfoundation/lams/learner/lb/Library.as (revision 0) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/lb/Library.as (revision 28b715a01947af8f7ef21044fab203d3c9a7bd04) @@ -0,0 +1,113 @@ +import org.lamsfoundation.lams.learner.lb.* +import org.lamsfoundation.lams.common.util* +import mx.managers.*; +/** +* Library - LAMS Application +* @author Mitchell Seaton +*/ +class Library { + // Model + private var libraryModel:LibraryModel; + // View + private var libraryView:LibraryView; + private var libraryView_mc:MovieClip; + + private var _className:String = "Library"; + + private var dispatchEvent:Function; + public var addEventListener:Function; + public var removeEventListener:Function; + + /* + * Library Constructor + * + * @param target_mc Target clip for attaching view + */ + function Library(target_mc:MovieClip,x:Number,y:Number,lessonID:Number){ + mx.events.EventDispatcher.initialize(this); + + //Create the model + libraryModel = new LibraryModel(libraryID); + + //Create the view + libraryView_mc = target_mc.createChildAtDepth("libraryView",DepthManager.kTop); + + libraryView = LibraryView(libraryView_mc); + libraryView.init(libraryModel,undefined); + + libraryView_mc.addEventListener('load',Proxy.create(this,viewLoaded)); + + //Register view with model to receive update events + libraryModel.addObserver(libraryView); + + //Set the position by setting the model which will call update on the view + libraryModel.setPosition(x,y); + + } + + private function viewLoaded(evt:Object){ + Debugger.log('viewLoaded called',Debugger.GEN,'viewLoaded','Library'); + + if(evt.type=='load') { + dispatchEvent({type:'load',target:this}); + }else { + //Raise error for unrecognized event + } + } + + public function getActiveLessons():Void { + Debugger.log('Running',Debugger.GEN,'getActiveLessons','Library'); + + var callback:Function = Proxy.create(this, getLessonList); + // do request + Application.getInstance().getComms().getRequest('learning/learner.do?method=getActiveLessons', callback, false); + + + } + + private function getActiveLessons(Data:Object):Void { + trace('received active lesson data back...'); + // get data and create Lesson obj's + + // go through list of DTO's and add to hash map + } + + /** + * Used by application to set the size + * @param width The desired width + * @param height the desired height + */ + public function setSize(width:Number, height:Number):Void{ + libraryModel.setSize(width, height); + } + + public function setPosition(x:Number,y:Number){ + //Set the position within limits + //TODO DI 24/05/05 write validation on limits + libraryModel.setPosition(x,y); + } + + + //Dimension accessor methods + public function get width():Number{ + return libraryModel.width; + } + + public function get height():Number{ + return libraryModel.height; + } + + public function get x():Number{ + return libraryModel.x; + } + + public function get y():Number{ + return libraryModel.y; + } + + function get className():String { + return 'Library'; + } + +} + \ No newline at end of file Index: lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryController.as =================================================================== diff -u --- lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryController.as (revision 0) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryController.as (revision 28b715a01947af8f7ef21044fab203d3c9a7bd04) @@ -0,0 +1,38 @@ +import org.lamsfoundation.lams.common.mvc.* +import org.lamsfoundation.lams.common.util.* +import org.lamsfoundation.lams.learner.* +import org.lamsfoundation.lams.learner.lb.*; + +/** +* Controller for the sequence library +*/ +class LibraryController extends AbstractController { + private var _libraryModel:LibraryModel; + + /** + * Constructor + * + * @param cm The model to modify. + */ + public function LibraryController (cm:Observable) { + super (cm); + _libraryModel = LibraryModel(model); + } + + // control methods + + /** + *Called by Lesson when one in clicked + * @param lesson - the lesson that was clicked + */ + public function selectLesson(lesson:Lesson):Void{ + _libraryModel = LibraryModel(model); + _libraryModel.setSelectedLesson(lesson); + } + + public function getActiveLessons():Void { + _libraryModel = LibraryModel(model); + _libraryModel.getLibrary().getActiveLessons(); + } + +} \ No newline at end of file Index: lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryModel.as =================================================================== diff -u --- lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryModel.as (revision 0) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/lb/LibraryModel.as (revision 28b715a01947af8f7ef21044fab203d3c9a7bd04) @@ -0,0 +1,229 @@ +import org.lamsfoundation.lams.learner.lb.*; +import org.lamsfoundation.lams.common.util.*; +import org.lamsfoundation.lams.common.util.Observable; + + +/* +* Model for the Library +*/ +class LibraryModel extends Observable { + private var _className:String = "LibraryModel"; + + private var __width:Number; + private var __height:Number; + private var __x:Number; + private var __y:Number; + private var _isDirty:Boolean; + private var infoObj:Object; + + private var _library:Library; + + /** + * View state data + */ + private var _currentlySelectedLesson:Lesson; + private var _lastSelectedLesson:Lesson; + + /** + * Sequence (Lesson) Library container + * + */ + private var _learningSequences:Hashtable; + + + /** + * Constructor. + */ + public function LibraryModel (library:Library){ + _library = library; + _learningSequences = new Hashtable(); + } + + public function setLearningSequences(lsc:Array):Boolean { + + //clear the old lot + _learningSequences.clear(); + + for(var i=0; i