Guest User

Untitled

a guest
Oct 16th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package be.devine.osp.view
  2. {
  3.     import be.devine.osp.components.BasicComponent;
  4.     import be.devine.osp.components.List;
  5.     import be.devine.osp.components.ScrollPane;
  6.     import be.devine.osp.components.TextInput;
  7.     import be.devine.osp.model.AppModel;
  8.    
  9.     import com.electrotank.electroserver5.ElectroServer;
  10.     import com.electrotank.electroserver5.api.EsObject;
  11.     import com.electrotank.electroserver5.api.MessageType;
  12.     import com.electrotank.electroserver5.api.PluginMessageEvent;
  13.     import com.electrotank.electroserver5.api.PluginRequest;
  14.     import com.electrotank.electroserver5.api.PublicMessageEvent;
  15.     import com.electrotank.electroserver5.api.PublicMessageRequest;
  16.     import com.electrotank.electroserver5.api.RoomVariable;
  17.     import com.electrotank.electroserver5.api.UserUpdateEvent;
  18.     import com.electrotank.electroserver5.user.User;
  19.     import com.electrotank.electroserver5.zone.Room;
  20.    
  21.     import flash.display.DisplayObject;
  22.     import flash.events.KeyboardEvent;
  23.     import flash.text.AntiAliasType;
  24.     import flash.text.TextField;
  25.     import flash.text.TextFieldAutoSize;
  26.     import flash.text.TextFormat;
  27.     import flash.ui.Keyboard;
  28.    
  29.     public class ConnectedView extends BasicComponent
  30.     {
  31.        
  32.         private var scrollPane:ScrollPane;
  33.         private var textInput:TextInput;
  34.         private var userList:List;
  35.        
  36.         private var es:ElectroServer;
  37.         private var room:Room;
  38.        
  39.         override protected function createChildren():void
  40.         {
  41.             scrollPane = new ScrollPane();
  42.             addChild(scrollPane);
  43.            
  44.             textInput = new TextInput();
  45.             textInput.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
  46.             addChild(textInput);
  47.            
  48.             userList = new List();
  49.             addChild(userList);
  50.            
  51.             es = AppModel.getInstance().es;
  52.             room = AppModel.getInstance().room;
  53.            
  54.             es.engine.addEventListener(MessageType.UserUpdateEvent.name, userUpdateHandler);
  55.            
  56.             es.engine.addEventListener(MessageType.PublicMessageEvent.name, publicMessageHandler);
  57.            
  58.             updateUserList();
  59.             getMessages();
  60.         }
  61.        
  62.        
  63.     // GET MESSAGES FROM DB THROUGH JAVA PLUGIN
  64.         private function getMessages():void
  65.         {
  66.             trace("ConnectedView: getMessages");
  67.             es.engine.addEventListener(MessageType.PluginMessageEvent.name, plugingHandler);
  68.            
  69.             var request:PluginRequest = new PluginRequest();
  70.             request.zoneId = AppModel.getInstance().room.zoneId;
  71.             request.roomId = AppModel.getInstance().room.id;
  72.             request.pluginName = "MessageLoggingPlugin";
  73.            
  74.             request.parameters = new EsObject();
  75.            
  76.             request.parameters.setString("action", "getMessage");
  77.            
  78.             es.engine.send(request);
  79.         }
  80.        
  81.         private function plugingHandler(response:PluginMessageEvent):void
  82.         {
  83.             /// de zever
  84.             trace("ConnectedView: response: " + response);
  85.            
  86.             var messagesArray:Array = response.parameters.getEsObjectArray("messages");
  87.             messagesArray = messagesArray.reverse();
  88.            
  89.             for each(var messageObject:EsObject in messagesArray)
  90.             {
  91.                 addText("<" + messageObject.getString("userName") + ">" + messageObject.getString("message"));
  92.             }
  93.         }
  94.         // END GET MESSAGES FROM DB THROUGH JAVA PLUGIN
  95.        
  96.        
  97.        
  98. // SEND MESSAGES TO DB THROUGH JAVA PLUGIN
  99.         private function keyDownHandler(event:KeyboardEvent):void
  100.         {
  101.             switch(event.keyCode)
  102.             {
  103.                 case Keyboard.ENTER:
  104.                     if(textInput.text.length > 0)
  105.                     {
  106.                         var request:PublicMessageRequest = new PublicMessageRequest();
  107.                         request.roomId = room.id;
  108.                         request.zoneId = room.zoneId;
  109.                         request.message = textInput.text;
  110.                         es.engine.send(request);
  111.                     }
  112.                     textInput.text = "";
  113.                     break;
  114.             }
  115.         }
  116.         // END SEND MESSAGES TO DB THROUGH JAVA PLUGIN
  117.        
  118.        
  119.        
  120. // UPDATE USERLIST
  121.         private function userUpdateHandler(event:UserUpdateEvent):void
  122.         {
  123.             updateUserList();
  124.         }
  125.        
  126.         private function updateUserList():void
  127.         {
  128.             var userListProvider:Array = [];
  129.             for each(var user:User in AppModel.getInstance().room.users)
  130.             {
  131.                 userListProvider.push({label: user.userName, data: user});
  132.             }
  133.             userList.dataProvider = userListProvider;
  134.         }
  135.         // END UPDATE USERLIST
  136.        
  137.        
  138. // DISPLAY CHAT MESSAGES
  139.         private function publicMessageHandler(event:PublicMessageEvent):void
  140.         {
  141.             addText("<" + event.userName + "> " + event.message);
  142.         }
  143.        
  144.         private function addText(text:String):void
  145.         {
  146.             var textField:TextField = new TextField();
  147.             textField.defaultTextFormat = new TextFormat("Helvetica", 12, 0x000000);
  148.             textField.embedFonts = true;
  149.             textField.antiAliasType = AntiAliasType.ADVANCED;
  150.             textField.multiline = textField.wordWrap = true;
  151.             textField.autoSize = TextFieldAutoSize.LEFT;
  152.             textField.text = text;
  153.             scrollPane.content.addChild(textField);
  154.             layoutScrollpaneChildren(scrollPane.componentWidth);
  155.             scrollPane.layout();
  156.         }
  157.         // END DISPLAY CHAT MESSAGES
  158.        
  159.        
  160. // LAYOUT
  161.         private function layoutScrollpaneChildren(targetWidth:Number):void
  162.         {
  163.             var l:uint = scrollPane.content.numChildren;
  164.             var yPos:uint;
  165.             for(var i:uint = 0; i < l; i++)
  166.             {
  167.                 var child:DisplayObject = scrollPane.content.getChildAt(i);
  168.                 child.y = yPos;
  169.                 if(child is BasicComponent)
  170.                 {
  171.                     (child as BasicComponent).componentWidth = targetWidth;
  172.                 }
  173.                 else if(child is TextField)
  174.                 {
  175.                     (child as TextField).width = targetWidth;
  176.                 }
  177.                 yPos += child.height;
  178.             }
  179.         }
  180.        
  181.         override public function layout():void
  182.         {
  183.             userList.setSize(200, _componentHeight - 50);
  184.             userList.x = _componentWidth - userList.componentWidth - 10;
  185.             userList.y = 10;
  186.            
  187.             scrollPane.x = 10;
  188.             scrollPane.y = 10;
  189.             layoutScrollpaneChildren(userList.x - 10);
  190.             scrollPane.setSize(userList.x - 10, _componentHeight - 20);
  191.            
  192.             textInput.x = 10;
  193.             textInput.y = _componentHeight - textInput.componentHeight - 10;
  194.             textInput.setSize(_componentWidth - 20, textInput.componentHeight);
  195.         }
  196.         // END LAYOUT
  197.     }
  198. }
Add Comment
Please, Sign In to add comment