Issue #427 remove login and event subscription code from CollaborationDataManager

Change-Id: I18a2c44a275f5180d828184001fd1c5173ea2f74

Former-commit-id: 28f779e7b9 [formerly 2306edfd4e11b512a68320ae7dc4edbcfa474934]
Former-commit-id: 05389dac56
This commit is contained in:
Nate Jensen 2012-06-08 15:15:03 -05:00
parent b6a93f9d41
commit 8d741bc4a1
17 changed files with 466 additions and 383 deletions

View file

@ -114,6 +114,8 @@ public class CollaborationConnection implements IEventPublisher {
private static final String PROVIDER = "ecf.xmpp.smack"; private static final String PROVIDER = "ecf.xmpp.smack";
private static CollaborationConnection instance;
private Map<String, ISession> sessions; private Map<String, ISession> sessions;
private UserId account; private UserId account;
@ -202,8 +204,8 @@ public class CollaborationConnection implements IEventPublisher {
setupP2PComm(presenceAdapter); setupP2PComm(presenceAdapter);
getPeerToPeerSession(); getPeerToPeerSession();
userPresence = initialPresence;
if (accountManager != null && initialPresence != null) { if (accountManager != null && initialPresence != null) {
userPresence = initialPresence;
accountManager.sendPresence(initialPresence); accountManager.sendPresence(initialPresence);
} }
@ -321,6 +323,7 @@ public class CollaborationConnection implements IEventPublisher {
container.dispose(); container.dispose();
container = null; container = null;
} }
instance = null;
} }
/** /**
@ -670,4 +673,38 @@ public class CollaborationConnection implements IEventPublisher {
} }
return id; return id;
} }
/**
* Returns the currently connected connection or null if it's not connected
*
* @return
*/
public static CollaborationConnection getConnection() {
return instance;
}
/**
* Connects to the collaboration server with the provided credentials.
*
* @param account
* the userid to connect as
* @param password
* the user's password
* @param initialPresence
* the initial presence
* @return
* @throws CollaborationException
* when it cannot connect
*/
public static CollaborationConnection connect(UserId account,
String password, IPresence initialPresence)
throws CollaborationException {
if (instance != null) {
throw new CollaborationException("Already connected");
} else {
instance = new CollaborationConnection(account, password,
initialPresence);
return getConnection();
}
}
} }

View file

