Issue #244 Tied CollaboratonEditor to the view.

Change-Id: I67b9b2f9f1a71f1f131584cdb138c54788cac165

Former-commit-id: fd9eb8cbf048ce03bce27c4d1249596f5649d2a7
This commit is contained in:
Roger Ferrel 2012-03-26 17:29:05 -05:00
parent 95d8d85fd0
commit d001287c94
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.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<String, IVenueSession> sessionsMap;
Map<String, AbstractRoleEventController> displaySessionsMap;
Map<String, CollaborationEditor> 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<String, DataUser>();
sessionsMap = new HashMap<String, IVenueSession>();
// displaySessionsMap = new HashMap<String, ISharedDisplaySession>();
}
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.

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.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) {