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(); } });