@ -37,8 +37,8 @@ import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Text;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog; import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
/** /**
@ -71,9 +71,7 @@ public class ChangePasswordDialog extends CaveSWTDialog {
} }
private Control createDialogArea(Composite parent) { private Control createDialogArea(Composite parent) {
CollaborationDataManager manager = CollaborationDataManager UserId user = CollaborationConnection.getConnection().getUser();
.getInstance();
UserId user = manager.getCollaborationConnection(true).getUser();
Composite body = new Composite(parent, SWT.NONE); Composite body = new Composite(parent, SWT.NONE);
body.setLayout(new GridLayout(2, false)); body.setLayout(new GridLayout(2, false));
// body.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL // body.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL

View file

@ -52,7 +52,6 @@ public class CollaborationGroupAction extends AbstractHandler {
@Override @Override
public Object execute(ExecutionEvent event) throws ExecutionException { public Object execute(ExecutionEvent event) throws ExecutionException {
// this opens the product browser view
try { try {
PlatformUI.getWorkbench().getActiveWorkbenchWindow() PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().showView(CollaborationGroupView.ID); .getActivePage().showView(CollaborationGroupView.ID);

View file

@ -73,6 +73,7 @@ import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.TreeItem;
@ -111,6 +112,7 @@ import com.raytheon.uf.viz.collaboration.ui.data.SessionContainer;
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer; import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
import com.raytheon.uf.viz.collaboration.ui.data.SharedDisplaySessionMgr; import com.raytheon.uf.viz.collaboration.ui.data.SharedDisplaySessionMgr;
import com.raytheon.uf.viz.collaboration.ui.login.ChangeStatusDialog; import com.raytheon.uf.viz.collaboration.ui.login.ChangeStatusDialog;
import com.raytheon.uf.viz.collaboration.ui.login.LoginDialog;
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants; import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
import com.raytheon.uf.viz.collaboration.ui.session.AbstractSessionView; import com.raytheon.uf.viz.collaboration.ui.session.AbstractSessionView;
import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView; import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView;
@ -213,10 +215,27 @@ public class CollaborationGroupView extends CaveFloatingView implements
// add some actions to the menubar // add some actions to the menubar
createMenubar(); createMenubar();
CollaborationConnection connection = CollaborationDataManager CollaborationConnection connection = CollaborationConnection
.getInstance().getCollaborationConnection(true); .getConnection();
if (connection == null) { if (connection == null) {
return; VizApp.runSync(new Runnable() {
@Override
public void run() {
Shell shell = Display.getDefault().getActiveShell();
if (shell == null) {
return;
}
LoginDialog dlg = new LoginDialog(shell);
dlg.open();
dlg.close();
}
});
connection = CollaborationConnection.getConnection();
if (connection == null) {
// user cancelled login
return;
}
} }
// add a part listener so that we can check when things about the view // add a part listener so that we can check when things about the view
// change // change
@ -226,9 +245,6 @@ public class CollaborationGroupView extends CaveFloatingView implements
createUsersTree(parent); createUsersTree(parent);
addDoubleClickListeners(); addDoubleClickListeners();
createContextMenu(); createContextMenu();
if (CollaborationDataManager.getInstance().isConnected() == false) {
usersTreeViewer.getTree().setEnabled(false);
}
if (connection != null) { if (connection != null) {
connection.registerEventHandler(this); connection.registerEventHandler(this);
@ -260,8 +276,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
@Override @Override
public void dispose() { public void dispose() {
super.dispose(); super.dispose();
CollaborationConnection connection = CollaborationDataManager CollaborationConnection connection = CollaborationConnection
.getInstance().getCollaborationConnection(false); .getConnection();
if (connection != null) { if (connection != null) {
connection.unRegisterEventHandler(this); connection.unRegisterEventHandler(this);
} }
@ -330,9 +346,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
@Override @Override
public void runWithEvent(Event event) { public void runWithEvent(Event event) {
CollaborationConnection conn = CollaborationDataManager UserId user = CollaborationConnection.getConnection().getUser();
.getInstance().getCollaborationConnection(true);
UserId user = conn.getUser();
String logDir = SessionMsgArchive.getLogFilePath( String logDir = SessionMsgArchive.getLogFilePath(
user.getHost(), user.getName(), getSessionName()); user.getHost(), user.getName(), getSessionName());
@ -433,9 +447,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
if (node instanceof IRosterEntry) { if (node instanceof IRosterEntry) {
IRosterEntry user = (IRosterEntry) node; IRosterEntry user = (IRosterEntry) node;
if (user.getPresence().getType() == Type.AVAILABLE) { if (user.getPresence().getType() == Type.AVAILABLE) {
UserId loginUserId = CollaborationDataManager UserId loginUserId = CollaborationConnection
.getInstance().getCollaborationConnection(true) .getConnection().getUser();
.getUser();
if (!loginUserId.equals(user)) { if (!loginUserId.equals(user)) {
createP2PChat(IDConverter.convertFrom(user createP2PChat(IDConverter.convertFrom(user
.getUser())); .getUser()));
@ -529,7 +542,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
collapseAllAction = new Action("Collapse All") { collapseAllAction = new Action("Collapse All") {
public void run() { public void run() {
usersTreeViewer.collapseAll(); if (usersTreeViewer != null) {
usersTreeViewer.collapseAll();
}
} }
}; };
collapseAllAction.setImageDescriptor(IconUtil.getImageDescriptor( collapseAllAction.setImageDescriptor(IconUtil.getImageDescriptor(
@ -643,7 +658,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
// mgr.add(pgenAction); // mgr.add(pgenAction);
mgr.add(new Separator()); mgr.add(new Separator());
if (CollaborationDataManager.getInstance().isConnected()) { if (CollaborationConnection.getConnection() != null) {
mgr.add(logoutAction); mgr.add(logoutAction);
} else { } else {
mgr.add(logonAction); mgr.add(logonAction);
@ -671,11 +686,11 @@ public class CollaborationGroupView extends CaveFloatingView implements
protected void populateTree() { protected void populateTree() {
CollaborationDataManager manager = CollaborationDataManager CollaborationDataManager manager = CollaborationDataManager
.getInstance(); .getInstance();
CollaborationConnection sessionManager = manager CollaborationConnection connection = CollaborationConnection
.getCollaborationConnection(true); .getConnection();
topLevel.clear(); topLevel.clear();
// set all the menu actions to false to start with // set all the menu actions to false to start with
if (sessionManager == null) { if (connection == null) {
usersTreeViewer.getTree().setEnabled(false); usersTreeViewer.getTree().setEnabled(false);
addGroupAction.setEnabled(false); addGroupAction.setEnabled(false);
addUserAction.setEnabled(false); addUserAction.setEnabled(false);
@ -699,7 +714,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
// make the first thing to show up in the list, which happens to be the // make the first thing to show up in the list, which happens to be the
// user's name and gives the user options to modify status and other // user's name and gives the user options to modify status and other
// things // things
UserId user = manager.getCollaborationConnection(true).getUser(); UserId user = connection.getUser();
topLevel.addObject(user); topLevel.addObject(user);
activeSessionGroup = new SessionGroupContainer(); activeSessionGroup = new SessionGroupContainer();
@ -893,9 +908,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
.getItem().getText()); .getItem().getText());
} }
CollaborationUtils.addAlias(); CollaborationUtils.addAlias();
CollaborationDataManager.getInstance() CollaborationConnection.getConnection().getEventPublisher()
.getCollaborationConnection(true) .post(entry.getUser());
.getEventPublisher().post(entry.getUser());
} }
} }
}); });
@ -941,9 +955,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
treeEditor.getItem().getText()); treeEditor.getItem().getText());
} }
CollaborationUtils.addAlias(); CollaborationUtils.addAlias();
CollaborationDataManager.getInstance() CollaborationConnection.getConnection().getEventPublisher()
.getCollaborationConnection(true) .post(entry.getUser());
.getEventPublisher().post(entry.getUser());
break; break;
case SWT.Verify: case SWT.Verify:
String newText = modText.getText(); String newText = modText.getText();
@ -991,10 +1004,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
Object result = dialog.getReturnValue(); Object result = dialog.getReturnValue();
if (result != null) { if (result != null) {
char[] password = result.toString().toCharArray(); char[] password = result.toString().toCharArray();
CollaborationConnection sessionManager = CollaborationDataManager
.getInstance().getCollaborationConnection(true);
try { try {
sessionManager.getAccountManager().changePassword(password); CollaborationConnection.getConnection().getAccountManager()
.changePassword(password);
} catch (CollaborationException e) { } catch (CollaborationException e) {
statusHandler.handle(Priority.PROBLEM, statusHandler.handle(Priority.PROBLEM,
"Unable to change password", e); "Unable to change password", e);
@ -1023,10 +1035,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
} }
private void createSession() { private void createSession() {
CollaborationDataManager manager = CollaborationDataManager CollaborationConnection sessionManager = CollaborationConnection
.getInstance(); .getConnection();
CollaborationConnection sessionManager = manager
.getCollaborationConnection(true);
if (sessionManager == null) { if (sessionManager == null) {
System.err.println("Unable to get session manager"); System.err.println("Unable to get session manager");
return; return;
@ -1251,7 +1261,10 @@ public class CollaborationGroupView extends CaveFloatingView implements
statusHandler.handle(Priority.WARN, statusHandler.handle(Priority.WARN,
"Unable to save preferences", e); "Unable to save preferences", e);
} }
CollaborationDataManager.getInstance().closeManager(); CollaborationConnection connection = CollaborationConnection
.getConnection();
ConnectionSubscriber.unsubscribe(connection);
connection.closeManager();
} }
} }
@ -1328,9 +1341,9 @@ public class CollaborationGroupView extends CaveFloatingView implements
+ id.getHost() + " " + rosterEntry.getPresence().getMode() + id.getHost() + " " + rosterEntry.getPresence().getMode()
+ "/" + rosterEntry.getPresence().getType()); + "/" + rosterEntry.getPresence().getType());
((RosterEntry) CollaborationDataManager.getInstance() ((RosterEntry) CollaborationConnection.getConnection()
.getCollaborationConnection(true).getContactsManager() .getContactsManager().getUsersMap().get(id))
.getUsersMap().get(id)).setPresence(rosterEntry.getPresence()); .setPresence(rosterEntry.getPresence());
VizApp.runAsync(new Runnable() { VizApp.runAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -1357,8 +1370,8 @@ public class CollaborationGroupView extends CaveFloatingView implements
@Subscribe @Subscribe
public void handleRosterChangeEvent(IRosterChangeEvent rosterChangeEvent) { public void handleRosterChangeEvent(IRosterChangeEvent rosterChangeEvent) {
final IRosterItem rosterItem = rosterChangeEvent.getItem(); final IRosterItem rosterItem = rosterChangeEvent.getItem();
CollaborationConnection connection = CollaborationDataManager CollaborationConnection connection = CollaborationConnection
.getInstance().getCollaborationConnection(true); .getConnection();
switch (rosterChangeEvent.getType()) { switch (rosterChangeEvent.getType()) {
case MODIFY: case MODIFY:
case ADD: case ADD:
@ -1452,8 +1465,7 @@ public class CollaborationGroupView extends CaveFloatingView implements
* on whether or not the user is connected to the xmpp server. * on whether or not the user is connected to the xmpp server.
*/ */
private void disableOrEnableSessionAction() { private void disableOrEnableSessionAction() {
final boolean isSessionEnabled = CollaborationDataManager.getInstance() boolean isSessionEnabled = (CollaborationConnection.getConnection() != null);
.isConnected();
createSessionAction.setEnabled(isSessionEnabled); createSessionAction.setEnabled(isSessionEnabled);
} }

