Skip to content

Commit

Permalink
Changed the Flex 4 chat view to match new models
Browse files Browse the repository at this point in the history
  • Loading branch information
capilkey committed May 21, 2016
1 parent f10e3d9 commit 75ecbb3
Show file tree
Hide file tree
Showing 8 changed files with 144 additions and 39 deletions.
Expand Up @@ -86,7 +86,7 @@
selectable="false"
id="message"
width="100%"
fontSize="{getStyle('messageFontSize')}" />
styleName="contentStyle" />
</s:HGroup>
</s:VGroup>
</s:HGroup>
Expand Down
Expand Up @@ -5,9 +5,8 @@ package org.bigbluebutton.lib.chat.views {

import mx.utils.StringUtil;

import org.bigbluebutton.lib.chat.models.ChatMessage;
import org.bigbluebutton.lib.chat.models.ChatMessageVO;
import org.bigbluebutton.lib.chat.models.ChatMessages;
import org.bigbluebutton.lib.chat.models.Conversation;
import org.bigbluebutton.lib.chat.models.IChatMessagesSession;
import org.bigbluebutton.lib.chat.services.IChatMessageService;
import org.bigbluebutton.lib.main.models.IUserSession;
Expand Down Expand Up @@ -36,23 +35,16 @@ package org.bigbluebutton.lib.chat.views {
override public function initialize():void {
chatMessageService.sendMessageOnSuccessSignal.add(onSendSuccess);
chatMessageService.sendMessageOnFailureSignal.add(onSendFailure);
chatMessagesSession.newChatMessageSignal.add(scrollUpdate);
userSession.userList.userRemovedSignal.add(userRemoved);
userSession.userList.userAddedSignal.add(userAdded);

view.textInput.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
view.sendButton.addEventListener(MouseEvent.CLICK, sendButtonClickHandler);

// TEMP CODE NEED TO REMOVE SOMEHOW
_publicChat = true;
chatMessagesSession.publicChat
openChat(chatMessagesSession.publicChat);
// END OF TEMP CODE
}

protected function openChat(chatMessages:ChatMessages):void {
chatMessages.resetNewMessages();
view.chatList.dataProvider = chatMessages.messages;
protected function openChat(conv:Conversation):void {
conv.newMessages = 0;//resetNewMessages();
view.chatList.dataProvider = conv.messages;
}

private function onSendSuccess(result:String):void {
Expand All @@ -64,24 +56,12 @@ package org.bigbluebutton.lib.chat.views {
view.textInput.enabled = true;
}

private function scrollUpdate(userId:String = null, publicChat:Boolean = true):void {
if ((_publicChat && publicChat) || (!_publicChat && !publicChat && _user && userId == _user.userID)) {
if (isIndexVisible(view.chatList.dataProvider.length - 2)) {
view.chatList.ensureIndexIsVisible(view.chatList.dataProvider.length - 1);
}
}
}

private function isIndexVisible(itemIndex:int):Boolean {
return view.chatList.dataGroup.getItemIndicesInView().indexOf(itemIndex) > -1;
}

/**
* When user left the conference, add '[Offline]' to the username
* and disable text input
*/
protected function userRemoved(userID:String):void {
if (view != null && _user && _user.userID == userID) {
if (view != null && _user && _user.userId == userID) {
view.textInput.enabled = false;
}
}
Expand All @@ -91,7 +71,7 @@ package org.bigbluebutton.lib.chat.views {
* and enable text input
*/
protected function userAdded(newuser:User):void {
if ((view != null) && (_user != null) && (_user.userID == newuser.userID)) {
if ((view != null) && (_user != null) && (_user.userId == newuser.userId)) {
view.textInput.enabled = true;
}
}
Expand All @@ -103,11 +83,11 @@ package org.bigbluebutton.lib.chat.views {
}

private function sendButtonClickHandler(e:MouseEvent):void {
view.textInput.enabled = false;

var message:String = StringUtil.trim(view.textInput.text);

if (message) {
view.textInput.enabled = false;

var currentDate:Date = new Date();
//TODO get info from the right source
var m:ChatMessageVO = new ChatMessageVO();
Expand All @@ -118,7 +98,7 @@ package org.bigbluebutton.lib.chat.views {
m.fromTimezoneOffset = currentDate.timezoneOffset;
m.fromLang = "en";
m.message = message;
m.toUserID = _publicChat ? "public_chat_userid" : _user.userID;
m.toUserID = _publicChat ? "public_chat_userid" : _user.userId;
m.toUsername = _publicChat ? "public_chat_username" : _user.name;
if (_publicChat) {
m.chatType = "PUBLIC_CHAT";
Expand All @@ -133,7 +113,6 @@ package org.bigbluebutton.lib.chat.views {
override public function destroy():void {
chatMessageService.sendMessageOnSuccessSignal.remove(onSendSuccess);
chatMessageService.sendMessageOnFailureSignal.remove(onSendFailure);
chatMessagesSession.newChatMessageSignal.remove(scrollUpdate);
userSession.userList.userRemovedSignal.remove(userRemoved);
userSession.userList.userAddedSignal.remove(userAdded);

Expand Down
@@ -1,13 +1,14 @@
package org.bigbluebutton.web.chat.views {
import mx.graphics.SolidColor;

import org.bigbluebutton.lib.chat.views.ChatViewBase;
import org.bigbluebutton.web.common.views.IPanelAdjustable;

import spark.components.Group;
import spark.primitives.Rect;
import spark.components.Button;
import spark.components.HGroup;
import spark.components.Label;
import spark.components.SkinnableContainer;
import spark.layouts.VerticalLayout;

public class ChatPanel extends Group implements IPanelAdjustable {
public class ChatPanel extends SkinnableContainer implements IPanelAdjustable {
private var _adjustable:Boolean = false;

public function set adjustable(v:Boolean):void {
Expand All @@ -18,9 +19,41 @@ package org.bigbluebutton.web.chat.views {
return _adjustable;
}

private var _title:Label;

public function get title():Label {
return _title;
}

private var _closeButton:Button;

public function get closeButton():Button {
return _closeButton;
}

public function ChatPanel() {
super();

var l:VerticalLayout = new VerticalLayout();
this.layout = l;
this.minWidth = 50;
this.styleName = "panelStyle";

var g:HGroup = new HGroup();
g.percentWidth = 100;

_title = new Label();
_title.percentWidth = 100;
_title.text = "Public Chat";
_title.styleName = "panelTitleStyle";
g.addElement(title);

_closeButton = new Button();
_closeButton.label = "X";
g.addElement(_closeButton);

addElement(g);

var _chatView:ChatViewBase = new ChatViewBase();
_chatView.percentWidth = 100;
_chatView.percentHeight = 100;
Expand Down
@@ -0,0 +1,53 @@
package org.bigbluebutton.web.chat.views {
import flash.events.MouseEvent;

import org.bigbluebutton.lib.main.models.IUserSession;
import org.bigbluebutton.lib.user.models.User;
import org.bigbluebutton.web.main.models.IUISession;

import robotlegs.bender.bundles.mvcs.Mediator;

public class ChatPanelMediator extends Mediator {

[Inject]
public var view:ChatPanel;

[Inject]
public var uiSession:IUISession;

[Inject]
public var userSession:IUserSession;

override public function initialize():void {
uiSession.chatInfoSignal.add(onChatInfoSignal);

view.closeButton.addEventListener(MouseEvent.CLICK, onCloseButtonClick);
}

private function onChatInfoSignal():void {
if (uiSession.chatInfo != null) {
if (uiSession.chatInfo.publicChat) {
view.title.text = "Public Chat";
} else {
var user:User = userSession.userList.getUserByUserId(uiSession.chatInfo.userId);
if (user != null) {
view.title.text = user.name;
}
}
}
}

private function onCloseButtonClick(e:MouseEvent):void {
uiSession.chatInfo = null;
}

override public function destroy():void {
uiSession.chatInfoSignal.remove(onChatInfoSignal);

view.closeButton.removeEventListener(MouseEvent.CLICK, onCloseButtonClick);

super.destroy();
view = null;
}
}
}
@@ -0,0 +1,40 @@
package org.bigbluebutton.web.chat.views {
import org.bigbluebutton.lib.chat.views.ChatViewMediatorBase;
import org.bigbluebutton.lib.user.models.User;
import org.bigbluebutton.web.main.models.IUISession;

public class ChatViewMediatorWeb extends ChatViewMediatorBase {

[Inject]
public var uiSession:IUISession;

override public function initialize():void {
super.initialize();

uiSession.chatInfoSignal.add(onChatInfoSignal);
}

private function onChatInfoSignal():void {
if (uiSession.chatInfo != null) {
if (uiSession.chatInfo.publicChat) {
_user = null;
_publicChat = true;
openChat(chatMessagesSession.publicConversation);
} else {
var user:User = userSession.userList.getUserByUserId(uiSession.chatInfo.userId);
_publicChat = false;
if (user != null) {
_user = user;
openChat(chatMessagesSession.getPrivateMessages(user.userId, user.name));
}
}
}
}

override public function destroy():void {
uiSession.chatInfoSignal.remove(onChatInfoSignal);

super.destroy();
}
}
}
@@ -1,4 +1,4 @@
package org.bigbluebutton.web.deskshare.views {
package org.bigbluebutton.web.deskshare {
import org.bigbluebutton.lib.deskshare.views.IDeskshareView;
import org.bigbluebutton.web.deskshare.views.DeskshareWindowMediator;
import org.bigbluebutton.web.user.views.UserWindow;
Expand Down Expand Up @@ -39,7 +39,7 @@ package org.bigbluebutton.web.deskshare.views {
* Maps view mediators to views.
*/
private function mediators():void {
mediatorMap.map(IDeskshareView).toMediator(DeskshareWindowMediator);

}

/**
Expand Down
@@ -1,4 +1,4 @@
package org.bigbluebutton.web.presentation.views {
package org.bigbluebutton.web.presentation {
import org.bigbluebutton.lib.presentation.views.PresentationMediatorBase;
import org.bigbluebutton.lib.presentation.views.PresentationViewBase;

Expand Down

0 comments on commit 75ecbb3

Please sign in to comment.