From 21b7735e926a0ac2df3cd7ce932fd253950f65d1 Mon Sep 17 00:00:00 2001 From: Max Schenkelberg Date: Fri, 11 May 2012 14:41:11 -0500 Subject: [PATCH] Issue #588 fixed resizing of participant canvas Change-Id: I17e0ce448682291948af7339fa8982e21cf3b220 Former-commit-id: 544c1226d807308c06037f98cad6ca2b037d69ce --- .../ui/rsc/CollaborationResource.java | 66 +++++++++++-------- .../rsc/rendering/StringRenderingHandler.java | 3 +- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java index bd7121cb22..3eea37f418 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/CollaborationResource.java @@ -109,6 +109,8 @@ public class CollaborationResource extends private Set waitingOnFrames = new HashSet(); + private Rectangle previousBounds = null; + public CollaborationResource(CollaborationResourceData resourceData, LoadProperties loadProperties) { super(resourceData, loadProperties); @@ -126,6 +128,15 @@ public class CollaborationResource extends @Override protected void paintInternal(IGraphicsTarget target, PaintProperties paintProps) throws VizException { + if (previousBounds == null + || previousBounds.equals(paintProps.getCanvasBounds()) == false) { + if (previousBounds != null && providerWindow != null) { + adjustView(providerWindow); + } + previousBounds = paintProps.getCanvasBounds(); + issueRefresh(); + return; + } List currentDataChangeEvents = new LinkedList(); synchronized (dataChangeEvents) { if (waitingOnObjects.size() == 0) { @@ -320,9 +331,6 @@ public class CollaborationResource extends @Subscribe public void renderableArrived(AbstractRemoteGraphicsEvent event) { - // TODO: May need to allow for adding objects to the data manager for an - // objectId and creation events should put a flag that a creation event - // was received for the object if (event instanceof IRenderFrameEvent) { // Skip IRenderFrameEvents, not applicable here return; @@ -344,32 +352,7 @@ public class CollaborationResource extends IRenderableDisplay display = descriptor .getRenderableDisplay(); BeginFrameEvent bfe = (BeginFrameEvent) renderable; - IExtent frameExtent = bfe.getExtent(); - providerWindow = frameExtent; - Rectangle bounds = display.getBounds(); - double width = frameExtent.getWidth(); - double height = frameExtent.getHeight(); - if (width / height > bounds.width - / (double) bounds.height) { - double neededHeight = (width / bounds.width) - * bounds.height; - double padding = (neededHeight - height) / 2; - frameExtent = new PixelExtent( - frameExtent.getMinX(), - frameExtent.getMaxX(), - frameExtent.getMinY() - padding, - frameExtent.getMaxY() + padding); - } else { - double neededWidth = (height / bounds.height) - * bounds.width; - double padding = (neededWidth - width) / 2; - frameExtent = new PixelExtent( - frameExtent.getMinX() - padding, - frameExtent.getMaxX() + padding, - frameExtent.getMinY(), - frameExtent.getMaxY()); - } - display.getView().setExtent(frameExtent); + adjustView(bfe.getExtent()); display.setBackgroundColor(bfe.getColor()); } else { // Add to list for processing in paintInternal @@ -398,6 +381,31 @@ public class CollaborationResource extends } } + /** + * @param frameExtent + */ + private void adjustView(IExtent frameExtent) { + IRenderableDisplay display = descriptor.getRenderableDisplay(); + providerWindow = frameExtent; + Rectangle bounds = display.getBounds(); + double width = frameExtent.getWidth(); + double height = frameExtent.getHeight(); + if (width / height > bounds.width / (double) bounds.height) { + double neededHeight = (width / bounds.width) * bounds.height; + double padding = (neededHeight - height) / 2; + frameExtent = new PixelExtent(frameExtent.getMinX(), + frameExtent.getMaxX(), frameExtent.getMinY() - padding, + frameExtent.getMaxY() + padding); + } else { + double neededWidth = (height / bounds.height) * bounds.width; + double padding = (neededWidth - width) / 2; + frameExtent = new PixelExtent(frameExtent.getMinX() - padding, + frameExtent.getMaxX() + padding, frameExtent.getMinY(), + frameExtent.getMaxY()); + } + display.getView().setExtent(frameExtent); + } + /* * (non-Javadoc) * diff --git a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/StringRenderingHandler.java b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/StringRenderingHandler.java index 7ffbb79d4a..60de76ded1 100644 --- a/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/StringRenderingHandler.java +++ b/cave/com.raytheon.uf.viz.collaboration.ui/src/com/raytheon/uf/viz/collaboration/ui/rsc/rendering/StringRenderingHandler.java @@ -56,6 +56,7 @@ public class StringRenderingHandler extends CollaborationRenderingHandler { @Subscribe public void drawStrings(DrawStringsEvent event) { + IGraphicsTarget target = getGraphicsTarget(); DrawStringEvent[] events = event.getStrings(); DrawableString[] strings = new DrawableString[events.length]; for (int i = 0; i < events.length; ++i) { @@ -66,7 +67,7 @@ public class StringRenderingHandler extends CollaborationRenderingHandler { } } try { - getGraphicsTarget().drawStrings(strings); + target.drawStrings(strings); } catch (VizException e) { Activator.statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);