View file

@ -53,12 +53,12 @@ import com.raytheon.uf.common.localization.exception.LocalizationOpFailedExcepti
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter; import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserIdWrapper; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserIdWrapper;
import com.raytheon.uf.viz.collaboration.ui.data.AlertWord; import com.raytheon.uf.viz.collaboration.ui.data.AlertWord;
import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper; import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.core.icon.IconUtil; import com.raytheon.uf.viz.core.icon.IconUtil;
/** /**
@ -101,9 +101,8 @@ public class CollaborationUtils {
public static Collection<Object> readAliases() { public static Collection<Object> readAliases() {
UserId[] ids = getIds(); UserId[] ids = getIds();
Roster roster = (Roster) CollaborationDataManager.getInstance() Roster roster = (Roster) CollaborationConnection.getConnection()
.getCollaborationConnection(true).getRosterManager() .getRosterManager().getRoster();
.getRoster();
Collection<?> rosterObjects = new ArrayList<Object>(); Collection<?> rosterObjects = new ArrayList<Object>();
rosterObjects.addAll(roster.getItems()); rosterObjects.addAll(roster.getItems());
for (Object ob : rosterObjects) { for (Object ob : rosterObjects) {
@ -172,9 +171,8 @@ public class CollaborationUtils {
LocalizationFile file = pm.getLocalizationFile(context, LocalizationFile file = pm.getLocalizationFile(context,
"collaboration" + File.separator "collaboration" + File.separator
+ "collaborationAliases.xml"); + "collaborationAliases.xml");
IRoster roster = CollaborationDataManager.getInstance() IRoster roster = CollaborationConnection.getConnection()
.getCollaborationConnection(true).getRosterManager() .getRosterManager().getRoster();
.getRoster();
Set<IUser> ids = new HashSet<IUser>(); Set<IUser> ids = new HashSet<IUser>();
// get the entries that are alone // get the entries that are alone

View file

@ -0,0 +1,297 @@
/**
* This software was developed and / or modified by Raytheon Company,
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
*
* U.S. EXPORT CONTROLLED TECHNICAL DATA
* This software product contains export-restricted data whose
* export/transfer/disclosure is restricted by U.S. law. Dissemination
* to non-U.S. persons whether in the United States or abroad requires
* an export license or other authorization.
*
* Contractor Name: Raytheon Company
* Contractor Address: 6825 Pine Street, Suite 340
* Mail Stop B8
* Omaha, NE 68106
* 402.291.0100
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
**/
package com.raytheon.uf.viz.collaboration.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchListener;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import com.google.common.eventbus.Subscribe;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.ISession;
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IHttpdCollaborationConfigurationEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ITextMessageEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueInvitationEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.invite.SharedDisplayVenueInvite;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.TextMessage;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.ui.data.SharedDisplaySessionMgr;
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView;
import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView;
import com.raytheon.uf.viz.collaboration.ui.session.SessionView;
import com.raytheon.uf.viz.core.VizApp;
/**
* TODO Add Description
*
* <pre>
*
* SOFTWARE HISTORY
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jun 8, 2012 njensen Initial creation
*
* </pre>
*
* @author njensen
* @version 1.0
*/
public class ConnectionSubscriber {
private static final transient IUFStatusHandler statusHandler = UFStatus
.getHandler(ConnectionSubscriber.class);
private static ConnectionSubscriber instance;
private IWorkbenchListener wbListener;
private ConnectionSubscriber() {
}
public static void subscribe(CollaborationConnection connection) {
if (instance == null) {
instance = new ConnectionSubscriber();
instance.setup(connection);
}
}
public static void unsubscribe(CollaborationConnection connection) {
if (instance != null) {
instance.dispose(connection);
}
instance = null;
}
private void setup(final CollaborationConnection connection) {
if (connection != null) {
// Register handlers and events for the new sessionManager.
connection.registerEventHandler(this);
try {
ISession p2pSession = connection.getPeerToPeerSession();
p2pSession.registerEventHandler(this);
} catch (CollaborationException e) {
statusHandler.handle(Priority.PROBLEM,
"Error registering peer to peer handler", e);
}
// TODO the wblistener should perhaps be elsewhere
wbListener = new IWorkbenchListener() {
@Override
public boolean preShutdown(IWorkbench workbench, boolean forced) {
return true;
}
@Override
public void postShutdown(IWorkbench workbench) {
dispose(connection);
if (connection != null) {
connection.closeManager();
}
}
};
PlatformUI.getWorkbench().addWorkbenchListener(wbListener);
}
}
private void dispose(CollaborationConnection connection) {
if (connection != null) {
try {
ISession p2pSession = connection.getPeerToPeerSession();
p2pSession.unRegisterEventHandler(this);
} catch (CollaborationException e) {
statusHandler.handle(Priority.PROBLEM,
"Error unregistering peer to peer handler", e);
}
connection.unRegisterEventHandler(this);
}
PlatformUI.getWorkbench().removeWorkbenchListener(wbListener);
}
@Subscribe
public void handleInvitationEvent(IVenueInvitationEvent event) {
final IVenueInvitationEvent invitation = event;
VizApp.runSync(new Runnable() {
@Override
public void run() {
IQualifiedID inviter = invitation.getInviter();
IQualifiedID room = invitation.getRoomId();
Shell shell = new Shell(Display.getCurrent());
MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION
| SWT.OK | SWT.CANCEL);
box.setText("Invitation");
StringBuilder sb = new StringBuilder();
boolean sharedDisplay = invitation.getInvite() instanceof SharedDisplayVenueInvite;
sb.append("You are invited to a ");
if (sharedDisplay) {
sb.append("collaboration session.\n");
} else {
sb.append("chat room.\n");
}
sb.append("Inviter: ").append(inviter.getName()).append("\n");
sb.append("Room: ").append(room.getName()).append("\n");
sb.append("Subject: ").append(invitation.getSubject());
if (invitation.getInvite() != null
&& invitation.getInvite().getMessage() != null) {
sb.append("\n").append("Message: ")
.append(invitation.getInvite().getMessage());
}
box.setMessage(sb.toString());
if (SWT.OK != box.open()) {
return;
}
CollaborationConnection connection = CollaborationConnection
.getConnection();
try {
IVenueSession session = connection
.joinCollaborationVenue(invitation);
String sessionId = session.getSessionId();
CollaborationDataManager.getInstance().addSession(
sessionId, session);
if (sharedDisplay) {
ISharedDisplaySession displaySession = (ISharedDisplaySession) session;
SessionColorManager man = new SessionColorManager();
man.setColors(((SharedDisplayVenueInvite) invitation
.getInvite()).getRGBColors());
SharedDisplaySessionMgr.joinSession(displaySession,
SharedDisplayRole.PARTICIPANT, man);
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(CollaborationSessionView.ID,
sessionId, IWorkbenchPage.VIEW_ACTIVATE);
} else {
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(SessionView.ID, sessionId,
IWorkbenchPage.VIEW_ACTIVATE);
}
} catch (CollaborationException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
} catch (PartInitException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
}
});
}
/**
* This takes a peer to peer message and displays it in the proper view.
*
* @param messageEvent
*/
@Subscribe
public void peer2peerMessage(ITextMessageEvent messageEvent) {
final TextMessage message = messageEvent.getMessage();
VizApp.runAsync(new Runnable() {
@Override
public void run() {
IQualifiedID peer = message.getFrom();
for (IViewReference ref : PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getViewReferences()) {
IWorkbenchPart part = ref.getPart(false);
if (part != null && part instanceof PeerToPeerView) {
PeerToPeerView p2pView = (PeerToPeerView) part;
if (p2pView.getPeer().equals(peer)) {
p2pView.appendMessage(message);
return;
}
}
}
try {
// use the aliased name if there is one
String sId = peer.getName();
for (UserId id : CollaborationUtils.getIds()) {
if (id.equals(peer)) {
sId = id.getAlias();
}
}
PeerToPeerView p2pView = (PeerToPeerView) PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(PeerToPeerView.ID, sId,
IWorkbenchPage.VIEW_ACTIVATE);
p2pView.setPeer(peer);
p2pView.appendMessage(message);
} catch (PartInitException e) {
statusHandler.handle(Priority.PROBLEM,
"Error opening peer to peer view", e);
}
}
});
}
@Subscribe
public void handleHttpdConfigurationEvent(
IHttpdCollaborationConfigurationEvent configurationEvent) {
// Add the httpd collaboration url to the CAVE configuration.
Activator
.getDefault()
.getPreferenceStore()
.setValue(
CollabPrefConstants.HttpCollaborationConfiguration.P_HTTP_SESSION_URL,
configurationEvent.getHttpdCollaborationURL());
Activator
.getDefault()
.getPreferenceStore()
.setValue(
CollabPrefConstants.HttpCollaborationConfiguration.P_SESSION_CONFIGURED,
true);
}
}

