diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/data/CollaborationDataManager.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/data/CollaborationDataManager.java index d69ea82685..1e8318513e 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/data/CollaborationDataManager.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/data/CollaborationDataManager.java @@ -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.Priority; 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.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.LoginDialog; +import com.raytheon.uf.viz.collaboration.ui.role.AbstractRoleEventController; import com.raytheon.uf.viz.core.VizApp; /** @@ -85,6 +88,10 @@ public class CollaborationDataManager { */ Map sessionsMap; + Map displaySessionsMap; + + Map editorsMap; + public static CollaborationDataManager getInstance() { if (instance == null) { 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 * ID. This is the used as the key in the session Map. * - * @param venuId + * @param venueId * @return sessionId */ - public String venuIdToSessionId(String venuId) { - return venuId.replace(':', ';'); + public String venueIdToSessionId(String venueId) { + return venueId.replace(':', ';'); } /** @@ -109,6 +116,7 @@ public class CollaborationDataManager { private CollaborationDataManager() { usersMap = new HashMap(); sessionsMap = new HashMap(); + // displaySessionsMap = new HashMap(); } public String getLoginId() { @@ -124,6 +132,24 @@ public class CollaborationDataManager { 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. * @@ -245,6 +271,11 @@ public class CollaborationDataManager { IVenueSession session = sessionsMap.get(sessionId); if (session != null) { sessionsMap.remove(sessionId); + AbstractRoleEventController controller = displaySessionsMap + .remove(sessionId); + if (controller != null) { + controller.shutdown(); + } session.close(); } } @@ -265,11 +296,14 @@ public class CollaborationDataManager { String sessionId = null; try { session = manager.createCollaborationVenue(venue, subject); - sessionId = venuIdToSessionId(session.getVenue().getInfo() + sessionId = venueIdToSessionId(session.getVenue().getInfo() .getVenueID()); // TODO throw an exception if unable to make connection? if (session.isConnected()) { + ISharedDisplaySession displaySession = session + .spawnSharedDisplaySession(); sessionsMap.put(sessionId, session); + // TODO set displaySession's data provider and session leader. } } catch (CollaborationException e) { statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e); @@ -291,7 +325,10 @@ public class CollaborationDataManager { IVenueSession session = null; try { session = getSessionManager().joinCollaborationVenue(venueName); + ISharedDisplaySession displaySession = session + .spawnSharedDisplaySession(); sessionsMap.put(sessionId, session); + // displaySessionsMap.put(sessionId, displaySession); } catch (CollaborationException e) { // TODO Auto-generated catch block. Please revise as // appropriate. diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java index 9e76d795f0..cb9e4fd8ac 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CollaborationGroupView.java @@ -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.IRosterManager; 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.CollaborationGroup; import com.raytheon.uf.viz.collaboration.data.CollaborationNode; import com.raytheon.uf.viz.collaboration.data.CollaborationUser; import com.raytheon.uf.viz.collaboration.data.LoginUser; 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.CollaborationSessionView; import com.raytheon.uf.viz.collaboration.ui.session.PeerToPeerView; @@ -504,9 +507,14 @@ public class CollaborationGroupView extends ViewPart { private void createCollaborationView(CreateSessionData result) { String sessionId = null; try { - sessionId = CollaborationDataManager.getInstance() - .createCollaborationSession(result.getName(), - result.getSubject()); + CollaborationDataManager manager = CollaborationDataManager + .getInstance(); + sessionId = manager.createCollaborationSession(result.getName(), + result.getSubject()); + DataProviderEventController controller = new DataProviderEventController( + (VenueSession) manager.getSession(sessionId)); + controller.startup(); + manager.setDisplaySession(sessionId, controller); } catch (Exception e) { e.printStackTrace(); } finally { @@ -587,8 +595,14 @@ public class CollaborationGroupView extends ViewPart { if (node instanceof SessionGroup) { SessionGroup sg = (SessionGroup) node; System.out.println("Join: " + sg.getId()); - String sessionId = CollaborationDataManager.getInstance() - .joinCollaborationSession(sg.getText(), sg.getId()); + CollaborationDataManager manager = CollaborationDataManager + .getInstance(); + String sessionId = manager.joinCollaborationSession( + sg.getText(), sg.getId()); + ParticipantEventController controller = new ParticipantEventController( + (VenueSession) manager.getSession(sessionId)); + manager.setDisplaySession(sessionId, controller); + controller.startup(); try { IViewPart part = PlatformUI .getWorkbench() @@ -793,7 +807,7 @@ public class CollaborationGroupView extends ViewPart { .getInstance().getSessionManager().getVenueInfo(); for (IVenueInfo venu : venuList) { SessionGroup gp = new SessionGroup(CollaborationDataManager - .getInstance().venuIdToSessionId(venu.getVenueID())); + .getInstance().venueIdToSessionId(venu.getVenueID())); gp.setText(venu.getVenueName()); if (venu.getParticipantCount() > 0) {