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

Commit

Permalink
Merge branch 'EnableChat' into integration/master
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Jun 17, 2012
2 parents ef99c44 + 4f6ff68 commit 42de941
Show file tree
Hide file tree
Showing 14 changed files with 307 additions and 66 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,11 +40,17 @@
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;
import com.google.gwt.user.client.Event.NativePreviewHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasValue;
import com.google.inject.Inject;
Expand Down Expand Up @@ -82,6 +90,14 @@ public interface Display extends WidgetDisplay
void setOptionsToggleTooltip(String tooltip);

HasValue<Boolean> getSouthPanelToggle();

boolean isUserPanelOpen();

HasSelectionHandlers<Integer> getSouthTabPanel();

void setMessageAlert();

void removeMessageAlert();
}

private final DispatchAsync dispatcher;
Expand All @@ -100,6 +116,26 @@ public interface Display extends WidgetDisplay

private boolean southPanelExpanded = true;

private boolean isAlert = false;

private final Timer msgAlertTimer = new Timer()
{
@Override
public void run()
{
if (!isAlert)
{
display.setMessageAlert();
isAlert = true;
}
else
{
display.removeMessageAlert();
isAlert = false;
}
}
};

@Inject
public TranslationPresenter(Display display, EventBus eventBus, CachingDispatchAsync dispatcher, final TargetContentsPresenter targetContentsPresenter, final WorkspaceUsersPresenter workspaceUsersPresenter, final TranslationEditorPresenter translationEditorPresenter, final OptionsPanelPresenter optionsPanelPresenter, final TransMemoryPresenter transMemoryPresenter, final GlossaryPresenter glossaryPresenter, final WebTransMessages messages, final NativeEvent nativeEvent, final WorkspaceContext workspaceContext)
{
Expand All @@ -122,7 +158,6 @@ public void onRevealDisplay()
{
}


private void loadTranslatorList()
{
dispatcher.execute(new GetTranslatorList(), new AsyncCallback<GetTranslatorListResult>()
Expand Down Expand Up @@ -166,7 +201,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 +212,32 @@ 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()) + " *");
msgAlertTimer.scheduleRepeating(800);
msgAlertTimer.run();
}
}
}));

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

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

registerHandler(eventBus.addHandler(WorkspaceContextUpdateEvent.getType(), new WorkspaceContextUpdateEventHandler()
{
@Override
Expand Down Expand Up @@ -237,7 +298,7 @@ public void onPreviewNativeEvent(NativePreviewEvent event)
if (display.asWidget().isVisible() && (event.getNativeEvent().getType().equals("keyup") || event.getNativeEvent().getType().equals("keydown")))
{
checkKey.init(event.getNativeEvent());

if (translationEditorPresenter.getSelectedTransUnit() != null && checkKey.isCopyFromTransMem())
{
int index;
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 @@ -326,6 +326,9 @@ public interface WebTransMessages extends Messages
@DefaultMessage("Show project-wide search view")
String showProjectWideSearch();

@DefaultMessage("Warning! This is a public channel")
String thisIsAPublicChannel();

@DefaultMessage("Only show documents that contain the search text with matching case")
String docListFilterCaseSensitiveDescription();

Expand Down
Expand Up @@ -32,6 +32,8 @@

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.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;
Expand All @@ -49,6 +51,11 @@ interface TranslationViewUiBinder extends UiBinder<LayoutPanel, TranslationView>
{
}

interface Styles extends CssResource
{
String messageAlert();
}

private static TranslationViewUiBinder uiBinder = GWT.create(TranslationViewUiBinder.class);

@UiField(provided = true)
Expand All @@ -69,6 +76,9 @@ interface TranslationViewUiBinder extends UiBinder<LayoutPanel, TranslationView>
@UiField
SplitLayoutPanel mainSplitPanel;

@UiField
Styles style;

LayoutPanel userPanel;

SplitLayoutPanel tmGlossaryPanel;
Expand Down Expand Up @@ -156,6 +166,24 @@ public void setParticipantsTitle(String title)
southPanelTab.setTabText(southPanelTab.getWidgetIndex(userPanel), title);
}

@Override
public void setMessageAlert()
{
southPanelTab.getTabWidget(southPanelTab.getWidgetIndex(userPanel)).addStyleName(style.messageAlert());
}

@Override
public void removeMessageAlert()
{
southPanelTab.getTabWidget(southPanelTab.getWidgetIndex(userPanel)).removeStyleName(style.messageAlert());
}

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

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

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

}
Expand Up @@ -3,13 +3,19 @@
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:f="urn:import:org.zanata.webtrans.client"
xmlns:fui="urn:import:org.zanata.webtrans.client.ui">

<ui:style>
.small-button {
<ui:style type="org.zanata.webtrans.client.view.TranslationView.Styles">
.small-button
{
height:10px;
font-size:10px;
border-radius:5px;
outline:none;
}

.messageAlert
{
color:#FFA500;
}

</ui:style>

Expand Down

0 comments on commit 42de941

Please sign in to comment.