package views { import commons.Manager; import commons.ScreenManager; import commons.TextManager; import events.RegisterEvent; import flash.events.MouseEvent; import flash.text.TextFormatAlign; import flashx.textLayout.container.ScrollPolicy; import flashx.textLayout.formats.VerticalAlign; import models.vo.User; import mx.controls.Spacer; import mx.graphics.SolidColor; import org.osmf.layout.HorizontalAlign; import spark.components.Button; import spark.components.Group; import spark.components.Image; import spark.components.Label; import spark.components.Scroller; import spark.components.TextInput; import spark.components.VGroup; import spark.events.TextOperationEvent; import spark.primitives.Rect; public class RegisterView extends Group { private const SCALE:Number = ScreenManager.scale; private const LABEL_FONT_SIZE:Number = 30 * SCALE; private var usernameInput:TextInput; private var passwordInput:TextInput; private var firstnameInput:TextInput; private var middlenameInput:TextInput; private var lastnameInput:TextInput; private var messageLabel:Label; private var submitButton:Button; public function RegisterView() { this.percentWidth = 100; this.percentHeight = 100; var rect:Rect = new Rect(); rect.percentWidth = 100; rect.percentHeight = 100; rect.fill = new SolidColor(0x0090c2); addElement(rect); var main:VGroup = new VGroup(); main.paddingTop = 20 * SCALE; main.paddingBottom = 70 * SCALE; main.percentWidth = 100; main.percentHeight = 100; main.horizontalAlign = HorizontalAlign.CENTER; var scroller:Scroller = new Scroller(); scroller.percentWidth = 100; scroller.percentHeight = 100; scroller.viewport = main; scroller.setStyle("horizontalScrollPolicy",ScrollPolicy.OFF); addElement(scroller); var content:VGroup = new VGroup(); content.percentHeight = 100; content.horizontalAlign = HorizontalAlign.CENTER; main.addElement(content); var logoContainer:VGroup = new VGroup(); logoContainer.horizontalAlign = HorizontalAlign.CENTER; content.addElement(logoContainer); var logo:Image = new Image(); logo.source = LOGO; logo.scaleX = logo.scaleY = SCALE; logoContainer.addElement(logo); var gap:Spacer = new Spacer(); gap.height = 20 * SCALE; content.addElement(gap); var inputContainer:VGroup = new VGroup(); inputContainer.percentWidth = 100; content.addElement(inputContainer); var accountInputContainer:VGroup = new VGroup(); accountInputContainer.percentWidth = 100; inputContainer.addElement(accountInputContainer); const INPUT_WIDTH:Number = 600 * SCALE; const SPACER_HEIGHT:Number = 10 * SCALE; var usernameLabel:Label = new Label(); usernameLabel.setStyle("fontSize", LABEL_FONT_SIZE); usernameLabel.setStyle("color", 0x000000); usernameLabel.setStyle("fontFamily", "Arial"); usernameLabel.text = "Username"; inputContainer.addElement(usernameLabel); usernameInput = new TextInput(); usernameInput.setStyle("fontSize", LABEL_FONT_SIZE); usernameInput.width = INPUT_WIDTH; usernameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(usernameInput); var usernameSpacer:Spacer = new Spacer(); usernameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(usernameSpacer); var passwordLabel:Label = new Label(); passwordLabel.setStyle("fontSize", LABEL_FONT_SIZE); passwordLabel.setStyle("color", 0x000000); passwordLabel.setStyle("fontFamily", "Arial"); passwordLabel.text = "Password"; inputContainer.addElement(passwordLabel); passwordInput = new TextInput(); passwordInput.setStyle("fontSize", LABEL_FONT_SIZE); passwordInput.width = INPUT_WIDTH; passwordInput.displayAsPassword = true; passwordInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(passwordInput); var passwordSpacer:Spacer = new Spacer(); passwordSpacer.height = SPACER_HEIGHT; inputContainer.addElement(passwordSpacer); var firstnameLabel:Label = new Label(); firstnameLabel.setStyle("fontSize", LABEL_FONT_SIZE); firstnameLabel.setStyle("color", 0x000000); firstnameLabel.setStyle("fontFamily", "Arial"); firstnameLabel.text = "Firstname"; inputContainer.addElement(firstnameLabel); firstnameInput = new TextInput(); firstnameInput.setStyle("fontSize", LABEL_FONT_SIZE); firstnameInput.width = INPUT_WIDTH; firstnameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(firstnameInput); var firstnameSpacer:Spacer = new Spacer(); firstnameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(firstnameSpacer); var middlenameLabel:Label = new Label(); middlenameLabel.setStyle("fontSize", LABEL_FONT_SIZE); middlenameLabel.setStyle("color", 0x000000); middlenameLabel.setStyle("fontFamily", "Arial"); middlenameLabel.text = "Middlename"; inputContainer.addElement(middlenameLabel); middlenameInput = new TextInput(); middlenameInput.setStyle("fontSize", LABEL_FONT_SIZE); middlenameInput.width = INPUT_WIDTH; middlenameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(middlenameInput); var middlenameSpacer:Spacer = new Spacer(); middlenameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(middlenameSpacer); var lastnameLabel:Label = new Label(); lastnameLabel.setStyle("fontSize", LABEL_FONT_SIZE); lastnameLabel.setStyle("color", 0x000000); lastnameLabel.setStyle("fontFamily", "Arial"); lastnameLabel.text = "Lastname"; inputContainer.addElement(lastnameLabel); lastnameInput = new TextInput(); lastnameInput.setStyle("fontSize", LABEL_FONT_SIZE); lastnameInput.width = INPUT_WIDTH; lastnameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(lastnameInput); var messageContainer:VGroup = new VGroup(); messageContainer.percentHeight = 100; messageContainer.width = INPUT_WIDTH; messageContainer.horizontalAlign = HorizontalAlign.CENTER; messageContainer.verticalAlign = VerticalAlign.MIDDLE; content.addElement(messageContainer); messageLabel = new Label(); messageLabel.percentWidth = 90; messageLabel.setStyle("fontSize", 28 * SCALE); messageLabel.setStyle("color", 0xFF0000); messageLabel.setStyle("textAlign", TextFormatAlign.CENTER); messageLabel.setStyle("fontFamily", "Arial"); messageContainer.addElement(messageLabel); var buttonsContainer:VGroup = new VGroup(); buttonsContainer.percentWidth = 80; content.addElement(buttonsContainer); submitButton = new Button(); submitButton.setStyle("fontSize", LABEL_FONT_SIZE); submitButton.label = "Submit"; submitButton.enabled = false; submitButton.percentWidth = 100; submitButton.height = 86 * SCALE; submitButton.addEventListener(MouseEvent.CLICK, onRegister); buttonsContainer.addElement(submitButton); var buttonsSpacer:Spacer = new Spacer(); buttonsSpacer.height = 20 * SCALE; buttonsContainer.addElement(buttonsSpacer); var backButton:Button = new Button(); backButton.setStyle("fontSize", LABEL_FONT_SIZE); backButton.label = "Back to Login"; backButton.percentWidth = 100; backButton.height = 86 * SCALE; backButton.addEventListener(MouseEvent.CLICK, onBack); buttonsContainer.addElement(backButton); } } }
public function set message(value:String):void { messageLabel.text = value; } private function onDataChange(event:TextOperationEvent):void { if (!Manager.isTextEmpty(usernameInput.text) && !Manager.isTextEmpty(passwordInput.text) && !Manager.isTextEmpty(firstnameInput.text) && !Manager.isTextEmpty(lastnameInput.text)) { submitButton.enabled = true; } else { submitButton.enabled = false; } } private function onRegister(event:MouseEvent):void { var user:User = new User(); user.username = usernameInput.text; user.password = passwordInput.text; user.firstname = firstnameInput.text; user.middlename = middlenameInput.text; user.lastname = lastnameInput.text; dispatchEvent(new RegisterEvent(RegisterEvent.PROCESS_REGISTRATION,user)); user = null; } private function onBack(event:MouseEvent):void { dispatchEvent(new RegisterEvent(RegisterEvent.BACK_TO_LOGIN)); }
package events { import flash.events.Event; import models.vo.User; public class RegisterEvent extends Event { public static const PROCESS_REGISTRATION:String = 'processRegistration'; public static const BACK_TO_LOGIN:String = 'backToLogin'; public static const SUCCESS:String = 'success'; public static const FAILED:String = 'failedRegistration'; private var _user:User; private var _message:String; public function RegisterEvent(type:String, userObj:User=null, message:String=null) { super(type); _user = userObj; _message = message; } public function get user():User { return _user; } public function get message():String { return _message; } override public function clone():Event { return new RegisterEvent(type, _user, _message); } } }
package views { import commons.Manager; import commons.ScreenManager; import events.UserEvent; import flash.events.MouseEvent; import flash.text.TextFormatAlign; import flash.text.engine.FontWeight; import flashx.textLayout.container.ScrollPolicy; import flashx.textLayout.formats.VerticalAlign; import models.vo.User; import mx.controls.Spacer; import org.osmf.layout.HorizontalAlign; import spark.components.Button; import spark.components.HGroup; import spark.components.Label; import spark.components.Scroller; import spark.components.TextInput; import spark.components.VGroup; import spark.components.View; import spark.events.TextOperationEvent; public class SettingsView extends View { [Embed(source="images/home.png")] private var HOME:Class; [Embed(source="images/floppy.png")] private var SAVE:Class; protected var mainContent:VGroup; protected const SCALE:Number = ScreenManager.scale; private const LABEL_FONT_SIZE:Number = 32 * SCALE; private var titleLabel:Label; private var mainMenuButton:Button; private var addClass:Button; private var usernameInput:TextInput; private var passwordInput:TextInput; private var firstnameInput:TextInput; private var middlenameInput:TextInput; private var lastnameInput:TextInput; private var messageLabel:Label; private var submitButton:Button; private var _user:User; public function SettingsView() { mainMenuButton = new Button(); mainMenuButton.width = headerHeight; mainMenuButton.height = headerHeight; mainMenuButton.label = "Main"; mainMenuButton.setStyle("fontSize", 32 * SCALE); mainMenuButton.setStyle("icon", HOME); mainMenuButton.addEventListener(MouseEvent.CLICK,onMainMenu); navigationContent.push(mainMenuButton); titleLabel = new Label(); titleLabel.percentWidth = 100; titleLabel.setStyle("fontSize", 32 * SCALE); titleLabel.setStyle("color", 0xFFFFFF); titleLabel.setStyle("textAlign", TextFormatAlign.CENTER); titleLabel.setStyle("fontFamily", "Arial"); titleLabel.setStyle("fontWeight", FontWeight.BOLD); titleLabel.text = "SETTINGS"; var myHGrp:HGroup = new HGroup(); myHGrp.verticalAlign = VerticalAlign.MIDDLE; myHGrp.horizontalAlign = HorizontalAlign.RIGHT; myHGrp.percentWidth = 100; myHGrp.height = headerHeight; myHGrp.maxHeight = headerHeight; myHGrp.gap = 20 * SCALE; myHGrp.addElement(titleLabel); titleContent.push(myHGrp); submitButton = new Button(); submitButton.setStyle("fontSize", LABEL_FONT_SIZE); submitButton.setStyle("icon", SAVE); submitButton.label = "Update"; submitButton.width = headerHeight; submitButton.height = headerHeight; submitButton.addEventListener(MouseEvent.CLICK, onUpdate); actionContent.push(submitButton); mainContent = new VGroup(); mainContent.paddingTop = 50 * SCALE; mainContent.percentWidth = 100; mainContent.percentHeight = 100; mainContent.horizontalAlign = HorizontalAlign.CENTER; mainContent.gap = 0; var scroller:Scroller = new Scroller(); scroller.percentWidth = 100; scroller.percentHeight = 100; scroller.viewport = mainContent; scroller.setStyle("horizontalScrollPolicy",ScrollPolicy.OFF); addElement(scroller); var inputContainer:VGroup = new VGroup(); inputContainer.percentWidth = 100; inputContainer.horizontalAlign = HorizontalAlign.CENTER; mainContent.addElement(inputContainer); const INPUT_WIDTH:Number = 600 * SCALE; const SPACER_HEIGHT:Number = 10 * SCALE; var usernameLabel:Label = new Label(); usernameLabel.width = INPUT_WIDTH; usernameLabel.setStyle("fontSize", LABEL_FONT_SIZE); usernameLabel.setStyle("color", 0x000000); usernameLabel.setStyle("fontFamily", "Arial"); usernameLabel.text = "Username"; inputContainer.addElement(usernameLabel); usernameInput = new TextInput(); usernameInput.setStyle("fontSize", LABEL_FONT_SIZE); usernameInput.width = INPUT_WIDTH; usernameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(usernameInput); var usernameSpacer:Spacer = new Spacer(); usernameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(usernameSpacer); var passwordLabel:Label = new Label(); passwordLabel.width = INPUT_WIDTH; passwordLabel.setStyle("fontSize", LABEL_FONT_SIZE); passwordLabel.setStyle("color", 0x000000); passwordLabel.setStyle("fontFamily", "Arial"); passwordLabel.text = "Password"; inputContainer.addElement(passwordLabel); passwordInput = new TextInput(); passwordInput.setStyle("fontSize", LABEL_FONT_SIZE); passwordInput.width = INPUT_WIDTH; passwordInput.displayAsPassword = true; passwordInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(passwordInput); var passwordSpacer:Spacer = new Spacer(); passwordSpacer.height = SPACER_HEIGHT; inputContainer.addElement(passwordSpacer); var firstnameLabel:Label = new Label(); firstnameLabel.width = INPUT_WIDTH; firstnameLabel.setStyle("fontSize", LABEL_FONT_SIZE); firstnameLabel.setStyle("color", 0x000000); firstnameLabel.setStyle("fontFamily", "Arial"); firstnameLabel.text = "Firstname"; inputContainer.addElement(firstnameLabel); firstnameInput = new TextInput(); firstnameInput.setStyle("fontSize", LABEL_FONT_SIZE); firstnameInput.width = INPUT_WIDTH; firstnameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(firstnameInput); var firstnameSpacer:Spacer = new Spacer(); firstnameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(firstnameSpacer); var middlenameLabel:Label = new Label(); middlenameLabel.width = INPUT_WIDTH; middlenameLabel.setStyle("fontSize", LABEL_FONT_SIZE); middlenameLabel.setStyle("color", 0x000000); middlenameLabel.setStyle("fontFamily", "Arial"); middlenameLabel.text = "Middlename"; inputContainer.addElement(middlenameLabel); middlenameInput = new TextInput(); middlenameInput.setStyle("fontSize", LABEL_FONT_SIZE); middlenameInput.width = INPUT_WIDTH; middlenameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(middlenameInput); var middlenameSpacer:Spacer = new Spacer(); middlenameSpacer.height = SPACER_HEIGHT; inputContainer.addElement(middlenameSpacer); var lastnameLabel:Label = new Label(); lastnameLabel.width = INPUT_WIDTH; lastnameLabel.setStyle("fontSize", LABEL_FONT_SIZE); lastnameLabel.setStyle("color", 0x000000); lastnameLabel.setStyle("fontFamily", "Arial"); lastnameLabel.text = "Lastname"; inputContainer.addElement(lastnameLabel); lastnameInput = new TextInput(); lastnameInput.setStyle("fontSize", LABEL_FONT_SIZE); lastnameInput.width = INPUT_WIDTH; lastnameInput.addEventListener(TextOperationEvent.CHANGE, onDataChange); inputContainer.addElement(lastnameInput); var messageContainer:VGroup = new VGroup(); messageContainer.paddingTop = 25 * SCALE; messageContainer.paddingBottom = 25 * SCALE; messageContainer.percentHeight = 100; messageContainer.width = INPUT_WIDTH; messageContainer.horizontalAlign = HorizontalAlign.CENTER; messageContainer.verticalAlign = VerticalAlign.MIDDLE; mainContent.addElement(messageContainer); messageLabel = new Label(); messageLabel.percentWidth = 90; messageLabel.setStyle("fontSize", 28 * SCALE); messageLabel.setStyle("color", 0xFFFFFF); messageLabel.setStyle("textAlign", TextFormatAlign.CENTER); messageLabel.setStyle("fontFamily", "Arial"); messageContainer.addElement(messageLabel); } } }
public static function get headerHeight():Number { return 120 * ScreenManager.scale; } private function onMainMenu(event:MouseEvent):void { navigator.popToFirstView(); } public function set user(value:User):void { _user = value; usernameInput.text = _user.username; passwordInput.text = _user.password; firstnameInput.text = _user.firstname; middlenameInput.text = _user.middlename; lastnameInput.text = _user.lastname; } public function set message(value:String):void { messageLabel.text = value; } private function onDataChange(event:TextOperationEvent):void { if (!Manager.isTextEmpty(usernameInput.text) && !Manager.isTextEmpty(passwordInput.text) && !Manager.isTextEmpty(firstnameInput.text) && !Manager.isTextEmpty(lastnameInput.text)) { submitButton.enabled = true; } else { submitButton.enabled = false; } } private function onUpdate(event:MouseEvent):void { var user:User = new User(); user.id = _user.id; user.username = usernameInput.text; user.password = passwordInput.text; user.firstname = firstnameInput.text; user.middlename = middlenameInput.text; user.lastname = lastnameInput.text; dispatchEvent(new UserEvent(UserEvent.PROCESS_UPDATE,user)); user = null; }
public function set message(value:String):void { if(value === "Registration Successful! You can now login") { messageLabel.setStyle("color", 0xFFFFFF); } else { messageLabel.setStyle("color", 0xFF0000); } messageLabel.text = value; } private function checkUsernameCache():void { var loginSO:SharedObject = SharedObject.getLocal(Constants.LOGIN_SO); if (loginSO.data.hasOwnProperty("username")) { if (!Manager.isTextEmpty(loginSO.data.username)) { usernameInput.text = loginSO.data.username; return; } } usernameInput.text = defaultUsernameText; } private function onDataChange(event:TextOperationEvent):void { if (!Manager.isTextEmpty(usernameInput.text, defaultUsernameText) && !Manager.isTextEmpty(passwordInput.text)) { loginButton.enabled = true; } else { loginButton.enabled = false; } } private function onUsernameFocus(event:FocusEvent):void { switch (event.type) { case FocusEvent.FOCUS_IN: if (usernameInput.text == defaultUsernameText) { usernameInput.text = ""; } break; case FocusEvent.FOCUS_OUT: if (Manager.isTextEmpty(usernameInput.text)) { usernameInput.text = defaultUsernameText; } break; } } private function onLogin(event:MouseEvent):void { if (messageLabel.text != "") { message = ""; } dispatchEvent(new LoginEvent(LoginEvent.LOGIN, usernameInput.text, passwordInput.text)); } private function onRegisterAccount(event:MouseEvent):void { dispatchEvent(new LoginEvent(LoginEvent.REGISTER_ACCOUNT)); } public function cleanUp():void { removeAllElements(); logo.bitmapData.dispose(); logo = null; usernameInput = null; passwordInput = null; messageLabel = null; loginButton = null; defaultUsernameText = null; }