diff --git a/cave/com.raytheon.uf.viz.collaboration.display/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.collaboration.display/META-INF/MANIFEST.MF index 8030aaf2ce..d321c459ce 100644 --- a/cave/com.raytheon.uf.viz.collaboration.display/META-INF/MANIFEST.MF +++ b/cave/com.raytheon.uf.viz.collaboration.display/META-INF/MANIFEST.MF @@ -20,7 +20,8 @@ Require-Bundle: org.eclipse.core.runtime, com.raytheon.uf.common.geospatial, com.raytheon.uf.common.util, com.raytheon.viz.core, - com.raytheon.uf.common.http + com.raytheon.uf.common.http, + com.raytheon.uf.viz.core.maps;bundle-version="1.14.1" Export-Package: com.raytheon.uf.viz.collaboration.display, com.raytheon.uf.viz.collaboration.display.data, com.raytheon.uf.viz.collaboration.display.editor, diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/DataProviderEventController.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/DataProviderEventController.java index b9a2a5d38a..d4a337a0e9 100644 --- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/DataProviderEventController.java +++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/DataProviderEventController.java @@ -56,6 +56,7 @@ import com.raytheon.viz.ui.editor.AbstractEditor; * Feb 13, 2014 2751 bclement VenueParticipant refactor * Feb 13, 2014 2751 njensen Renamed container to displayContainer * Mar 06, 2014 2848 bclement removed check for self from participantChanged + * Jan 06, 2014 3933 bclement added check for ability to share editor on startup * * * @@ -125,7 +126,7 @@ public class DataProviderEventController extends super.startup(); AbstractEditor active = EditorUtil .getActiveEditorAs(AbstractEditor.class); - if (active != null + if (active != null && SharedEditorsManager.canBeShared(active) && SharedEditorsManager.isBeingShared(active) == false) { try { displayContainer.shareEditor(active); diff --git a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/dataprovider/SharedEditorsManager.java b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/dataprovider/SharedEditorsManager.java index c236fa4f06..8f8b938ff5 100644 --- a/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/dataprovider/SharedEditorsManager.java +++ b/cave/com.raytheon.uf.viz.collaboration.display/src/com/raytheon/uf/viz/collaboration/display/roles/dataprovider/SharedEditorsManager.java @@ -58,6 +58,7 @@ import com.raytheon.uf.viz.core.drawables.AbstractRenderableDisplay; import com.raytheon.uf.viz.core.drawables.IRenderableDisplay; import com.raytheon.uf.viz.core.drawables.ResourcePair; import com.raytheon.uf.viz.core.exception.VizException; +import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; import com.raytheon.uf.viz.core.rsc.AbstractResourceData; import com.raytheon.uf.viz.core.rsc.ResourceList; import com.raytheon.uf.viz.core.rsc.ResourceList.AddListener; @@ -66,6 +67,7 @@ import com.raytheon.uf.viz.remote.graphics.DispatcherFactory; import com.raytheon.uf.viz.remote.graphics.DispatchingGraphicsFactory; import com.raytheon.viz.ui.EditorUtil; import com.raytheon.viz.ui.editor.AbstractEditor; +import com.raytheon.viz.ui.editor.IMultiPaneEditor; /** * Manager class for managing the sharing of editors in an @@ -82,6 +84,7 @@ import com.raytheon.viz.ui.editor.AbstractEditor; * Feb 13, 2014 2751 bclement VenueParticipant refactor * Mar 06, 2014 2848 bclement only send to venue if non empty * May 14, 2014 2697 bsteffen Do not use local maps by default. + * Jan 06, 2014 3933 bclement added canBeShared() * * * @@ -418,6 +421,20 @@ public class SharedEditorsManager implements IRemoteDisplayContainer { return allSharedEditors.contains(editor); } + /** + * @param ed + * @return true if the editor can be shared in a session + */ + public static boolean canBeShared(AbstractEditor ed) { + IDisplayPane pane = ed.getActiveDisplayPane(); + IRenderableDisplay display = pane.getRenderableDisplay(); + IDisplayPaneContainer container = display.getContainer(); + boolean isMapDisplay = display instanceof MapRenderableDisplay; + boolean hasMultiplePanes = container instanceof IMultiPaneEditor + && ((IMultiPaneEditor) container).getNumberofPanes() > 1; + return (isMapDisplay && !hasMultiplePanes); + } + public static boolean isBeingShared(IRenderableDisplay display) { return getSharedDisplayId(display) != -1; } diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java index db3789faf9..29be5151ee 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/CreateSessionDialog.java @@ -68,14 +68,9 @@ import com.raytheon.uf.viz.collaboration.display.roles.dataprovider.SharedEditor import com.raytheon.uf.viz.collaboration.ui.editor.CollaborationEditor; import com.raytheon.uf.viz.collaboration.ui.prefs.CollabPrefConstants; import com.raytheon.uf.viz.collaboration.ui.prefs.HandleUtil; -import com.raytheon.uf.viz.core.IDisplayPane; -import com.raytheon.uf.viz.core.IDisplayPaneContainer; -import com.raytheon.uf.viz.core.drawables.IRenderableDisplay; -import com.raytheon.uf.viz.core.maps.display.MapRenderableDisplay; import com.raytheon.viz.ui.EditorUtil; import com.raytheon.viz.ui.dialogs.CaveSWTDialog; import com.raytheon.viz.ui.editor.AbstractEditor; -import com.raytheon.viz.ui.editor.IMultiPaneEditor; /** * Collaboration creation dialog for sessions. @@ -97,6 +92,7 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor; * Apr 16, 2014 3021 bclement increased width of dialog * Apr 22, 2014 3056 bclement made room name lowercase to match xmpp server * Jun 16, 2014 3288 bclement added call to get full venue ID for chosen name + * Jan 06, 2014 3933 bclement moved logic to check for editor shareability to SharedEditorsmanager * * * @@ -287,17 +283,11 @@ public class CreateSessionDialog extends CaveSWTDialog { } private static boolean isShareable(IWorkbenchPart part) { + boolean rval = false; if (part instanceof AbstractEditor) { - AbstractEditor ed = (AbstractEditor) part; - IDisplayPane pane = ed.getActiveDisplayPane(); - IRenderableDisplay display = pane.getRenderableDisplay(); - IDisplayPaneContainer container = display.getContainer(); - boolean isMapDisplay = display instanceof MapRenderableDisplay; - boolean hasMultiplePanes = container instanceof IMultiPaneEditor - && ((IMultiPaneEditor) container).getNumberofPanes() > 1; - return (isMapDisplay && !hasMultiplePanes); + rval = SharedEditorsManager.canBeShared((AbstractEditor) part); } - return false; + return rval; } private void updateSharedSessionDisplay() { diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/ShareEditorAction.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/ShareEditorAction.java index dadf3da543..312ae63a3c 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/ShareEditorAction.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/actions/ShareEditorAction.java @@ -54,6 +54,7 @@ import com.raytheon.viz.ui.editor.AbstractEditor; * Jan 28, 2014 2698 bclement removed venue info * Feb 11, 2014 2751 njensen Fixed scary == * Mar 06, 2014 2848 bclement get venueName directly from session + * Jan 06, 2014 3933 bclement added check for ability to share editor * * * @@ -167,7 +168,7 @@ public class ShareEditorAction extends ContributedEditorMenuAction implements private AbstractEditor getActiveSharableEditor() { AbstractEditor editor = EditorUtil .getActiveEditorAs(AbstractEditor.class); - if (editor != null + if (editor != null && SharedEditorsManager.canBeShared(editor) && SharedEditorsManager.isBeingShared(editor) == false) { return editor; }