Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Reenable chat feature in workspace presenter
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Jun 4, 2012
1 parent 24f8d6b commit 0766155
Show file tree
Hide file tree
Showing 13 changed files with 228 additions and 58 deletions.
Expand Up @@ -10,12 +10,14 @@ public class PublishWorkspaceChatEvent extends GwtEvent<PublishWorkspaceChatEven
private final String personId;
private final String timestamp;
private final String msg;
private final MESSAGE_TYPE messageType;

public PublishWorkspaceChatEvent(HasWorkspaceChatData data)
{
personId = data.getPersonId();
timestamp = data.getTimestamp();
msg = data.getMsg();
messageType = data.getMessageType();
}

/**
Expand Down Expand Up @@ -66,4 +68,10 @@ public String getMsg()
{
return msg;
}

@Override
public MESSAGE_TYPE getMessageType()
{
return messageType;
}
}
Expand Up @@ -28,6 +28,8 @@
import org.zanata.webtrans.client.events.ExitWorkspaceEvent;
import org.zanata.webtrans.client.events.ExitWorkspaceEventHandler;
import org.zanata.webtrans.client.events.NativeEvent;
import org.zanata.webtrans.client.events.PublishWorkspaceChatEvent;
import org.zanata.webtrans.client.events.PublishWorkspaceChatEventHandler;
import org.zanata.webtrans.client.events.TransMemoryShortcutCopyEvent;
import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent;
import org.zanata.webtrans.client.events.WorkspaceContextUpdateEventHandler;
Expand All @@ -38,7 +40,12 @@
import org.zanata.webtrans.shared.model.WorkspaceContext;
import org.zanata.webtrans.shared.rpc.GetTranslatorList;
import org.zanata.webtrans.shared.rpc.GetTranslatorListResult;
import org.zanata.webtrans.shared.rpc.HasWorkspaceChatData.MESSAGE_TYPE;

import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Event.NativePreviewEvent;
Expand Down Expand Up @@ -82,6 +89,10 @@ public interface Display extends WidgetDisplay
void setOptionsToggleTooltip(String tooltip);

HasValue<Boolean> getSouthPanelToggle();

boolean isUserPanelOpen();

HasSelectionHandlers<Integer> getSouthTabPanel();
}

private final DispatchAsync dispatcher;
Expand Down Expand Up @@ -166,7 +177,7 @@ public void onExitWorkspace(ExitWorkspaceEvent event)
public void onEnterWorkspace(EnterWorkspaceEvent event)
{
workspaceUsersPresenter.addTranslator(event.getEditorClientId(), event.getPerson(), null);
workspaceUsersPresenter.dispatchChatAction(event.getPerson().getId().toString(), messages.hasJoinedWorkspace());
workspaceUsersPresenter.dispatchChatAction(null, messages.hasJoinedWorkspace(event.getPerson().getId().toString()), MESSAGE_TYPE.SYSTEM_MSG);
display.setParticipantsTitle(messages.nUsersOnline(workspaceUsersPresenter.getTranslatorsSize()));
}
}));
Expand All @@ -177,6 +188,28 @@ public void onEnterWorkspace(EnterWorkspaceEvent event)
// Thus we load the translator list here.
loadTranslatorList();

registerHandler(eventBus.addHandler(PublishWorkspaceChatEvent.getType(), new PublishWorkspaceChatEventHandler()
{
@Override
public void onPublishWorkspaceChat(PublishWorkspaceChatEvent event)
{
if (!display.isUserPanelOpen())
{
display.setParticipantsTitle(messages.nUsersOnline(workspaceUsersPresenter.getTranslatorsSize()) + " *");
}
}
}));

registerHandler(display.getSouthTabPanel().addSelectionHandler(new SelectionHandler<Integer>()
{

@Override
public void onSelection(SelectionEvent<Integer> event)
{
display.setParticipantsTitle(messages.nUsersOnline(workspaceUsersPresenter.getTranslatorsSize()));
}
}));

registerHandler(eventBus.addHandler(WorkspaceContextUpdateEvent.getType(), new WorkspaceContextUpdateEventHandler()
{
@Override
Expand Down
Expand Up @@ -14,14 +14,17 @@
import org.zanata.webtrans.client.ui.HasManageUserPanel;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.auth.Identity;
import org.zanata.webtrans.shared.auth.EditorClientId;
import org.zanata.webtrans.shared.model.Person;
import org.zanata.webtrans.shared.model.PersonSessionDetails;
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.UserPanelSessionItem;
import org.zanata.webtrans.shared.rpc.HasWorkspaceChatData.MESSAGE_TYPE;
import org.zanata.webtrans.shared.rpc.PublishWorkspaceChatAction;
import org.zanata.webtrans.shared.rpc.PublishWorkspaceChatResult;

import com.google.common.base.Strings;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasText;
Expand All @@ -47,7 +50,7 @@ public interface Display extends WidgetDisplay

HasText getInputText();

void appendChat(String user, String timestamp, String msg);
void appendChat(String user, String timestamp, String msg, MESSAGE_TYPE messageType);

void removeUser(HasManageUserPanel userPanel);
}
Expand All @@ -65,26 +68,31 @@ public WorkspaceUsersPresenter(final Display display, final EventBus eventBus, f
@Override
protected void onBind()
{
/**
* <!-- disabled chat room until 1.7 -->
* display.getSendButton().addClickHandler(new ClickHandler() {
*
* @Override public void onClick(ClickEvent event) { if
* (!Strings.isNullOrEmpty(display.getInputText().getText())) {
* dispatchChatAction(identity.getPerson().getId().toString(),
* display.getInputText().getText());
* display.getInputText().setText(""); } } });
**/