View file

@ -45,6 +45,7 @@ import org.eclipse.swt.widgets.Text;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException; import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo; import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager; import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants; import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog; import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
@ -244,7 +245,7 @@ public class CreateSessionDialog extends CaveSWTDialog {
Text focusField = null; Text focusField = null;
List<String> errorMessages = new ArrayList<String>(); List<String> errorMessages = new ArrayList<String>();
String subject = subjectTF.getText().trim(); String subject = subjectTF.getText().trim();
String err = validateVenuName(); String err = validateVenueName();
String name = nameTF.getText(); String name = nameTF.getText();
if (err != null) { if (err != null) {
focusField = nameTF; focusField = nameTF;
@ -315,7 +316,7 @@ public class CreateSessionDialog extends CaveSWTDialog {
return button; return button;
} }
private String validateVenuName() { private String validateVenueName() {
String name = nameTF.getText().trim(); String name = nameTF.getText().trim();
nameTF.setText(name); nameTF.setText(name);
String err = null; String err = null;
@ -325,9 +326,8 @@ public class CreateSessionDialog extends CaveSWTDialog {
// TODO Above else make it a test for invalid characters. // TODO Above else make it a test for invalid characters.
err = "Name contains invalid characters."; err = "Name contains invalid characters.";
} else { } else {
Collection<IVenueInfo> info = CollaborationDataManager Collection<IVenueInfo> info = CollaborationConnection
.getInstance().getCollaborationConnection(true) .getConnection().getVenueInfo();
.getVenueInfo();
for (IVenueInfo i : info) { for (IVenueInfo i : info) {
if (name.equals(i.getVenueName())) { if (name.equals(i.getVenueName())) {
err = "Session already exists. Pick a different name."; err = "Session already exists. Pick a different name.";

View file

@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.ecf.presence.IPresence;
import org.eclipse.ecf.presence.IPresence.Type; import org.eclipse.ecf.presence.IPresence.Type;
import org.eclipse.ecf.presence.roster.IRosterEntry; import org.eclipse.ecf.presence.roster.IRosterEntry;
import org.eclipse.ecf.presence.roster.IRosterGroup; import org.eclipse.ecf.presence.roster.IRosterGroup;
@ -38,9 +39,9 @@ import org.eclipse.swt.widgets.Display;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession; import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo; import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter; import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer; import com.raytheon.uf.viz.collaboration.ui.data.SessionGroupContainer;
/** /**
@ -78,11 +79,13 @@ public class UsersTreeLabelProvider extends ColumnLabelProvider {
} }
String key = ""; String key = "";
if (element instanceof UserId) { if (element instanceof UserId) {
String mode = CollaborationDataManager.getInstance() IPresence presence = CollaborationConnection.getConnection()
.getCollaborationConnection(true).getPresence().getMode() .getPresence();
.toString(); if (presence != null) {
mode = mode.replaceAll("\\s+", "_"); String mode = presence.getMode().toString();
key = mode; mode = mode.replaceAll("\\s+", "_");
key = mode;
}
} else if (element instanceof IRosterEntry) { } else if (element instanceof IRosterEntry) {
IRosterEntry entry = (IRosterEntry) element; IRosterEntry entry = (IRosterEntry) element;
if (entry.getPresence() != null if (entry.getPresence() != null

View file

@ -29,44 +29,18 @@ import org.eclipse.ecf.presence.IPresence.Type;
import org.eclipse.ecf.presence.Presence; import org.eclipse.ecf.presence.Presence;
import org.eclipse.ecf.presence.roster.IRosterManager; import org.eclipse.ecf.presence.roster.IRosterManager;
import org.eclipse.ecf.presence.roster.RosterEntry; import org.eclipse.ecf.presence.roster.RosterEntry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchListener; import org.eclipse.ui.IWorkbenchListener;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import com.google.common.eventbus.Subscribe;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException; import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.ISession;
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession; import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession; import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IHttpdCollaborationConfigurationEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.ITextMessageEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.event.IVenueInvitationEvent;
import com.raytheon.uf.viz.collaboration.comm.identity.invite.SharedDisplayVenueInvite;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole; import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.TextMessage;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection; import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.collaboration.ui.SessionColorManager;
import com.raytheon.uf.viz.collaboration.ui.login.LoginDialog;
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
import com.raytheon.uf.viz.collaboration.ui.session.CollaborationSessionView;
import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView;
import com.raytheon.uf.viz.collaboration.ui.session.SessionView;
import com.raytheon.uf.viz.core.VizApp;
/** /**
* A single class that contains all data information. * A single class that contains all data information.
@ -122,91 +96,6 @@ public class CollaborationDataManager {
sessionsMap = new HashMap<String, IVenueSession>(); sessionsMap = new HashMap<String, IVenueSession>();
} }
/**
* Get the session sessionManager and if needed the user/password.
*
* @return sessionManager or null if unable to get connection.
*/
synchronized public CollaborationConnection getCollaborationConnection(
boolean needsLogin) {
// Get user's server account information and make connection.
if (isConnected() == false && needsLogin) {
VizApp.runSync(new Runnable() {
@Override
public void run() {
shell = Display.getDefault().getActiveShell();
if (shell == null) {
return;
}
LoginDialog dlg = new LoginDialog(shell);
CollaborationConnection newConn = null;
newConn = (CollaborationConnection) dlg.open();
dlg.close();
if (newConn != null) {
connection = newConn;
}
}
});
if (isConnected()) {
// Register handlers and events for the new sessionManager.
connection.registerEventHandler(this);
try {
ISession p2pSession = connection.getPeerToPeerSession();
p2pSession.registerEventHandler(this);
} catch (CollaborationException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
wbListener = new IWorkbenchListener() {
@Override
public boolean preShutdown(IWorkbench workbench,
boolean forced) {
return true;
}
@Override
public void postShutdown(IWorkbench workbench) {
if (connection != null) {
try {
ISession p2pSession = connection
.getPeerToPeerSession();
p2pSession.unRegisterEventHandler(this);
} catch (CollaborationException e) {
// TODO Auto-generated catch block. Please
// revise as appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
connection.unRegisterEventHandler(this);
connection.closeManager();
connection = null;
}
}
};
PlatformUI.getWorkbench().addWorkbenchListener(wbListener);
}
}
return connection;
}
synchronized public void closeManager() {
if (connection != null) {
// The close unRegisters the event handler
connection.closeManager();
connection = null;
}
if (wbListener != null) {
PlatformUI.getWorkbench().removeWorkbenchListener(wbListener);
wbListener = null;
}
}
/** /**
* Get the Venue session associated with the key or any session when key is * Get the Venue session associated with the key or any session when key is
* null. * null.
@ -259,11 +148,12 @@ public class CollaborationDataManager {
*/ */
public String createCollaborationSession(String venue, String subject) public String createCollaborationSession(String venue, String subject)
throws CollaborationException { throws CollaborationException {
CollaborationConnection sessionManager = getCollaborationConnection(true); CollaborationConnection connection = CollaborationConnection
.getConnection();
IVenueSession session = null; IVenueSession session = null;
String sessionId = null; String sessionId = null;
// try { // try {
session = sessionManager.createCollaborationVenue(venue, subject); session = connection.createCollaborationVenue(venue, subject);
// sessionId = venueIdToSessionId(session.getVenue().getInfo() // sessionId = venueIdToSessionId(session.getVenue().getInfo()
// .getVenueID()); // .getVenueID());
sessionId = session.getSessionId(); sessionId = session.getSessionId();
@ -273,7 +163,6 @@ public class CollaborationDataManager {
sessionsMap.put(sessionId, session); sessionsMap.put(sessionId, session);
SharedDisplaySessionMgr.joinSession(displaySession, SharedDisplaySessionMgr.joinSession(displaySession,
SharedDisplayRole.DATA_PROVIDER, null); SharedDisplayRole.DATA_PROVIDER, null);
} }
return sessionId; return sessionId;
@ -281,10 +170,11 @@ public class CollaborationDataManager {
public String createTextOnlySession(String venueName, String subject) public String createTextOnlySession(String venueName, String subject)
throws CollaborationException { throws CollaborationException {
CollaborationConnection sessionManager = getCollaborationConnection(true); CollaborationConnection connection = CollaborationConnection
.getConnection();
IVenueSession session = null; IVenueSession session = null;
String sessionId = null; String sessionId = null;
session = sessionManager.createTextOnlyVenue(venueName, subject); session = connection.createTextOnlyVenue(venueName, subject);
if (session.isConnected()) { if (session.isConnected()) {
sessionId = session.getSessionId(); sessionId = session.getSessionId();
sessionsMap.put(sessionId, session); sessionsMap.put(sessionId, session);
@ -296,132 +186,6 @@ public class CollaborationDataManager {
return connection != null && connection.isConnected(); return connection != null && connection.isConnected();
} }
@Subscribe
public void handleInvitationEvent(IVenueInvitationEvent event) {
final IVenueInvitationEvent invitation = event;
VizApp.runSync(new Runnable() {
@Override
public void run() {
IQualifiedID inviter = invitation.getInviter();
IQualifiedID room = invitation.getRoomId();
if (shell.isDisposed()) {
shell = new Shell(Display.getCurrent());
}
MessageBox box = new MessageBox(shell, SWT.ICON_QUESTION
| SWT.OK | SWT.CANCEL);
box.setText("Invitation");
StringBuilder sb = new StringBuilder();
boolean sharedDisplay = invitation.getInvite() instanceof SharedDisplayVenueInvite;
sb.append("You are invited to a ");
if (sharedDisplay) {
sb.append("collaboration session.\n");
} else {
sb.append("chat room.\n");
}
sb.append("Inviter: ").append(inviter.getName()).append("\n");
sb.append("Room: ").append(room.getName()).append("\n");
sb.append("Subject: ").append(invitation.getSubject());
if (invitation.getInvite() != null
&& invitation.getInvite().getMessage() != null) {
sb.append("\n").append("Message: ")
.append(invitation.getInvite().getMessage());
}
box.setMessage(sb.toString());
if (SWT.OK != box.open()) {
return;
}
try {
IVenueSession session = connection
.joinCollaborationVenue(invitation);
String sessionId = session.getSessionId();
sessionsMap.put(sessionId, session);
if (sharedDisplay) {
ISharedDisplaySession displaySession = (ISharedDisplaySession) session;
SessionColorManager man = new SessionColorManager();
man.setColors(((SharedDisplayVenueInvite) invitation
.getInvite()).getRGBColors());
SharedDisplaySessionMgr.joinSession(displaySession,
SharedDisplayRole.PARTICIPANT, man);
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(CollaborationSessionView.ID,
sessionId, IWorkbenchPage.VIEW_ACTIVATE);
} else {
PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(SessionView.ID, sessionId,
IWorkbenchPage.VIEW_ACTIVATE);
}
} catch (CollaborationException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
} catch (PartInitException e) {
// TODO Auto-generated catch block. Please revise as
// appropriate.
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
}
});
}
/**
* This takes a peer to peer message and displays it in the proper view.
*
* @param messageEvent
*/
@Subscribe
public void peer2peerMessage(ITextMessageEvent messageEvent) {
final TextMessage message = messageEvent.getMessage();
VizApp.runAsync(new Runnable() {
@Override
public void run() {
IQualifiedID peer = message.getFrom();
for (IViewReference ref : PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getViewReferences()) {
IWorkbenchPart part = ref.getPart(false);
if (part != null && part instanceof PeerToPeerView) {
PeerToPeerView p2pView = (PeerToPeerView) part;
if (p2pView.getPeer().equals(peer)) {
p2pView.appendMessage(message);
return;
}
}
}
try {
// use the aliased name if there is one
String sId = peer.getName();
for (UserId id : CollaborationUtils.getIds()) {
if (id.equals(peer)) {
sId = id.getAlias();
}
}
PeerToPeerView p2pView = (PeerToPeerView) PlatformUI
.getWorkbench()
.getActiveWorkbenchWindow()
.getActivePage()
.showView(PeerToPeerView.ID, sId,
IWorkbenchPage.VIEW_ACTIVATE);
p2pView.setPeer(peer);
p2pView.appendMessage(message);
} catch (PartInitException e) {
statusHandler.handle(Priority.PROBLEM,
"Error opening peer to peer view", e);
}
}
});
}
public void fireModifiedPresence(Mode mode, String msg) { public void fireModifiedPresence(Mode mode, String msg) {
IRosterManager manager = connection.getRosterManager(); IRosterManager manager = connection.getRosterManager();
IPresence presence = new Presence(Type.AVAILABLE, msg, mode); IPresence presence = new Presence(Type.AVAILABLE, msg, mode);
@ -441,23 +205,10 @@ public class CollaborationDataManager {
ex.printStackTrace(); ex.printStackTrace();
} }
} }
@Subscribe // TODO remove as this is temporary to fix a problem and get in a good state
public void handleHttpdConfigurationEvent( public void addSession(String sessionId, IVenueSession session) {
IHttpdCollaborationConfigurationEvent configurationEvent) { sessionsMap.put(sessionId, session);
// Add the httpd collaboration url to the CAVE configuration.
Activator
.getDefault()
.getPreferenceStore()
.setValue(
CollabPrefConstants.HttpCollaborationConfiguration.P_HTTP_SESSION_URL,
configurationEvent.getHttpdCollaborationURL());
Activator
.getDefault()
.getPreferenceStore()
.setValue(
CollabPrefConstants.HttpCollaborationConfiguration.P_SESSION_CONFIGURED,
true);
} }
} }

View file

@ -64,7 +64,7 @@ public class SharedDisplaySessionMgr {
return sharedDisplaySessionMap.keySet(); return sharedDisplaySessionMap.keySet();
} }
protected static void joinSession(ISharedDisplaySession session, public static void joinSession(ISharedDisplaySession session,
SharedDisplayRole initialRole, SessionColorManager colors) { SharedDisplayRole initialRole, SessionColorManager colors) {
SessionContainer container = new SessionContainer(); SessionContainer container = new SessionContainer();
container.setSessionId(session.getSessionId()); container.setSessionId(session.getSessionId());

View file

@ -54,6 +54,7 @@ import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConn
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.Activator; import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils; import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.collaboration.ui.ConnectionSubscriber;
import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants; import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants;
import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog; import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
@ -97,8 +98,6 @@ public class LoginDialog extends CaveSWTDialog {
private Control[] withServerList; private Control[] withServerList;
private CollaborationConnection sessionManager;
private IPersistentPreferenceStore prefStore; private IPersistentPreferenceStore prefStore;
public LoginDialog(Shell parentShell) { public LoginDialog(Shell parentShell) {
@ -364,10 +363,12 @@ public class LoginDialog extends CaveSWTDialog {
protected org.eclipse.core.runtime.IStatus run( protected org.eclipse.core.runtime.IStatus run(
org.eclipse.core.runtime.IProgressMonitor monitor) { org.eclipse.core.runtime.IProgressMonitor monitor) {
try { try {
sessionManager = new CollaborationConnection( CollaborationConnection connection = CollaborationConnection
new UserId(usr, srvr), passwd, .connect(new UserId(usr, srvr),
pres); passwd, pres);
setReturnValue(sessionManager); setReturnValue(connection);
ConnectionSubscriber
.subscribe(connection);
VizApp.runAsync(new Runnable() { VizApp.runAsync(new Runnable() {
public void run() { public void run() {
close(); close();
@ -404,9 +405,6 @@ public class LoginDialog extends CaveSWTDialog {
} }
errorMessages.add("Inavlid username or password."); errorMessages.add("Inavlid username or password.");
passwordTF.setText(""); passwordTF.setText("");
if (sessionManager != null) {
sessionManager.closeManager();
}
} }
} }
if (focusField != null) { if (focusField != null) {
@ -437,10 +435,4 @@ public class LoginDialog extends CaveSWTDialog {
return button; return button;
} }
/**
* @return the sessionManager
*/
public CollaborationConnection getSessionManager() {
return sessionManager;
}
} }

View file

@ -55,7 +55,6 @@ import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils; import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.collaboration.ui.data.AlertWord; import com.raytheon.uf.viz.collaboration.ui.data.AlertWord;
import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper; import com.raytheon.uf.viz.collaboration.ui.data.AlertWordWrapper;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
/** /**
* TODO Add Description * TODO Add Description
@ -261,8 +260,8 @@ public class CollaborationAlertWordsPreferencePage extends
CollaborationUtils.saveAlertWords(words); CollaborationUtils.saveAlertWords(words);
AlertWordWrapper wrapper = new AlertWordWrapper(); AlertWordWrapper wrapper = new AlertWordWrapper();
wrapper.setAlertWords(words.toArray(new AlertWord[0])); wrapper.setAlertWords(words.toArray(new AlertWord[0]));
CollaborationConnection connection = CollaborationDataManager CollaborationConnection connection = CollaborationConnection
.getInstance().getCollaborationConnection(false); .getConnection();
if (connection != null && connection.isConnected()) { if (connection != null && connection.isConnected()) {
// refresh any open chats or sessions // refresh any open chats or sessions
connection.getEventPublisher().post(wrapper); connection.getEventPublisher().post(wrapper);

View file

@ -61,11 +61,11 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.viz.collaboration.comm.identity.IMessage; import com.raytheon.uf.viz.collaboration.comm.identity.IMessage;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.Activator; import com.raytheon.uf.viz.collaboration.ui.Activator;
import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils; import com.raytheon.uf.viz.collaboration.ui.CollaborationUtils;
import com.raytheon.uf.viz.collaboration.ui.data.AlertWord; import com.raytheon.uf.viz.collaboration.ui.data.AlertWord;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.uf.viz.core.icon.IconUtil; import com.raytheon.uf.viz.core.icon.IconUtil;
import com.raytheon.uf.viz.notification.notifier.PopupNotifier; import com.raytheon.uf.viz.notification.notifier.PopupNotifier;
@ -284,8 +284,8 @@ public abstract class AbstractSessionView extends CaveFloatingView {
cal.setTimeInMillis(timestamp); cal.setTimeInMillis(timestamp);
String time = String.format("%1$tI:%1$tM:%1$tS %1$Tp", cal); String time = String.format("%1$tI:%1$tM:%1$tS %1$Tp", cal);
UserId myUser = CollaborationDataManager.getInstance() UserId myUser = CollaborationConnection.getConnection()
.getCollaborationConnection(true).getUser(); .getUser();
if (!myUser.equals(userId) if (!myUser.equals(userId)
&& Activator.getDefault().getPreferenceStore() && Activator.getDefault().getPreferenceStore()
.getBoolean("notifications")) { .getBoolean("notifications")) {

View file

@ -53,6 +53,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo; import com.raytheon.uf.viz.collaboration.comm.identity.info.IVenueInfo;
import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole; import com.raytheon.uf.viz.collaboration.comm.identity.user.SharedDisplayRole;
import com.raytheon.uf.viz.collaboration.comm.provider.TransferRoleCommand; import com.raytheon.uf.viz.collaboration.comm.provider.TransferRoleCommand;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter; import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.Activator; import com.raytheon.uf.viz.collaboration.ui.Activator;
@ -386,8 +387,7 @@ public class CollaborationSessionView extends SessionView implements
String message = getComposedMessage(); String message = getComposedMessage();
if (message.length() > 0) { if (message.length() > 0) {
try { try {
UserId id = CollaborationDataManager.getInstance() UserId id = CollaborationConnection.getConnection().getUser();
.getCollaborationConnection(true).getUser();
appendMessage(id, System.currentTimeMillis(), message); appendMessage(id, System.currentTimeMillis(), message);
((IVenueSession) session).sendChatMessage(message); ((IVenueSession) session).sendChatMessage(message);
} catch (CollaborationException e) { } catch (CollaborationException e) {

View file

@ -39,9 +39,9 @@ import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer; import com.raytheon.uf.viz.collaboration.comm.identity.IPeerToPeer;
import com.raytheon.uf.viz.collaboration.comm.identity.listener.IMessageListener; import com.raytheon.uf.viz.collaboration.comm.identity.listener.IMessageListener;
import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID; import com.raytheon.uf.viz.collaboration.comm.identity.user.IQualifiedID;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter; import com.raytheon.uf.viz.collaboration.comm.provider.user.IDConverter;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
/** /**
* TODO Add Description * TODO Add Description
@ -84,8 +84,8 @@ public class PeerToPeerView extends AbstractSessionView {
userColor = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE); userColor = Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE);
chatterColor = Display.getCurrent().getSystemColor(SWT.COLOR_RED); chatterColor = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
black = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK); black = Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
CollaborationDataManager.getInstance().getCollaborationConnection(true) CollaborationConnection.getConnection().getEventPublisher()
.getEventPublisher().register(this); .register(this);
} }
/* /*
@ -97,8 +97,10 @@ public class PeerToPeerView extends AbstractSessionView {
*/ */
@Override @Override
public void dispose() { public void dispose() {
CollaborationDataManager.getInstance().getCollaborationConnection(true) CollaborationConnection conn = CollaborationConnection.getConnection();
.getEventPublisher().unregister(this); if (conn != null) {
conn.getEventPublisher().unregister(this);
}
super.dispose(); super.dispose();
} }
@ -135,18 +137,17 @@ public class PeerToPeerView extends AbstractSessionView {
String message = getComposedMessage(); String message = getComposedMessage();
if (message.length() > 0) { if (message.length() > 0) {
try { try {
CollaborationDataManager manager = CollaborationDataManager CollaborationConnection connection = CollaborationConnection
.getInstance(); .getConnection();
if (online) { if (online) {
appendMessage(manager.getCollaborationConnection(true) appendMessage(connection.getUser(),
.getUser(), System.currentTimeMillis(), message); System.currentTimeMillis(), message);
IPeerToPeer p2p = (IPeerToPeer) manager IPeerToPeer p2p = (IPeerToPeer) connection
.getCollaborationConnection(true)
.getPeerToPeerSession(); .getPeerToPeerSession();
p2p.sendPeerToPeer(peer, message); p2p.sendPeerToPeer(peer, message);
} else { } else {
appendMessage(manager.getCollaborationConnection(true) appendMessage(connection.getUser(),
.getUser(), System.currentTimeMillis(), message); System.currentTimeMillis(), message);
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.append("Unable to send message. User is not online."); builder.append("Unable to send message. User is not online.");
sendErrorMessage(builder); sendErrorMessage(builder);
@ -163,8 +164,8 @@ public class PeerToPeerView extends AbstractSessionView {
Color color = null; Color color = null;
if (userId == null) { if (userId == null) {
color = black; color = black;
} else if (!userId.equals(CollaborationDataManager.getInstance() } else if (!userId.equals(CollaborationConnection.getConnection()
.getCollaborationConnection(true).getUser())) { .getUser())) {
color = chatterColor; color = chatterColor;
} else { } else {
color = userColor; color = userColor;
@ -220,8 +221,7 @@ public class PeerToPeerView extends AbstractSessionView {
*/ */
@Override @Override
protected SessionMsgArchive getMessageArchive() { protected SessionMsgArchive getMessageArchive() {
UserId me = CollaborationDataManager.getInstance() UserId me = CollaborationConnection.getConnection().getUser();
.getCollaborationConnection(true).getUser();
return new SessionMsgArchive(me.getHost(), me.getName(), peer.getName()); return new SessionMsgArchive(me.getHost(), me.getName(), peer.getName());
} }

View file

@ -54,8 +54,8 @@ import com.raytheon.uf.common.localization.PathManagerFactory;
import com.raytheon.uf.common.localization.exception.LocalizationException; import com.raytheon.uf.common.localization.exception.LocalizationException;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.viz.collaboration.comm.provider.session.CollaborationConnection;
import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId; import com.raytheon.uf.viz.collaboration.comm.provider.user.UserId;
import com.raytheon.uf.viz.collaboration.ui.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.ui.session.SearchComposite.SearchText; import com.raytheon.uf.viz.collaboration.ui.session.SearchComposite.SearchText;
/** /**
@ -134,8 +134,7 @@ public class SessionMsgArchiveBrowser extends Composite implements SearchText {
try { try {
if (logDir == null) { if (logDir == null) {
UserId user = CollaborationDataManager.getInstance() UserId user = CollaborationConnection.getConnection().getUser();
.getCollaborationConnection(true).getUser();
logDir = SessionMsgArchive.getArchiveDir(user.getHost(), logDir = SessionMsgArchive.getArchiveDir(user.getHost(),
user.getName(), null); user.getName(), null);
} }

View file

@ -143,8 +143,8 @@ public class SessionView extends AbstractSessionView {
@Override @Override
protected void initComponents(Composite parent) { protected void initComponents(Composite parent) {
initColorManager(); initColorManager();
CollaborationDataManager.getInstance().getCollaborationConnection(true) CollaborationConnection.getConnection().getEventPublisher()
.getEventPublisher().register(this); .register(this);
super.initComponents(parent); super.initComponents(parent);
} }
@ -161,9 +161,8 @@ public class SessionView extends AbstractSessionView {
@Override @Override
public void run() { public void run() {
try { try {
CollaborationConnection sessionManager = CollaborationDataManager ISession session = CollaborationConnection.getConnection()
.getInstance().getCollaborationConnection(true); .getPeerToPeerSession();
ISession session = sessionManager.getPeerToPeerSession();
PlatformUI PlatformUI
.getWorkbench() .getWorkbench()
.getActiveWorkbenchWindow() .getActiveWorkbenchWindow()
@ -222,8 +221,7 @@ public class SessionView extends AbstractSessionView {
// so not to have delay, going to handle messages from yourself // so not to have delay, going to handle messages from yourself
// separately // separately
if (message.getFrom().equals( if (message.getFrom().equals(
CollaborationDataManager.getInstance() CollaborationConnection.getConnection().getUser())) {
.getCollaborationConnection(true).getUser())) {
return; return;
} }
VizApp.runAsync(new Runnable() { VizApp.runAsync(new Runnable() {
@ -371,9 +369,8 @@ public class SessionView extends AbstractSessionView {
if (participant.equals(session.getUserID())) { if (participant.equals(session.getUserID())) {
RosterEntry rEntry = new RosterEntry(session RosterEntry rEntry = new RosterEntry(session
.getConnection().getRosterManager().getRoster(), .getConnection().getRosterManager().getRoster(),
participant, CollaborationDataManager.getInstance() participant, CollaborationConnection
.getCollaborationConnection(true) .getConnection().getPresence());
.getPresence());
users.add(rEntry); users.add(rEntry);
} else if (entry != null) { } else if (entry != null) {
users.add(usersMap.get(participant)); users.add(usersMap.get(participant));
@ -416,8 +413,10 @@ public class SessionView extends AbstractSessionView {
session.unRegisterEventHandler(this); session.unRegisterEventHandler(this);
CollaborationDataManager mgr = CollaborationDataManager.getInstance(); CollaborationDataManager mgr = CollaborationDataManager.getInstance();
mgr.closeSession(sessionId); mgr.closeSession(sessionId);
mgr.getCollaborationConnection(true).getEventPublisher() CollaborationConnection conn = CollaborationConnection.getConnection();
.unregister(this); if (conn != null) {
conn.getEventPublisher().unregister(this);
}
super.dispose(); super.dispose();
} }
@ -439,8 +438,7 @@ public class SessionView extends AbstractSessionView {
String message = getComposedMessage(); String message = getComposedMessage();
if (message.length() > 0) { if (message.length() > 0) {
try { try {
UserId id = CollaborationDataManager.getInstance() UserId id = CollaborationConnection.getConnection().getUser();
.getCollaborationConnection(true).getUser();
appendMessage(id, System.currentTimeMillis(), message); appendMessage(id, System.currentTimeMillis(), message);
session.sendChatMessage(message); session.sendChatMessage(message);
} catch (CollaborationException e) { } catch (CollaborationException e) {