diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionContainer.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionContainer.java
index 55f589f1e6..31e625e299 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionContainer.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/data/SessionContainer.java
@@ -40,6 +40,10 @@ import com.raytheon.uf.viz.core.VizApp;
* The container is also capable of listening for leader change events and if
* the remote display is changed.
*
+ * This class primarily exists since due to the plugin hierarchy a
+ * SharedDisplaySession cannot have actual dependencies on code in the display
+ * plugin.
+ *
*
*
* SOFTWARE HISTORY
@@ -49,6 +53,7 @@ import com.raytheon.uf.viz.core.VizApp;
* Apr 16, 2012 njensen Initial creation
* Feb 11, 2014 2751 njensen Added leaderChanged() and listeners
* Mar 07, 2014 2848 bclement made colorManager final, added modifyColors() listeners
+ * Mar 18, 2014 2895 njensen Improved javadoc
*
*
*
@@ -121,7 +126,6 @@ public class SessionContainer {
return colorManager;
}
-
@Subscribe
public void leaderChanged(LeaderChangeEvent event) {
// for now (and possibly forever) we are not allowing capabilities to be
diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/AbstractRoleEventController.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/AbstractRoleEventController.java
index 085b044bb8..8e8eee3a9f 100644
--- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/AbstractRoleEventController.java
+++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/AbstractRoleEventController.java
@@ -37,6 +37,7 @@ import com.raytheon.uf.viz.collaboration.display.data.SharedDisplaySessionMgr;
* Mar 26, 2012 njensen Initial creation
* Feb 12, 2014 2751 njensen Renamed container to displayContainer
* Mar 07, 2014 2848 bclement moved event handler registration to constructor
+ * Mar 18, 2014 2895 njensen Fixed shutdown order
*
*
*
@@ -69,11 +70,18 @@ public abstract class AbstractRoleEventController
*
@@ -173,8 +174,8 @@ public class CollaborationDrawingResource extends
layer.setEraserWidth(16); // Configure?
layer.setLineStyle(outline.getLineStyle());
layer.setLineWidth(outline.getOutlineWidth());
- layer.setColor(container.getColorManager()
- .getColorForUser(user));
+ layer.setColor(container.getColorManager().getColorForUser(
+ user));
layer.paint(target, paintProps);
}
}
@@ -190,15 +191,17 @@ public class CollaborationDrawingResource extends
protected void disposeInternal() {
container.getSession().unregisterEventHandler(this);
disposeLayers();
- layerMap.clear();
layerMap = null;
manager.dispose();
}
private void disposeLayers() {
- for (DrawingToolLayer layer : layerMap.values()) {
- layer.dispose();
+ synchronized (layerMap) {
+ for (DrawingToolLayer layer : layerMap.values()) {
+ layer.dispose();
+ }
+ layerMap.clear();
}
}
diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
index a784573306..b7c92ff443 100644
--- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
+++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/session/CollaborationSessionView.java
@@ -98,7 +98,8 @@ import com.raytheon.viz.ui.input.EditableManager;
* Feb 19, 2014 2751 bclement add change color and transfer leader icons
* Mar 06, 2014 2751 bclement moved users table refresh logic to refreshParticipantList()
* Mar 06, 2014 2848 bclement moved colormanager update code to session container
- * Mar 11, 2014 #2865 lvenable Added null checks in threads
+ * Mar 11, 2014 2865 lvenable Added null checks in threads
+ * Mar 18, 2014 2895 njensen Fix lockAction enable/disable logic
*
*
*
@@ -424,7 +425,11 @@ public class CollaborationSessionView extends SessionView implements
}
if (layer != null && currentResource.isSessionLeader()) {
lockAction.getAction().setEnabled(true);
+ } else {
+ lockAction.getAction().setEnabled(false);
}
+
+ // enable/disable toolbar buttons based on locked
if (layer != null
&& (locked == false || currentResource.isSessionLeader())) {
drawAction.getAction().setEnabled(true);
@@ -458,7 +463,6 @@ public class CollaborationSessionView extends SessionView implements
redoAction.getAction().setEnabled(false);
clearAction.getAction().setEnabled(false);
eraseAction.getAction().setEnabled(false);
- lockAction.getAction().setEnabled(false);
}
getViewSite().getActionBars().getToolBarManager().update(true);
}
@@ -700,6 +704,9 @@ public class CollaborationSessionView extends SessionView implements
@Override
public void remoteDisplayChanged(RemoteDisplay remoteDisplay,
RemoteDisplayChangeType changeType) {
+ // TODO this method has more to do with displays than the view,
+ // would be good to separate it out somehow
+
if (remoteDisplay == null) {
currentDisplay = null;
VizApp.runAsync(actionUpdater);
@@ -848,7 +855,7 @@ public class CollaborationSessionView extends SessionView implements
refreshParticipantList();
}
sendParticipantSystemMessage(event.getNewLeader(),
- " is now leader.");
+ "is now leader.");
updateToolItems();
}
});