display.getSendButton().addClickHandler(new ClickHandler()
{

@Override
public void onClick(ClickEvent event)
{
if (!Strings.isNullOrEmpty(display.getInputText().getText()))
{
dispatchChatAction(identity.getPerson().getId().toString(), display.getInputText().getText(), MESSAGE_TYPE.USER_MSG);
display.getInputText().setText("");
}
}
});

registerHandler(eventBus.addHandler(PublishWorkspaceChatEvent.getType(), new PublishWorkspaceChatEventHandler()
{
@Override
public void onPublishWorkspaceChat(PublishWorkspaceChatEvent event)
{
display.appendChat(event.getPersonId(), event.getTimestamp(), event.getMsg());
display.appendChat(event.getPersonId(), event.getTimestamp(), event.getMsg(), event.getMessageType());
}
}));

display.appendChat(null, null, messages.thisIsAPublicChannel(), MESSAGE_TYPE.SYSTEM_WARNING);
}

@Override
Expand Down Expand Up @@ -112,12 +120,12 @@ public void removeTranslator(EditorClientId editorClientId, Person person)

display.removeUser(item.getPanel());

dispatchChatAction(person.getId().toString(), messages.hasQuitWorkspace());
dispatchChatAction(null, messages.hasQuitWorkspace(person.getId().toString()), MESSAGE_TYPE.SYSTEM_MSG);
}

