Merge "Issue #244 Tied CollaboratonEditor to the view." into 11-Collaboration

Former-commit-id: c6e046f11e [formerly f5ace8ee9561bb02311414ac82b0bbe93a5ff3b6]
Former-commit-id: b2655debe8
This commit is contained in:
Nate Jensen 2012-03-27 08:36:25 -05:00 committed by Gerrit Code Review
commit 43b58266c5
2 changed files with 61 additions and 10 deletions

View file

@ -34,10 +34,13 @@ 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.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.provider.session.SessionManager; import com.raytheon.uf.viz.collaboration.comm.provider.session.SessionManager;
import com.raytheon.uf.viz.collaboration.ui.editor.CollaborationEditor;
import com.raytheon.uf.viz.collaboration.ui.login.LoginData; import com.raytheon.uf.viz.collaboration.ui.login.LoginData;
import com.raytheon.uf.viz.collaboration.ui.login.LoginDialog; import com.raytheon.uf.viz.collaboration.ui.login.LoginDialog;
import com.raytheon.uf.viz.collaboration.ui.role.AbstractRoleEventController;
import com.raytheon.uf.viz.core.VizApp; import com.raytheon.uf.viz.core.VizApp;
/** /**
@ -85,6 +88,10 @@ public class CollaborationDataManager {
*/ */
Map<String, IVenueSession> sessionsMap; Map<String, IVenueSession> sessionsMap;
Map<String, AbstractRoleEventController> displaySessionsMap;
Map<String, CollaborationEditor> editorsMap;
public static CollaborationDataManager getInstance() { public static CollaborationDataManager getInstance() {
if (instance == null) { if (instance == null) {
instance = new CollaborationDataManager(); instance = new CollaborationDataManager();
@ -96,11 +103,11 @@ public class CollaborationDataManager {
* Converts the venu's Id into a string that usable for a view's secondary * Converts the venu's Id into a string that usable for a view's secondary
* ID. This is the used as the key in the session Map. * ID. This is the used as the key in the session Map.
* *
* @param venuId * @param venueId
* @return sessionId * @return sessionId
*/ */
public String venuIdToSessionId(String venuId) { public String venueIdToSessionId(String venueId) {
return venuId.replace(':', ';'); return venueId.replace(':', ';');
} }
/** /**
@ -109,6 +116,7 @@ public class CollaborationDataManager {
private CollaborationDataManager() { private CollaborationDataManager() {
usersMap = new HashMap<String, DataUser>(); usersMap = new HashMap<String, DataUser>();
sessionsMap = new HashMap<String, IVenueSession>(); sessionsMap = new HashMap<String, IVenueSession>();
// displaySessionsMap = new HashMap<String, ISharedDisplaySession>();
} }
public String getLoginId() { public String getLoginId() {
@ -124,6 +132,24 @@ public class CollaborationDataManager {
return usersMap.get(id); return usersMap.get(id);
} }
public AbstractRoleEventController getDisplaySession(String sessonId) {
return displaySessionsMap.get(sessonId);
}
public void setDisplaySession(String sessionId,
AbstractRoleEventController controller) {
displaySessionsMap.put(sessionId, controller);
}
public void editorCreated(String venueId, CollaborationEditor editor) {
String sessionId = venueIdToSessionId(venueId);
editorsMap.put(sessionId, editor);
}
public CollaborationEditor getEditor(String sessionId) {
return editorsMap.get(sessionId);
}
/** /**
* Get the session manager and if needed the user/password. * Get the session manager and if needed the user/password.
* *
@ -245,6 +271,11 @@ public class CollaborationDataManager {
IVenueSession session = sessionsMap.get(sessionId); IVenueSession session = sessionsMap.get(sessionId);
if (session != null) { if (session != null) {
sessionsMap.remove(sessionId); sessionsMap.remove(sessionId);
AbstractRoleEventController controller = displaySessionsMap
.remove(sessionId);
if (controller != null) {
controller.shutdown();
}
session.close(); session.close();
} }
} }
@ -265,11 +296,14 @@ public class CollaborationDataManager {
String sessionId = null; String sessionId = null;
try { try {
session = manager.createCollaborationVenue(venue, subject); session = manager.createCollaborationVenue(venue, subject);
sessionId = venuIdToSessionId(session.getVenue().getInfo() sessionId = venueIdToSessionId(session.getVenue().getInfo()
.getVenueID()); .getVenueID());
// TODO throw an exception if unable to make connection? // TODO throw an exception if unable to make connection?
if (session.isConnected()) { if (session.isConnected()) {
ISharedDisplaySession displaySession = session
.spawnSharedDisplaySession();
sessionsMap.put(sessionId, session); sessionsMap.put(sessionId, session);
// TODO set displaySession's data provider and session leader.
} }
} catch (CollaborationException e) { } catch (CollaborationException e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
@ -291,7 +325,10 @@ public class CollaborationDataManager {
IVenueSession session = null; IVenueSession session = null;
try { try {
session = getSessionManager().joinCollaborationVenue(venueName); session = getSessionManager().joinCollaborationVenue(venueName);
ISharedDisplaySession displaySession = session
.spawnSharedDisplaySession();
sessionsMap.put(sessionId, session); sessionsMap.put(sessionId, session);
// displaySessionsMap.put(sessionId, displaySession);
} catch (CollaborationException e) { } catch (CollaborationException e) {
// TODO Auto-generated catch block. Please revise as // TODO Auto-generated catch block. Please revise as
// appropriate. // appropriate.

View file

@ -72,12 +72,15 @@ import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterEntry;
import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterGroup; import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterGroup;
import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterManager; import com.raytheon.uf.viz.collaboration.comm.identity.roster.IRosterManager;
import com.raytheon.uf.viz.collaboration.comm.provider.session.SessionManager; import com.raytheon.uf.viz.collaboration.comm.provider.session.SessionManager;
import com.raytheon.uf.viz.collaboration.comm.provider.session.VenueSession;
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager; import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.data.CollaborationGroup; import com.raytheon.uf.viz.collaboration.data.CollaborationGroup;
import com.raytheon.uf.viz.collaboration.data.CollaborationNode; import com.raytheon.uf.viz.collaboration.data.CollaborationNode;
import com.raytheon.uf.viz.collaboration.data.CollaborationUser; import com.raytheon.uf.viz.collaboration.data.CollaborationUser;
import com.raytheon.uf.viz.collaboration.data.LoginUser; import com.raytheon.uf.viz.collaboration.data.LoginUser;
import com.raytheon.uf.viz.collaboration.data.SessionGroup; import com.raytheon.uf.viz.collaboration.data.SessionGroup;
import com.raytheon.uf.viz.collaboration.ui.role.DataProviderEventController;
import com.raytheon.uf.viz.collaboration.ui.role.ParticipantEventController;
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;
import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView; import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView;
@ -504,9 +507,14 @@ public class CollaborationGroupView extends ViewPart {
private void createCollaborationView(CreateSessionData result) { private void createCollaborationView(CreateSessionData result) {
String sessionId = null; String sessionId = null;
try { try {
sessionId = CollaborationDataManager.getInstance() CollaborationDataManager manager = CollaborationDataManager
.createCollaborationSession(result.getName(), .getInstance();
sessionId = manager.createCollaborationSession(result.getName(),
result.getSubject()); result.getSubject());
DataProviderEventController controller = new DataProviderEventController(
(VenueSession) manager.getSession(sessionId));
controller.startup();
manager.setDisplaySession(sessionId, controller);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
@ -587,8 +595,14 @@ public class CollaborationGroupView extends ViewPart {
if (node instanceof SessionGroup) { if (node instanceof SessionGroup) {
SessionGroup sg = (SessionGroup) node; SessionGroup sg = (SessionGroup) node;
System.out.println("Join: " + sg.getId()); System.out.println("Join: " + sg.getId());
String sessionId = CollaborationDataManager.getInstance() CollaborationDataManager manager = CollaborationDataManager
.joinCollaborationSession(sg.getText(), sg.getId()); .getInstance();
String sessionId = manager.joinCollaborationSession(
sg.getText(), sg.getId());
ParticipantEventController controller = new ParticipantEventController(
(VenueSession) manager.getSession(sessionId));
manager.setDisplaySession(sessionId, controller);
controller.startup();
try { try {
IViewPart part = PlatformUI IViewPart part = PlatformUI
.getWorkbench() .getWorkbench()
@ -793,7 +807,7 @@ public class CollaborationGroupView extends ViewPart {
.getInstance().getSessionManager().getVenueInfo(); .getInstance().getSessionManager().getVenueInfo();
for (IVenueInfo venu : venuList) { for (IVenueInfo venu : venuList) {
SessionGroup gp = new SessionGroup(CollaborationDataManager SessionGroup gp = new SessionGroup(CollaborationDataManager
.getInstance().venuIdToSessionId(venu.getVenueID())); .getInstance().venueIdToSessionId(venu.getVenueID()));
gp.setText(venu.getVenueName()); gp.setText(venu.getVenueName());
if (venu.getParticipantCount() > 0) { if (venu.getParticipantCount() > 0) {