Issue #427 cleanup properly on exiting session

Change-Id: I4779ce49f9a9ee6d64cd908e04b007d808cb3bc6

Former-commit-id: 797f1e5ec1 [formerly e68e75d735] [formerly 057b5eb3b9 [formerly c42b670e619beaba9b22bfa3bbdc6e1f0b9da075]]
Former-commit-id: 057b5eb3b9
Former-commit-id: e5a84290de
This commit is contained in:
Nate Jensen 2012-05-11 15:30:06 -05:00
parent de6297fada
commit fd16a8ee65
4 changed files with 36 additions and 5 deletions

View file

@ -107,10 +107,12 @@ public class SharedDisplaySessionMgr {
* @param sessionId
*/
public static void exitSession(String sessionId) {
SessionContainer container = sharedDisplaySessionMap.remove(sessionId);
SessionContainer container = sharedDisplaySessionMap.get(sessionId);
if (container != null) {
container.getRoleEventController().shutdown();
// remove after shutting down event controller
sharedDisplaySessionMap.remove(sessionId);
}
}
}

View file

@ -104,6 +104,7 @@ 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.data.CollaborationDataManager;
import com.raytheon.uf.viz.collaboration.data.CollaborationGroupContainer;
import com.raytheon.uf.viz.collaboration.data.SessionContainer;
import com.raytheon.uf.viz.collaboration.data.SessionGroupContainer;
import com.raytheon.uf.viz.collaboration.data.SharedDisplaySessionMgr;
import com.raytheon.uf.viz.collaboration.display.editor.CollaborationEditor;
@ -116,6 +117,7 @@ import com.raytheon.uf.viz.collaboration.ui.session.SessionView;
import com.raytheon.uf.viz.core.VizApp;
import com.raytheon.uf.viz.core.icon.IconUtil;
import com.raytheon.uf.viz.drawing.PathToolbar;
import com.raytheon.viz.ui.VizWorkbenchManager;
/**
* This class is the main view to display the user's information and allow the
@ -1399,6 +1401,21 @@ public class CollaborationGroupView extends ViewPart implements IPartListener {
}
}
}
if (part instanceof CollaborationSessionView) {
String sessionId = ((CollaborationSessionView) part).getSessionId();
SessionContainer container = SharedDisplaySessionMgr
.getSessionContainer(sessionId);
if (container != null) {
CollaborationEditor assocEditor = container
.getCollaborationEditor();
if (assocEditor != null) {
IWorkbenchPage page = VizWorkbenchManager.getInstance()
.getCurrentWindow().getActivePage();
page.closeEditor(assocEditor, false);
}
}
}
}
@Override

View file

@ -19,6 +19,7 @@
**/
package com.raytheon.uf.viz.collaboration.ui.role;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
@ -48,6 +49,7 @@ import com.raytheon.uf.viz.collaboration.ui.editor.event.InputEvent;
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.CollaborationDispatcher;
import com.raytheon.uf.viz.collaboration.ui.rsc.CollaborationWrapperResource;
import com.raytheon.uf.viz.collaboration.ui.rsc.CollaborationWrapperResourceData;
import com.raytheon.uf.viz.collaboration.ui.rsc.DataProviderRsc;
import com.raytheon.uf.viz.core.IDisplayPane;
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
import com.raytheon.uf.viz.core.VizApp;
@ -342,6 +344,7 @@ public class DataProviderEventController extends AbstractRoleEventController {
rp.setResourceData(((CollaborationWrapperResourceData) rp
.getResourceData()).getWrappedResourceData());
}
}
/*
@ -361,11 +364,18 @@ public class DataProviderEventController extends AbstractRoleEventController {
for (IDisplayPaneContainer container : sc.getSharedEditors()) {
for (IDisplayPane pane : container.getDisplayPanes()) {
ResourceList list = pane.getDescriptor().getResourceList();
List<ResourcePair> rscToRemoveList = new ArrayList<ResourcePair>();
for (ResourcePair rp : list) {
unwrapResourcePair(rp);
if (rp.getResource() instanceof DataProviderRsc) {
rscToRemoveList.add(rp);
}
}
list.removePreAddListener(wrappingListener);
list.removePostRemoveListener(wrappingListener);
for (ResourcePair remove : rscToRemoveList) {
list.remove(remove);
}
}
DispatchingGraphicsFactory
.extractRemoteFunctionality(container);
@ -375,7 +385,6 @@ public class DataProviderEventController extends AbstractRoleEventController {
for (CollaborationDispatcher dispatcher : dispatchers) {
dispatcher.dispose();
}
// TODO should remove the SharedEditorIndiciatorRsc
}
private class ResourceWrapperListener implements AddListener,

View file

@ -89,8 +89,11 @@ public class ParticipantEventController extends AbstractRoleEventController {
SessionContainer container = SharedDisplaySessionMgr
.getSessionContainer(sessionId);
container.setCollaborationEditor(editor);
editor.setTabTitle(session.getVenue().getInfo()
.getVenueDescription());
String title = session.getVenue().getInfo()
.getVenueDescription();
editor.setTabTitle(title);
editor.disableClose("Please close the \"" + title
+ "\" chat to exit the session.");
// initialize resources
if (se.getLocalResources() != null) {