Viewer: LoginView class
package flashscriptMVC.views
{
import flashscriptMVC.AbstractClass;
import flashscriptMVC.IModel;
import flashscriptMVC.IControlHandler;
import flash.events.*;
import fl.controls.TextInput;
import flash.text.TextFormat;
import fl.controls.Button;
import fl.controls.Label;
import flash.net.SharedObject;
public class LoginView extends AbstractClass
{
private var userLabel:Label;
private var passLabel:Label;
private var userName:TextInput;
private var passWord:TextInput;
private var submit:Button;
private var signinBut:Button;
private var sendDataFile:String;
private var so:SharedObject;
private var model:IModel;
private var controller:IControlHandler;
public function LoginView (aModel:IModel=null,aController:IControlHandler=null):void
{
/*
* The LoginView extends the AbstractClass, which has a number of functions,
* which have to be overridden. The LoginView specifically sets all the
* parameters for a Login module. This class communicates with the Controller
* and the Model class.
*/
super (aModel,aController);
model = aModel;
controller = aController;
//
// Textformat for all components
//
var format:TextFormat = new TextFormat();
format.font = "Arial Black";
format.size = 11;
//
// Adding all components to the stage.
//
userLabel = new Label ;
userLabel.setSize (125,22);
userLabel.setStyle("textFormat",format);
addChild (userLabel);
passLabel = new Label ;
passLabel.setSize (125,22);
passLabel.move (0,50);
passLabel.setStyle("textFormat",format);
addChild (passLabel);
userName = new TextInput ;
userName.setSize (150,22);
userName.move (130,0);
userName.setStyle("textFormat",format);
addChild (userName);
passWord = new TextInput ;
passWord.setSize (150,22);
passWord.move (130,50);
passWord.displayAsPassword = true;
passWord.setStyle("textFormat",format);
addChild (passWord);
submit = new Button ;
submit.move (130,90);
submit.name = "submit";
submit.setStyle("textFormat",format);
submit.addEventListener (MouseEvent.CLICK,submitHandler);
addChild (submit);
signinBut = new Button ;
signinBut.setSize (210,22);
signinBut.move (130,180);
signinBut.name = "signin";
signinBut.setStyle("textFormat",format);
signinBut.addEventListener (MouseEvent.CLICK,submitHandler);
addChild (signinBut);
}
/*
* The update function is the communication of this LoginView with the Model
* class. The Model class sends different responses, which are identified by
* the event types. Depending on the event type the LoginViwer will respond.
*/
override public function update (event:Event=null):void
{
var md:IModel = model as IModel;
var c:IControlHandler = controller as IControlHandler;
if (event.type == "serverResponse")
{
var sResponse:String = md.getXMLData().serverresponse + "?login=" + userName.text;
c.serverResponseHandler (sResponse);
}
if (event.type == "serverError")
{
c.alertChangeHandler (md.getXMLData().errormessage,false,parent);
}
//
// setting focus on the user name textinput
//
md.focusObject (userName);
//
// data received from XML file to add labels
//
userLabel.text = md.getXMLData().label1;
passLabel.text = md.getXMLData().label2;
submit.label = md.getXMLData().submitlabel;
signinBut.label = md.getXMLData().signinlabel;
//
// The php file used to handle the login.
//
sendDataFile = md.getXMLData().phpfile;
//
// We add a SharedObject in case data need to be stored
// on the users machine.
//
so = SharedObject.getLocal(md.getXMLData().shareobj,"/");
if (so.data.myEmail != null)
{
userName.text = so.data.myEmail;
passWord.text = so.data.myPassword;
}
super.update (event);
//
// adding a keyboard event to the submit button.
//
stage.addEventListener (KeyboardEvent.KEY_DOWN,keyHandler);
}
//
// submission using a mouse click
//
override public function submitHandler (event:MouseEvent):void
{
eventhandler (event);
}
//
// submission using a keyboard key
//
override public function keyHandler (event:KeyboardEvent):void
{
if (int(event.keyCode) == 13)
{
eventhandler (event);
}
}
/*
* The eventhandler is shared by the login and signin buttons.
* Here the commands go to the controller including opening an
* Alert window. Further the variable names and values are sent.
*/
private function eventhandler (event:Object):void
{
var myName:String = event.currentTarget.name;
var md:IModel = model as IModel;
var c:IControlHandler = controller as IControlHandler;
if (myName == "signin")
{
var sResponse:String = md.getXMLData().registration;
c.serverResponseHandler (sResponse);
}
else if (myName == "submit" || int(event.keyCode) == 13)
{
if (userName.text == null || userName.text == "")
{
c.alertChangeHandler ("Enter username!",false,submit.parent);
return;
}
if (passWord.text == null || passWord.text == "")
{
c.alertChangeHandler ("Enter password!",false,submit.parent);
return;
}
//
// names for variables from the XML file.
//
var var1:String = md.getXMLData().variable1;
var var2:String = md.getXMLData().variable2;
//
// variable names and data are stored in separate arrays.
//
var varArray:Array = new Array(var1,var2);
var dataArray:Array = new Array(userName.text,passWord.text);
c.submitChangeHandler (dataArray,varArray,sendDataFile);
}
else
{
trace("Error: could not find correct code.");
}
}
}
}