class UserSessionService implements TransUnitEditEventHandler,
        ExitWorkspaceEventHandler, EnterWorkspaceEventHandler {

    @Override
    public void onExitWorkspace(ExitWorkspaceEvent event) {
        EditorClientId editorClientId = event.getEditorClientId();
        UserPanelSessionItem item = getUserPanel(editorClientId);
        removeUser(editorClientId);

        workspaceUsersPresenter.removeUser(item.getPanel(), event.getPerson()
                .getId().toString());
        interactionService.personExit(event.getPerson(), item.getSelectedId());

        if (Objects.equal(editorClientId,
                interactionService.getCurrentEditorClientId())) {
            // TODO if this works then localize the message
            eventBus.fireEvent(new NotificationEvent(
                    NotificationEvent.Severity.Error,
                    "Session has timed out. Please refresh your browser."));
        }
    }

    @Inject public  UserSessionService(EventBus eventBus, DistinctColor distinctColor,
            WorkspaceUsersPresenter workspaceUsersPresenter,
            TranslatorInteractionService interactionService);

}