public void dispatchChatAction(String person, String msg)
public void dispatchChatAction(String person, String msg, MESSAGE_TYPE messageType)
{
dispatcher.execute(new PublishWorkspaceChatAction(person, msg), new AsyncCallback<PublishWorkspaceChatResult>()
dispatcher.execute(new PublishWorkspaceChatAction(person, msg, messageType), new AsyncCallback<PublishWorkspaceChatResult>()
{

@Override
Expand Down
Expand Up @@ -128,11 +128,11 @@ public interface WebTransMessages extends Messages
@DefaultMessage("Project-wide Search and Replace")
String projectWideSearchAndReplace();

@DefaultMessage("has quit workspace")
String hasQuitWorkspace();
@DefaultMessage("{0} has quit workspace")
String hasQuitWorkspace(String user);

@DefaultMessage("has joined workspace")
String hasJoinedWorkspace();
@DefaultMessage("{0} has joined workspace")
String hasJoinedWorkspace(String user);

@DefaultMessage("Searching")
String searching();
Expand Down Expand Up @@ -322,4 +322,7 @@ public interface WebTransMessages extends Messages

@DefaultMessage("Show project-wide search view")
String showProjectWideSearch();

@DefaultMessage("Warning! This is a public channel")
String thisIsAPublicChannel();
}
Expand Up @@ -32,6 +32,7 @@

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.event.logical.shared.HasSelectionHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
Expand Down Expand Up @@ -156,6 +157,12 @@ public void setParticipantsTitle(String title)
southPanelTab.setTabText(southPanelTab.getWidgetIndex(userPanel), title);
}

@Override
public boolean isUserPanelOpen()
{
return southPanelTab.getSelectedIndex() == southPanelTab.getWidgetIndex(userPanel);
}

@Override
public void setSidePanelVisible(boolean visible)
{
Expand Down Expand Up @@ -223,4 +230,10 @@ public HasValue<Boolean> getSouthPanelToggle()
return southPanelToggleButton;
}

@Override
public HasSelectionHandlers<Integer> getSouthTabPanel()
{
return southPanelTab;
}

}
Expand Up @@ -5,14 +5,18 @@
import org.zanata.webtrans.client.ui.HasManageUserPanel;
import org.zanata.webtrans.client.ui.UserPanel;
import org.zanata.webtrans.shared.model.Person;
import org.zanata.webtrans.shared.rpc.HasWorkspaceChatData.MESSAGE_TYPE;

import com.google.common.base.Strings;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.ScrollPanel;
Expand All @@ -31,6 +35,15 @@ interface WorkspaceUsersViewUiBinder extends UiBinder<SplitLayoutPanel, Workspac
{
}

interface Styles extends CssResource
{
String systemMsg();

String userName();

String systemWarn();
}

@UiField
VerticalPanel userListPanel;

Expand All @@ -40,23 +53,25 @@ interface WorkspaceUsersViewUiBinder extends UiBinder<SplitLayoutPanel, Workspac
@UiField
VerticalPanel chatRoom;

// @UiField -- <!-- disabled chat room until 1.7 -->
@UiField
TextBox chatInput;

// @UiField -- <!-- disabled chat room until 1.7 -->
@UiField
PushButton sendButton;

@UiField
ScrollPanel chatRoomScrollPanel;

@UiField
Styles style;

@Inject
public WorkspaceUsersView(final UiMessages uiMessages)
{
mainPanel = new SplitLayoutPanel(3);
initWidget(uiBinder.createAndBindUi(this));

// <!-- disabled chat room until 1.7 -->
// sendButton.setText(uiMessages.sendLabel());
sendButton.setText(uiMessages.sendLabel());
}

@Override
Expand Down Expand Up @@ -98,16 +113,36 @@ public HasText getInputText()
}

@Override
public void appendChat(String user, String timestamp, String msg)
public void appendChat(String user, String timestamp, String msg, MESSAGE_TYPE messageType)
{
if (Strings.isNullOrEmpty(user))
Label timestampLabel = new Label("[" + timestamp + "]");
Label msgLabel = new Label(msg);
if (messageType == MESSAGE_TYPE.SYSTEM_MSG)
{
timestampLabel.setStyleName(style.systemMsg());
msgLabel.setStyleName(style.systemMsg());
}
else if (messageType == MESSAGE_TYPE.SYSTEM_WARNING)
{
timestampLabel.setStyleName(style.systemWarn());
msgLabel.setStyleName(style.systemWarn());
}

HorizontalPanel hp = new HorizontalPanel();

if (!Strings.isNullOrEmpty(timestamp))
{
chatRoom.add(new Label("[" + timestamp + "] " + msg));
hp.add(timestampLabel);
}
else
if (!Strings.isNullOrEmpty(user))
{
chatRoom.add(new Label("[" + timestamp + "] " + user + ": " + msg));
Label userLabel = new Label(user + ":");
userLabel.setStyleName(style.userName());
hp.add(userLabel);
}
hp.add(msgLabel);

chatRoom.add(hp);

chatRoomScrollPanel.scrollToBottom();
}
Expand Down

0 comments on commit 0766155

Please sign in to comment.