[virtualcommons-svn] SF.net SVN: virtualcommons:[170] mentalmodels/trunk/flex/src
Status: Beta
Brought to you by:
alllee
From: <kj...@us...> - 2009-07-05 19:50:49
|
Revision: 170 http://virtualcommons.svn.sourceforge.net/virtualcommons/?rev=170&view=rev Author: kjonas Date: 2009-07-05 19:50:39 +0000 (Sun, 05 Jul 2009) Log Message: ----------- obsolete and testing files deleted. folders restructured to contain "questions" folders in /flex/src/actionscript/ and /flex/src/custom/ ( formerly flex/src/customComponents/ ) /flex/src/customComponents/questions/ contains folders for question types that have auxiliary files associated with them. the effect of this restructuring appears to have had no negative effect on the performance of the program. Modified Paths: -------------- mentalmodels/trunk/flex/src/FisheryExperimentKalin.mxml mentalmodels/trunk/flex/src/_InstructionsTest.mxml mentalmodels/trunk/flex/src/actionscript/PageDisplay.as Added Paths: ----------- mentalmodels/trunk/flex/src/actionscript/questions/ mentalmodels/trunk/flex/src/actionscript/questions/Categorical.as mentalmodels/trunk/flex/src/actionscript/questions/DayByDayDecisions.as mentalmodels/trunk/flex/src/actionscript/questions/ForecastingFish.as mentalmodels/trunk/flex/src/actionscript/questions/ForecastingPeople.as mentalmodels/trunk/flex/src/actionscript/questions/PsychometricQuestion.as mentalmodels/trunk/flex/src/actionscript/questions/Question.as mentalmodels/trunk/flex/src/actionscript/questions/StrategyDesign.as Removed Paths: ------------- mentalmodels/trunk/flex/src/QuestionTest.mxml mentalmodels/trunk/flex/src/TableTest.mxml mentalmodels/trunk/flex/src/TestApp.mxml mentalmodels/trunk/flex/src/TestForecast.mxml mentalmodels/trunk/flex/src/actionscript/Categorical.as mentalmodels/trunk/flex/src/actionscript/CategoricalQuestion.as mentalmodels/trunk/flex/src/actionscript/DataGridHandler.as mentalmodels/trunk/flex/src/actionscript/DayByDayDecisionsQuestion.as mentalmodels/trunk/flex/src/actionscript/FishUtil.as mentalmodels/trunk/flex/src/actionscript/Forecasting.as mentalmodels/trunk/flex/src/actionscript/ForecastingFishQuestion.as mentalmodels/trunk/flex/src/actionscript/ForecastingPeopleQuestion.as mentalmodels/trunk/flex/src/actionscript/ForecastingQuestion.as mentalmodels/trunk/flex/src/actionscript/Psychometric.as mentalmodels/trunk/flex/src/actionscript/PsychometricQuestion.as mentalmodels/trunk/flex/src/actionscript/Question.as mentalmodels/trunk/flex/src/actionscript/StrategyDesignQuestion.as mentalmodels/trunk/flex/src/customComponents/ Modified: mentalmodels/trunk/flex/src/FisheryExperimentKalin.mxml =================================================================== --- mentalmodels/trunk/flex/src/FisheryExperimentKalin.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/FisheryExperimentKalin.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:net="flash.net.*" xmlns:comp="customComponents.*" +<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:net="flash.net.*" xmlns:comp="custom.*" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #B0B0FF]" width="100%" height="100%" clipContent="false" layout="absolute" currentState="socioDemographic" initialize="init()"> @@ -17,10 +17,17 @@ <mx:State name="instructions"> <mx:AddChild relativeTo="{content}"> - <comp:InstructionPage id="instructions" initialize="instructions.init(makeBlock())"/> + <!--<comp:InstructionPage id="instructions" initialize="instructions.init(makeBlock())"/>--> + <comp:InstructionPage id="instructions" initialize="instructions.initModule(currModule)"/> </mx:AddChild> </mx:State> + <mx:State name="wait"> + <mx:AddChild relativeTo="{content}"> + <mx:Label id="lblWaiting" text="Waiting for next Module from server..." fontSize="16"/> + </mx:AddChild> + </mx:State> + <mx:State name="none"> <mx:AddChild relativeTo="{content}"> <mx:Label id="end" text="Thank you for playing!" fontSize="30"/> @@ -44,7 +51,8 @@ <mx:Script> <![CDATA[ import actionscript.*; - import customComponents.*; + import actionscript.questions.*; + import custom.*; import mx.controls.Label; import mx.controls.Alert; import mx.collections.ArrayCollection; @@ -58,6 +66,11 @@ import mx.messaging.messages.AsyncMessage; + // + // Important Variables + // + public var currModule:Module = null; + private var shared:SharedObject; private var flushMessage:String; [Bindable] @@ -98,65 +111,16 @@ public function init():void { - /*var sharedObjTest:Boolean = false; - if(sharedObjTest) - { - var got:Boolean = getLocal(); - if(got) - { - getData().saved1 = "Hello, World!"; - getData().thisIsATest = 283; - - var testLabel:Label = new Label(); - testLabel.text = "This is a test"; - testLabel.x = getData().thisIsATest; - testLabel.y = getData().thisIsATest; - - testLabel.text += ", " +flushMessage+"x"+shared.toString()+"x"; - getData().testLabel = testLabel; - - if(getData().exists) testLabel.text += "SharedObject existed before initialization"; - else getData().exists = true; - - this.addChild(getData().testLabel); - - } - }*/ - // var msg:AsyncMessage = new AsyncMessage(); - //var client:FlexClient = FlexClient.getInstance(); - //creating new msg with "New"to get current state. - //msg.body = "New"; - - //producer.send(msg); - //Alert.show("message send is " + msg.body); - - - //consumer.subscribe(); - } - public function getData():Object + + private function getModule():Module { - return shared.data; + // server request here + + currModule = null; + return currModule; // set to null for now (clear old) } - public function getLocal():Boolean - { - try{ - shared = SharedObject.getLocal("thisIsForWork"); - }catch(err:Error){ - return false; - } - return true; - } - public function flush():Boolean - { - try{ - flushMessage = shared.flush(10000); - }catch(err:Error){ - return false; - } - return true; - } public function back():Boolean { @@ -207,8 +171,21 @@ { obj.visible = false; expiredContent.addChild(obj); - currentState = "instructions"; + // + // TEMPORARY CODE + // comments indicate changes to be made for legitimate server communication + // + currModule = new Module(); //delete + currModule.blocks = new ArrayCollection(); //delete + currModule.blocks.addItem(makeBlock()); //delete + currModule.blocks.addItem(makeBlock()); //delete + currentState = "instructions"; //change to state "wait", which will call getModule() + // + // END TEMPORARY CODE + // + + var info:SocioDemographicPage = SocioDemographicPage(obj); /* Alert.show(info.getGender()); Alert.show(info.getMajor()); @@ -231,14 +208,10 @@ { obj.visible = false; expiredContent.addChild(obj); - currentState = "none"; + currentState = "wait"; //consumer.subscribe(); returnValue = true; } - else - { - Alert.show("Cannot advance.\nTry looking at every page."); - } } catch(err:Error){} } @@ -270,30 +243,35 @@ block1.questionGroups = new ArrayCollection(); // create questions - var ddq1:DayByDayDecisionsQuestion = new DayByDayDecisionsQuestion(); - ddq1.question = "categoricalQuestion"; + var ddq1:Question = new Question(); + ddq1.question = "dayByDayDecisionsQuestion"; + ddq1.type = "dayByDayDecisions"; - var cat1:CategoricalQuestion = new CategoricalQuestion(); + var cat1:Categorical = new Categorical(); cat1.question = "categoricalQuestion"; + cat1.type = "categorical"; cat1.topics = new ArrayCollection(); cat1.specifics = new ArrayCollection(); - var for1:ForecastingPeopleQuestion = new ForecastingPeopleQuestion(); - var for2:ForecastingFishQuestion = new ForecastingFishQuestion(); + var for1:ForecastingPeople = new ForecastingPeople(); + var for2:ForecastingFish = new ForecastingFish(); var psy1:PsychometricQuestion = new PsychometricQuestion(); - psy1.question = "psychQuestion"; + psy1.question = "psychometricQuestion"; + psy1.type = "psychometric"; psy1.numberOfIntervals = 10; psy1.choices = new ArrayCollection(); psy1.choices.addItem("Highly Agree"); psy1.choices.addItem("Highly Neutral"); psy1.choices.addItem("Highly Disagree"); - var str1:StrategyDesignQuestion = new StrategyDesignQuestion(); - str1.question = "stratDesQuestion"; + var str1:Question = new Question(); + str1.question = "strategyDesignQuestion"; + str1.type = "strategyDesign"; var txt1:Question = new Question(); txt1.question = "textQuestion"; + txt1.type = "text"; // insert questions into groups qg0.questions.addItem(ddq1); Deleted: mentalmodels/trunk/flex/src/QuestionTest.mxml =================================================================== --- mentalmodels/trunk/flex/src/QuestionTest.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/QuestionTest.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:comp="customComponents.*"> - - <mx:ArrayCollection id="topicList"> - <mx:String>- Select -</mx:String> - <mx:String>Your Earnings</mx:String> - <mx:String>Fish Population</mx:String> - <mx:String>Other Players</mx:String> - </mx:ArrayCollection> - - <mx:ArrayCollection id="specificList"> - <mx:ArrayCollection> - </mx:ArrayCollection> - <mx:ArrayCollection> - <mx:String>- Select -</mx:String> - <mx:String>Earn as much as possible</mx:String> - <mx:String>Earn more than the others</mx:String> - <mx:String>Earn about the same as the others</mx:String> - <mx:String>Earn less then the others</mx:String> - <mx:String>Earn a fair amount but much less then would be possible</mx:String> - <mx:String>Earn nothing</mx:String> - </mx:ArrayCollection> - <mx:ArrayCollection> - <mx:String>- Select -</mx:String> - <mx:String>Let the fish population grow as much as possible</mx:String> - <mx:String>Keep the fish population at a high stable level</mx:String> - <mx:String>Keep the fish population at a medium stable level</mx:String> - <mx:String>Keep the fish population at a low stable level</mx:String> - <mx:String>Not to completely destroy the fish population</mx:String> - <mx:String>To destroy the fish population</mx:String> - </mx:ArrayCollection> - <mx:ArrayCollection> - <mx:String>- Select -</mx:String> - <mx:String>Act similarly to the others</mx:String> - <mx:String>Act differently than the others</mx:String> - <mx:String>Allow the others to have good earnings</mx:String> - <mx:String>Avoid that the others get good earnings</mx:String> - <mx:String>Act according to rules I expect the others to know</mx:String> - <mx:String>Act against rules I expect the others to know</mx:String> - </mx:ArrayCollection> - </mx:ArrayCollection> - - <comp:TextQuestionC id="question1"/> - <comp:CategoricalQuestionC id="question2" topics="{topicList}" specifics="{specificList}"/> - <comp:ForecastingQuestionC id="question3"/> - -</mx:Application> Deleted: mentalmodels/trunk/flex/src/TableTest.mxml =================================================================== --- mentalmodels/trunk/flex/src/TableTest.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/TableTest.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="customComponents.*" layout="absolute"> - - <mx:VBox> - <mx:HBox id="cast"> - <!--<comp:Forecast id="legacy" numColumns="10"/>--> - <comp:Forecast1 id="forecastPeople" numColumns="15" minValue="0" maxValue="30" initialize="init()"/> - </mx:HBox> - <mx:Label initialize="init()"/> - <mx:Button id="next" label="Next" click="testNext()"/> - </mx:VBox> - - <mx:Script> - <![CDATA[ - import mx.messaging.channels.StreamingAMFChannel; - import customComponents.*; - import mx.collections.ArrayCollection; - - public function init():void - { - for(var x:Number=0;x<4;x++)for(var y:Number=0;y<15;y++)forecastPeople.setItem(x,y,7.5); - } - - public function testNext(evt:Event=null):void - { - if(!forecastPeople.isFinished()) return; - var f2:Forecast2 = new Forecast2(); - f2.id = "forecastFull_AS"; - f2.numColumns = 6; - f2.oldForecast1 = forecastPeople; - cast.addChild(f2); - } - - ]]> - </mx:Script> - -</mx:Application> Deleted: mentalmodels/trunk/flex/src/TestApp.mxml =================================================================== --- mentalmodels/trunk/flex/src/TestApp.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/TestApp.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:comp="customComponents.*" - width="700" height="500"> - - <comp:LongHScale id="slider1" label="blah"/> - <mx:Label id="slideinfo1" text="{slider1.slider.value}"/> - - <comp:ShortHScale id="slider2"/> - <mx:Label id="slideinfo2" text="{slider2.slider.value}"/> - - <mx:Label/> - <mx:Label/> - <mx:Label/> - - <mx:ArrayCollection id="slider3Labels"> - <mx:String>label1</mx:String> - <mx:String>label2</mx:String> - <mx:String>label3</mx:String> - </mx:ArrayCollection> - - <mx:ArrayCollection id="slider4Labels"> - <mx:String>label1</mx:String> - <mx:String>label2</mx:String> - </mx:ArrayCollection> - - <comp:PsychometricQuestionC id="slider3" labels="{slider3Labels}"/> - <mx:Label id="slideinfo3" text="{slider3.slider1.getVal}"/> - - <comp:PsychometricQuestionC id="slider4" labels="{slider4Labels}"/> - <mx:Label id="slideinfo4" text="{slider4.slider1.getVal}"/> - -</mx:Application> Deleted: mentalmodels/trunk/flex/src/TestForecast.mxml =================================================================== --- mentalmodels/trunk/flex/src/TestForecast.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/TestForecast.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:qComp="customComponents.questions.components.*" xmlns:quest="customComponents.questions.*" - initialize="init()"> - - <mx:VBox id="content" minWidth="160"> - <quest:ForecastingPeopleQuestionC id="people"/> - <mx:Button label="Save" click="save()"/> - <mx:Button label="Load" click="load()"/> - <quest:ForecastingFishQuestionC id="fish" initialize="false"/> - </mx:VBox> - - <mx:Script> - <![CDATA[ - import mx.collections.ArrayCollection; - import mx.controls.Alert; - - public var peopleSaved:ArrayCollection = null; - public var fishSaved:ArrayCollection = null; - - public function init():void - { - people.initialize(); - people.init(); - } - - public function save():void - { - try - { - peopleSaved = people.save(); - fishSaved = fish.save(); - } - catch(error:Error) - { - Alert.show(error.message + "\n" + error.getStackTrace()); - } - } - - public function load():void - { - try - { - people.load(peopleSaved); - fish.load(fishSaved,peopleSaved); - } - catch(error:Error) - { - Alert.show(error.message + "\n" + error.getStackTrace()); - } - } - - ]]> - </mx:Script> - -</mx:Application> Modified: mentalmodels/trunk/flex/src/_InstructionsTest.mxml =================================================================== --- mentalmodels/trunk/flex/src/_InstructionsTest.mxml 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/_InstructionsTest.mxml 2009-07-05 19:50:39 UTC (rev 170) @@ -1,158 +1,19 @@ <?xml version="1.0" encoding="utf-8"?> -<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="customComponents.*" xmlns:as="actionscript.*" - layout="vertical" xmlns:compQ="customComponents.questions.components.*" xmlns:questions="customComponents.questions.*" +<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:comp="custom.*" xmlns:as="actionscript.*" + layout="vertical" backgroundGradientColors="[#FFFFFF, #B0B0FF]"> - - <questions:DayByDayDecisionsQuestionC/> - - <!--<mx:HBox> - <compQ:OneDecision id="test1" lbsFished="12" initialize="initQ()"/> - <compQ:OneDecision id="test2" lbsFished="12" active="false"/> - <compQ:OneDecision id="test3" lbsFished="12" active="false"/> - <compQ:TotalDisplay id="testTotal" lbsFished="12" initialize="testTotal.redraw()"/> - </mx:HBox>--> - - <!--<mx:VBox id="dayByDayContent" initialize="daybydayinit()"> - - <mx:HBox id="buttons"> - <mx:Label id="lblChosen" text="location chosen: {deciding}"/> - <mx:Button id="btnHarbor" label="Harbor" click="{deciding = 0; clicked(null);}"/> - <mx:Button id="btnAdvance" label="Advance" click="advance()" fillColors="[#B0B0FF,#FFFFFF]"/> - </mx:HBox> - - <mx:HBox id="labels" verticalAlign="middle"> - <mx:Text textAlign="center" fontWeight="bold" minWidth="50" text="Day"/> - <mx:Text textAlign="center" fontWeight="bold" minWidth="125" text="Harbor"/> - <mx:Text textAlign="center" fontWeight="bold" minWidth="60" htmlText="Cumulative<br>Total"/> - </mx:HBox> - - <compQ:OneDay id="testDay" numBays="3"> - <compQ:decisions> - <mx:ArrayCollection id="decisions"> - <compQ:OneDecision active="false"/> - <compQ:OneDecision lbsFished="{Math.round(Math.random()*50)/10.0}"/> - <compQ:OneDecision active="false"/> - <compQ:OneDecision active="false"/> - </mx:ArrayCollection> - </compQ:decisions> - </compQ:OneDay> - - </mx:VBox>--> - + <mx:Script> <![CDATA[ - import customComponents.questions.components.OneDay; - import mx.controls.Alert; - -// <mx:Text textAlign="center" fontWeight="bold" minWidth="125" text="Bay1"/> -// <mx:Text textAlign="center" fontWeight="bold" minWidth="125" text="Bay2"/> -// <mx:Text textAlign="center" fontWeight="bold" minWidth="125" text="Bay3"/> - -// public var numBays:int = 3; -// [Bindable] public var deciding:int = 0; -// public var cumTotal:Number = 0; -// -// public function daybydayinit():void -// { -// for(var i:int = 0; i < numBays; i++) -// { -// var btnTemp:Button = new Button(); -// btnTemp.label = "Bay" + (i+1); -// btnTemp.id = "btn" + btnTemp.label; -// btnTemp.addEventListener(MouseEvent.CLICK,clicked); -// buttons.addChildAt(btnTemp,i+2); -// -// var txtTemp:Text = new Text(); -// txtTemp.setStyle("textAlign", "center"); -// txtTemp.setStyle("fontWeight","bold"); -// txtTemp.minWidth = 125; -// txtTemp.text = "Bay" + (i+1); -// labels.addChildAt(txtTemp,i+2); -// } -// } -// -// public function clicked(event:MouseEvent):void -// { -// try -// { -// deciding = 0; -// if(event != null) -// { -// var obj:Button = event.target as Button; -// deciding = int(obj.label.substring(3)); -// } -// } -// catch(err:Error) -// { -// // silent failure -// } -// } -// -// public function advance():void -// { -// var last:Object = dayByDayContent.getChildAt(dayByDayContent.numChildren - 1); -// if(last is OneDay) -// { -// cumTotal = (last as OneDay).presentTotal; -// } -// -// var newDay:OneDay = new OneDay(); -// newDay.numBays = numBays; -// newDay.previousTotal = cumTotal; -// newDay.initialize(); -// dayByDayContent.addChild(newDay.load(deciding)); -// -// deciding = 0; -// } - - ]]> - </mx:Script> - - - <!--<mx:DataGrid id="myGrid" - dataProvider="{initDG}" - variableRowHeight="true"> - <mx:columns> - <mx:DataGridColumn dataField="Day"/> - <mx:DataGridColumn dataField="Harbor" - itemRenderer="customComponents.questions.components.OneDecision"/> - <mx:DataGridColumn dataField="Bay1" - itemRenderer="customComponents.questions.components.OneDecision"/> - <mx:DataGridColumn dataField="Bay2" - itemRenderer="customComponents.questions.components.OneDecision"/> - <mx:DataGridColumn dataField="Bay3" - itemRenderer="customComponents.questions.components.OneDecision"/> - <mx:DataGridColumn dataField="Total" - itemRenderer="customComponents.questions.components.TotalDisplay"/> - </mx:columns> - </mx:DataGrid>--> - - <mx:Script> - <![CDATA[ - import customComponents.questions.CategoricalQuestionC; - import actionscript.StrategyDesignQuestion; - import actionscript.ForecastingFishQuestion; - import actionscript.ForecastingPeopleQuestion; - import actionscript.Question; - import actionscript.CategoricalQuestion; - import actionscript.QuestionGroup; - import actionscript.PsychometricQuestion; + import custom.questions.CategoricalQuestionC; + import actionscript.* + import actionscript.questions.*; import actionscript.Block; import mx.collections.ArrayCollection; public var block1:Block = new Block(); - /* [Bindable] - private var initDG:ArrayCollection = new ArrayCollection([ - {Day:1, Harbor:0, Bay1:1, Bay2:2, Bay3:3, Total:6}, - {Day:2, Harbor:0, Bay1:2, Bay2:3, Bay3:4, Total:9}]); */ -// public function initQ():void -// { -// test1.peopleFishing = new ArrayCollection([1,2,3,4,5]); -// test1.redraw(); -// } - // // InstructionPage Testing below here // @@ -176,13 +37,13 @@ block1.questionGroups = new ArrayCollection(); // create questions - var cat1:CategoricalQuestion = new CategoricalQuestion(); + var cat1:Categorical = new Categorical(); cat1.question = "categoricalQuestion"; cat1.topics = new ArrayCollection(); cat1.specifics = new ArrayCollection(); - var for1:ForecastingPeopleQuestion = new ForecastingPeopleQuestion(); - var for2:ForecastingFishQuestion = new ForecastingFishQuestion(); + var for1:ForecastingPeople = new ForecastingPeople(); + var for2:ForecastingFish = new ForecastingFish(); var psy1:PsychometricQuestion = new PsychometricQuestion(); psy1.question = "psychQuestion"; @@ -192,7 +53,7 @@ psy1.choices.addItem("Highly Neutral"); psy1.choices.addItem("Highly Disagree"); - var str1:StrategyDesignQuestion = new StrategyDesignQuestion(); + var str1:StrategyDesign = new StrategyDesign(); str1.question = "stratDesQuestion"; var txt1:Question = new Question(); Deleted: mentalmodels/trunk/flex/src/actionscript/Categorical.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/Categorical.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/Categorical.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.Categorical")] - public class Categorical extends Question - { - public var choices:Object; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/CategoricalQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/CategoricalQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/CategoricalQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,14 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.CategoricalQuestion")] - public class CategoricalQuestion extends Question - { - public var choices:Object; - - public var topics:ArrayCollection; - public var specifics:ArrayCollection; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/DataGridHandler.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/DataGridHandler.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/DataGridHandler.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,270 +0,0 @@ -// ActionScript file -package actionscript -{ - import mx.collections.ArrayCollection; - import mx.controls.Alert; - import mx.controls.DataGrid; - import mx.controls.dataGridClasses.DataGridColumn; - import mx.utils.StringUtil; - - - [Bindable] - public class DataGridHandler - { - public var enabled:Boolean = true; - private var _myDataGrid:DataGrid; - private var _myProvider:ArrayCollection; - - private var _errorMessage:String = ""; -public var debug:String = new String(); - private var finished:Boolean = false; - - private var _numFields:Number; - private var _numColumns:Number; - private var _minValue:Number; - private var _maxValue:Number; - private var _sumOfEachColumn:Number; - - - public function get grid():DataGrid - { return _myDataGrid; } - public function set grid(newValue:DataGrid):void - { _myDataGrid = newValue; } - public function get dataProvider():ArrayCollection - { return _myProvider; } - public function set dataProvider(newValue:ArrayCollection):void - { _myProvider = newValue; } - - public function get errorMessage():String - { return _errorMessage; } - public function set errorMessage(newValue:String):void - { _errorMessage = newValue; } - public function isFinished():Boolean - { - return finished; - } - - public function get numFields():Number - { return _numFields; } - public function set numFields(newValue:Number):void - { _numFields = newValue; } - public function get numColumns():Number - { return _numColumns; } - public function set numColumns(newValue:Number):void - { _numColumns = newValue; } - public function get minValue():Number - { return _minValue; } - public function set minValue(newValue:Number):void - { _minValue = newValue; } - public function get maxValue():Number - { return _maxValue; } - public function set maxValue(newValue:Number):void - { _maxValue = newValue; } - public function get sumOfEachColumn():Number - { return _sumOfEachColumn; } - public function set sumOfEachColumn(newValue:Number):void - { _sumOfEachColumn = newValue; } - - public function DataGridHandler(fields:Number, cols:Number, min:Number=0, max:Number=9999, colSum:Number=-1) - { - try{ - numFields = fields; - numColumns = cols; - minValue = min; - maxValue = max; - sumOfEachColumn = colSum; - - errorMessage = ""; - - createGrid(); - - grid.addEventListener("change", changed); -// dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, changed, false); -// dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, changed, true); - }catch(e:Error){ - Alert.show(e.message); - } - } - - public function getItem(field:Number, col:Number):Object - { - return dataProvider.getItemAt(field)["day"+(col+1)]; - } - public function setItem(field:Number, col:Number, value:Object):void - { - dataProvider.getItemAt(field)["day"+(col+1)] = value; - } - - private function createGrid():void - { - grid = new DataGrid(); - - dataProvider = new ArrayCollection(); - - //_myDataGrid.columns = new Array(); - var tempArray:Array = grid.columns; - var i:Number; - var temp:DataGridColumn; - - for(i=0; i<numColumns; i++) - { - temp = new DataGridColumn("day"+(i+1)); - - temp.headerText = ""+(i+1); - temp.dataField = "day"+(i+1); - temp.editable = enabled; - temp.draggable = false; - temp.sortable = false; - temp.resizable = false; - temp.width = 30; - - tempArray[i] = temp; - } - - grid.columns = tempArray; - - // add day1, day2, etc to each field - for(var j:Number=0; j<numFields; j++) - { - var field:Object = new Object(); - dataProvider.addItem(field); - } - - grid.dataProvider = dataProvider; - grid.height = (23)*(_numFields+1)+2; - grid.editable = enabled; -debug += ""; - } - - public function clone():DataGrid - { - var dgClone:DataGrid = new DataGrid(); - var myProviderClone:ArrayCollection = new ArrayCollection(); - dgClone.dataProvider = myProviderClone; - - var tempArray:Array = dgClone.columns; - var i:Number; - var temp:DataGridColumn; - - for(i=0; i<numColumns; i++) - { - temp = new DataGridColumn("day"+(i+1)); - - temp.headerText = ""+(i+1); - temp.dataField = "day"+(i+1); - temp.editable = true; - temp.draggable = false; - temp.sortable = false; - temp.resizable = false; - temp.width = 30; - - tempArray[i] = temp; - } - - dgClone.columns = tempArray; - - // fill data - for(var j:Number=0; j<_numFields; j++) - { - var field:Object = new Object(); - myProviderClone.addItem(field); - for(var k:Number=0; k<numColumns; k++) - { - myProviderClone.getItemAt(j)["day"+(k+1)] = getItem(j,k); - } - } - - dgClone.height = (23)*(_numFields+1)+2; - - return dgClone; - } - - public function changed(evt:Event=null):void - { - markNoError(); - errorMessage = ""; - - var error:Boolean = false; - var value:Object; - - // check the values of the current column - // and point out any errors (TextBox) - for(var col:Number=0; col < numColumns && !error; col++) - { - var colStr:String = "day"+(col+1); - var colSum:Number = 0; - for(var field:Number=0; field < _numFields && !error; field++) - { - value = getItem(field, col); - if(invalidNum(value)) - { - errorMessage = "Enter a value between "+minValue+" and "+maxValue+"."; - error = true; - markError(field,col); - } - else if(outOfBoundsNum(value)) - { - errorMessage = "Value must be between "+minValue+" and "+maxValue+"."; - error = true; - markError(field,col); - } - else - { - colSum += Number(value); - } - } - - // if no other errors yet, and there is a required sum for columns, - // then check actual sum against expected - if( !error && sumOfEachColumn != -1 && colSum != sumOfEachColumn ) - { - errorMessage = "Sum of all columns must be exactly "+sumOfEachColumn+"."; - error = true; - markError(-1,col); - debug += "{"+colSum+"}"; - } - else - { - debug += "["+colSum+"]"; - } - } - - finished = !error; - } - private function invalidNum(n:Object):Boolean - { - if(n == null) return true; - var pattern:RegExp = /^\d+$/; //the entire string must be consecutive digits - var s:String = StringUtil.trim(String(n)); - return !pattern.test(s) && !(n is Number); - } - private function outOfBoundsNum(n:Object):Boolean - { - return Number(n) < minValue || Number(n) > maxValue; - } - - private function markError(field:Number, col:Number):void - { - if(sumOfEachColumn == -1) return; - DataGridColumn(grid.columns[col]).setStyle("backgroundColor", "#ee82ee"); - grid.selectedIndex = field; - } - private function markNoError():void - { - for(var col:Number=0; col < numColumns; col++) - { - DataGridColumn(grid.columns[col]).setStyle("backgroundColor", "#FFFFFF"); - } - grid.selectedIndex = -1; - } - - public function deactivate():void - { - for(var col:Number=0; col < numColumns; col++) - { - DataGridColumn(grid.columns[col]).editable = false; - } - grid.selectedIndex = -1; - } - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/DayByDayDecisionsQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/DayByDayDecisionsQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/DayByDayDecisionsQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.DayByDayDecisionsQuestion")] - public class DayByDayDecisionsQuestion extends Question - { - - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/FishUtil.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/FishUtil.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/FishUtil.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,18 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - public class FishUtil - { - public function FishUtil() {} - - public static function fix(index:int, list:ArrayCollection):int - { - if( index < 0 ) return 0; - if( index >= list.length ) return list.length - 1; - return index; - } - } - -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/Forecasting.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/Forecasting.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/Forecasting.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.Forecasting")] - public class Forecasting extends Question - { - public var dayNo:int; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/ForecastingFishQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/ForecastingFishQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/ForecastingFishQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.ForecastingFishQuestion")] - public class ForecastingFishQuestion extends Question - { - public var numDays:int; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/ForecastingPeopleQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/ForecastingPeopleQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/ForecastingPeopleQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.ForecastingPeopleQuestion")] - public class ForecastingPeopleQuestion extends Question - { - public var numDays:int; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/ForecastingQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/ForecastingQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/ForecastingQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.ForecastingQuestion")] - public class ForecastingQuestion extends Question - { - public var dayNo:int; - } -} \ No newline at end of file Modified: mentalmodels/trunk/flex/src/actionscript/PageDisplay.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/PageDisplay.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/PageDisplay.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,14 +1,14 @@ // ActionScript file package actionscript { - import customComponents.questions.CategoricalQuestionC; - import customComponents.questions.DayByDayDecisionsQuestionC; - import customComponents.questions.ForecastingFishQuestionC; - import customComponents.questions.ForecastingPeopleQuestionC; - import customComponents.questions.PsychometricQuestionC; - import customComponents.questions.StrategyDesignQuestionC; - import customComponents.questions.TextQuestionC; + import custom.questions.dayByDayDecisions.DayByDayDecisionsQuestionC; + import custom.questions.psychometric.PsychometricQuestionC; + import custom.questions.strategyDesign.StrategyDesignQuestionC; + import custom.questions.forecasting.*; + import custom.questions.*; + import actionscript.questions.* + import flash.display.DisplayObject; import mx.collections.ArrayCollection; @@ -71,34 +71,26 @@ txt.htmlText = tempQuestion.question; tempBox.addChild(txt); - if(tempQuestion is StrategyDesignQuestion) + if(tempQuestion is ForecastingPeople) { - var sdq:StrategyDesignQuestionC = new StrategyDesignQuestionC(); - sdq.loadFromQuestion(StrategyDesignQuestion(tempQuestion)); - sdq.id = "q"+question; - - tempBox.addChild(sdq); - } - else if(tempQuestion is ForecastingPeopleQuestion) - { var fpq:ForecastingPeopleQuestionC = new ForecastingPeopleQuestionC(); - fpq.loadFromQuestion(ForecastingPeopleQuestion(tempQuestion)); + fpq.loadFromQuestion(ForecastingPeople(tempQuestion)); fpq.id = "q"+question; tempBox.addChild(fpq); } - else if(tempQuestion is ForecastingFishQuestion) + else if(tempQuestion is ForecastingFish) { var ffq:ForecastingFishQuestionC = new ForecastingFishQuestionC(); - ffq.loadFromQuestion(ForecastingFishQuestion(tempQuestion)); + ffq.loadFromQuestion(ForecastingFish(tempQuestion)); ffq.id = "q"+question; tempBox.addChild(ffq); } - else if(tempQuestion is CategoricalQuestion) + else if(tempQuestion is Categorical) { var cq:CategoricalQuestionC = new CategoricalQuestionC(); - cq.loadFromQuestion(CategoricalQuestion(tempQuestion)); + cq.loadFromQuestion(Categorical(tempQuestion)); cq.id = "q"+question; tempBox.addChild(cq); @@ -111,21 +103,34 @@ tempBox.addChild(pq); } - else if(tempQuestion is DayByDayDecisionsQuestion) - { - var ddq:DayByDayDecisionsQuestionC = new DayByDayDecisionsQuestionC(); - ddq.loadFromQuestion(DayByDayDecisionsQuestion(tempQuestion)); - ddq.id = "q"+question; - - tempBox.addChild(ddq); - } else { - var tq:TextQuestionC = new TextQuestionC(); - tq.loadFromQuestion(Question(tempQuestion)); - tq.id = "q"+question; - - tempBox.addChild(tq); + if(tempQuestion != null && tempQuestion.type != null && + tempQuestion.type.toLowerCase() == "strategydesign") + { + var sdq:StrategyDesignQuestionC = new StrategyDesignQuestionC(); + sdq.loadFromQuestion(Question(tempQuestion)); + sdq.id = "q"+question; + + tempBox.addChild(sdq); + } + else if(tempQuestion != null && tempQuestion.type != null && + tempQuestion.type.toLowerCase() == "daybydaydecisions") + { + var ddq:DayByDayDecisionsQuestionC = new DayByDayDecisionsQuestionC(); + ddq.loadFromQuestion(Question(tempQuestion)); + ddq.id = "q"+question; + + tempBox.addChild(ddq); + } + else + { + var tq:TextQuestionC = new TextQuestionC(); + tq.loadFromQuestion(Question(tempQuestion)); + tq.id = "q"+question; + + tempBox.addChild(tq); + } } } var head:Label = new Label(); @@ -172,14 +177,20 @@ } public function nextPage():Boolean { - currentPageNumber = FishUtil.fix(currentPageNumber + 1, pages); + currentPageNumber = fix(currentPageNumber + 1, 0, pages.length-1); highestPageReached = Math.max(currentPageNumber, highestPageReached) return true; } public function prevPage():Boolean { - currentPageNumber = FishUtil.fix(currentPageNumber - 1, pages); + currentPageNumber = fix(currentPageNumber - 1, 0, pages.length-1); return true; } + private function fix(n:Number,min:Number,max:Number):Number + { + if(n < min) return min; + if(n > max) return max; + return n; + } } } \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/Psychometric.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/Psychometric.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/Psychometric.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,13 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.Psychometric")] - public class Psychometric extends Question - { - public var scale:String; - public var numberOfIntervals:int; - public var choices:ArrayCollection; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/PsychometricQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/PsychometricQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/PsychometricQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,13 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.PsychometricQuestion")] - public class PsychometricQuestion extends Question - { - public var scale:String; - public var numberOfIntervals:int; - public var choices:ArrayCollection; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/Question.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/Question.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/Question.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,16 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.Question")] - public class Question - { - public var id:Number; - public var question:String; - public var singleLocation:Boolean; - public var multiLocation:Boolean; - public var miscLocation:Boolean; - public var sequenceNo:int; - } -} \ No newline at end of file Deleted: mentalmodels/trunk/flex/src/actionscript/StrategyDesignQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/StrategyDesignQuestion.as 2009-07-02 00:13:07 UTC (rev 169) +++ mentalmodels/trunk/flex/src/actionscript/StrategyDesignQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -1,11 +0,0 @@ -package actionscript -{ - import mx.collections.ArrayCollection; - - [Bindable] - [RemoteClass(alias="edu.asu.commons.mme.entity.StrategyDesignQuestion")] - public class StrategyDesignQuestion extends Question - { - public var numDays:int; - } -} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/Categorical.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/Categorical.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/Categorical.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,14 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.CategoricalQuestion")] + public class Categorical extends Question + { + public var choices:Object; + + public var topics:ArrayCollection; + public var specifics:ArrayCollection; + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/DayByDayDecisions.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/DayByDayDecisions.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/DayByDayDecisions.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,11 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.DayByDayDecisionsQuestion")] + public class DayByDayDecisions extends Question + { + + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/ForecastingFish.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/ForecastingFish.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/ForecastingFish.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,11 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.ForecastingFishQuestion")] + public class ForecastingFish extends Question + { + public var numDays:int; + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/ForecastingPeople.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/ForecastingPeople.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/ForecastingPeople.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,11 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.ForecastingPeopleQuestion")] + public class ForecastingPeople extends Question + { + public var numDays:int; + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/PsychometricQuestion.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/PsychometricQuestion.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/PsychometricQuestion.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,13 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.PsychometricQuestion")] + public class PsychometricQuestion extends Question + { + public var scale:String; + public var numberOfIntervals:int; + public var choices:ArrayCollection; + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/Question.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/Question.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/Question.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,17 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.Question")] + public class Question + { + public var id:Number; + public var question:String; + public var type:String; + public var singleLocation:Boolean; + public var multiLocation:Boolean; + public var miscLocation:Boolean; + public var sequenceNo:int; + } +} \ No newline at end of file Added: mentalmodels/trunk/flex/src/actionscript/questions/StrategyDesign.as =================================================================== --- mentalmodels/trunk/flex/src/actionscript/questions/StrategyDesign.as (rev 0) +++ mentalmodels/trunk/flex/src/actionscript/questions/StrategyDesign.as 2009-07-05 19:50:39 UTC (rev 170) @@ -0,0 +1,11 @@ +package actionscript.questions +{ + import mx.collections.ArrayCollection; + + [Bindable] + [RemoteClass(alias="edu.asu.commons.mme.entity.StrategyDesignQuestion")] + public class StrategyDesign extends Question + { + public var numDays:int; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |