From a99fd8dbbb035cafd5940f3e38a0d2e65542cbf3 Mon Sep 17 00:00:00 2001 From: Nate Jensen Date: Tue, 18 Mar 2014 12:52:01 -0500 Subject: [PATCH] Issue #2895 fixed telestration when leadership returns to a previous leader Change-Id: Ie61adbe281b6920db994e1e30a3cbe621a1d5033 Former-commit-id: 1447abe9954cacfc298d87d154b125ec9eb271dc [formerly 68b60eba4763fa47b3a8ec20db95940c5acbce94] [formerly e75d3dfb7c9aa6aecaec83d1f4d6a8789cca0d58] [formerly 1447abe9954cacfc298d87d154b125ec9eb271dc [formerly 68b60eba4763fa47b3a8ec20db95940c5acbce94] [formerly e75d3dfb7c9aa6aecaec83d1f4d6a8789cca0d58] [formerly 2fc1030fad26f0bc6995495fa916fbe7e4b65b21 [formerly e75d3dfb7c9aa6aecaec83d1f4d6a8789cca0d58 [formerly 8a0f86ebb2f659e55afc39cb6cf4bb4bdfb857b0]]]] Former-commit-id: 2fc1030fad26f0bc6995495fa916fbe7e4b65b21 Former-commit-id: 52e60a68a999a874469d9c8c9e185a2638d96d35 [formerly 8589374171d48031a18bab7d50bb565b5041d2f0] [formerly 389d920f6cf85e74cfa2b1864b84d9f952b0b23a [formerly ca1ec93450df84d6a88c07eb388869d72fc196e7]] Former-commit-id: 2113aab9642e8adaee09df90029c31ddc9b73949 [formerly 5cb38bd5117f45077ebea1554b0fa1d2787e794f] Former-commit-id: 1125203c93f505cc631192e948ea1147ec6d44b0 --- .../display/data/SessionContainer.java | 6 +++++- .../roles/AbstractRoleEventController.java | 10 +++++++++- .../telestrator/CollaborationDrawingResource.java | 15 +++++++++------ .../ui/session/CollaborationSessionView.java | 13 ++++++++++--- 4 files changed, 33 insertions(+), 11 deletions(-) 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(); } });