Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package be.devine.osp.view
- {
- import be.devine.osp.components.BasicComponent;
- import be.devine.osp.components.List;
- import be.devine.osp.components.ScrollPane;
- import be.devine.osp.components.TextInput;
- import be.devine.osp.model.AppModel;
- import com.electrotank.electroserver5.ElectroServer;
- import com.electrotank.electroserver5.api.EsObject;
- import com.electrotank.electroserver5.api.MessageType;
- import com.electrotank.electroserver5.api.PluginMessageEvent;
- import com.electrotank.electroserver5.api.PluginRequest;
- import com.electrotank.electroserver5.api.PublicMessageEvent;
- import com.electrotank.electroserver5.api.PublicMessageRequest;
- import com.electrotank.electroserver5.api.RoomVariable;
- import com.electrotank.electroserver5.api.UserUpdateEvent;
- import com.electrotank.electroserver5.user.User;
- import com.electrotank.electroserver5.zone.Room;
- import flash.display.DisplayObject;
- import flash.events.KeyboardEvent;
- import flash.text.AntiAliasType;
- import flash.text.TextField;
- import flash.text.TextFieldAutoSize;
- import flash.text.TextFormat;
- import flash.ui.Keyboard;
- public class ConnectedView extends BasicComponent
- {
- private var scrollPane:ScrollPane;
- private var textInput:TextInput;
- private var userList:List;
- private var es:ElectroServer;
- private var room:Room;
- override protected function createChildren():void
- {
- scrollPane = new ScrollPane();
- addChild(scrollPane);
- textInput = new TextInput();
- textInput.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
- addChild(textInput);
- userList = new List();
- addChild(userList);
- es = AppModel.getInstance().es;
- room = AppModel.getInstance().room;
- es.engine.addEventListener(MessageType.UserUpdateEvent.name, userUpdateHandler);
- es.engine.addEventListener(MessageType.PublicMessageEvent.name, publicMessageHandler);
- updateUserList();
- getMessages();
- }
- // GET MESSAGES FROM DB THROUGH JAVA PLUGIN
- private function getMessages():void
- {
- trace("ConnectedView: getMessages");
- es.engine.addEventListener(MessageType.PluginMessageEvent.name, plugingHandler);
- var request:PluginRequest = new PluginRequest();
- request.zoneId = AppModel.getInstance().room.zoneId;
- request.roomId = AppModel.getInstance().room.id;
- request.pluginName = "MessageLoggingPlugin";
- request.parameters = new EsObject();
- request.parameters.setString("action", "getMessage");
- es.engine.send(request);
- }
- private function plugingHandler(response:PluginMessageEvent):void
- {
- /// de zever
- trace("ConnectedView: response: " + response);
- var messagesArray:Array = response.parameters.getEsObjectArray("messages");
- messagesArray = messagesArray.reverse();
- for each(var messageObject:EsObject in messagesArray)
- {
- addText("<" + messageObject.getString("userName") + ">" + messageObject.getString("message"));
- }
- }
- // END GET MESSAGES FROM DB THROUGH JAVA PLUGIN
- // SEND MESSAGES TO DB THROUGH JAVA PLUGIN
- private function keyDownHandler(event:KeyboardEvent):void
- {
- switch(event.keyCode)
- {
- case Keyboard.ENTER:
- if(textInput.text.length > 0)
- {
- var request:PublicMessageRequest = new PublicMessageRequest();
- request.roomId = room.id;
- request.zoneId = room.zoneId;
- request.message = textInput.text;
- es.engine.send(request);
- }
- textInput.text = "";
- break;
- }
- }
- // END SEND MESSAGES TO DB THROUGH JAVA PLUGIN
- // UPDATE USERLIST
- private function userUpdateHandler(event:UserUpdateEvent):void
- {
- updateUserList();
- }
- private function updateUserList():void
- {
- var userListProvider:Array = [];
- for each(var user:User in AppModel.getInstance().room.users)
- {
- userListProvider.push({label: user.userName, data: user});
- }
- userList.dataProvider = userListProvider;
- }
- // END UPDATE USERLIST
- // DISPLAY CHAT MESSAGES
- private function publicMessageHandler(event:PublicMessageEvent):void
- {
- addText("<" + event.userName + "> " + event.message);
- }
- private function addText(text:String):void
- {
- var textField:TextField = new TextField();
- textField.defaultTextFormat = new TextFormat("Helvetica", 12, 0x000000);
- textField.embedFonts = true;
- textField.antiAliasType = AntiAliasType.ADVANCED;
- textField.multiline = textField.wordWrap = true;
- textField.autoSize = TextFieldAutoSize.LEFT;
- textField.text = text;
- scrollPane.content.addChild(textField);
- layoutScrollpaneChildren(scrollPane.componentWidth);
- scrollPane.layout();
- }
- // END DISPLAY CHAT MESSAGES
- // LAYOUT
- private function layoutScrollpaneChildren(targetWidth:Number):void
- {
- var l:uint = scrollPane.content.numChildren;
- var yPos:uint;
- for(var i:uint = 0; i < l; i++)
- {
- var child:DisplayObject = scrollPane.content.getChildAt(i);
- child.y = yPos;
- if(child is BasicComponent)
- {
- (child as BasicComponent).componentWidth = targetWidth;
- }
- else if(child is TextField)
- {
- (child as TextField).width = targetWidth;
- }
- yPos += child.height;
- }
- }
- override public function layout():void
- {
- userList.setSize(200, _componentHeight - 50);
- userList.x = _componentWidth - userList.componentWidth - 10;
- userList.y = 10;
- scrollPane.x = 10;
- scrollPane.y = 10;
- layoutScrollpaneChildren(userList.x - 10);
- scrollPane.setSize(userList.x - 10, _componentHeight - 20);
- textInput.x = 10;
- textInput.y = _componentHeight - textInput.componentHeight - 10;
- textInput.setSize(_componentWidth - 20, textInput.componentHeight);
- }
- // END LAYOUT
- }
- }
Add Comment
Please, Sign In to add comment