Issue #588 fixed resizing of participant canvas
Change-Id: I17e0ce448682291948af7339fa8982e21cf3b220 Former-commit-id:d500f49208
[formerly 544c1226d807308c06037f98cad6ca2b037d69ce] Former-commit-id:21b7735e92
This commit is contained in:
parent
571eca8d57
commit
85f2900333
2 changed files with 39 additions and 30 deletions
|
@ -109,6 +109,8 @@ public class CollaborationResource extends
|
||||||
|
|
||||||
private Set<Integer> waitingOnFrames = new HashSet<Integer>();
|
private Set<Integer> waitingOnFrames = new HashSet<Integer>();
|
||||||
|
|
||||||
|
private Rectangle previousBounds = null;
|
||||||
|
|
||||||
public CollaborationResource(CollaborationResourceData resourceData,
|
public CollaborationResource(CollaborationResourceData resourceData,
|
||||||
LoadProperties loadProperties) {
|
LoadProperties loadProperties) {
|
||||||
super(resourceData, loadProperties);
|
super(resourceData, loadProperties);
|
||||||
|
@ -126,6 +128,15 @@ public class CollaborationResource extends
|
||||||
@Override
|
@Override
|
||||||
protected void paintInternal(IGraphicsTarget target,
|
protected void paintInternal(IGraphicsTarget target,
|
||||||
PaintProperties paintProps) throws VizException {
|
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<AbstractDispatchingObjectEvent> currentDataChangeEvents = new LinkedList<AbstractDispatchingObjectEvent>();
|
List<AbstractDispatchingObjectEvent> currentDataChangeEvents = new LinkedList<AbstractDispatchingObjectEvent>();
|
||||||
synchronized (dataChangeEvents) {
|
synchronized (dataChangeEvents) {
|
||||||
if (waitingOnObjects.size() == 0) {
|
if (waitingOnObjects.size() == 0) {
|
||||||
|
@ -320,9 +331,6 @@ public class CollaborationResource extends
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void renderableArrived(AbstractRemoteGraphicsEvent event) {
|
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) {
|
if (event instanceof IRenderFrameEvent) {
|
||||||
// Skip IRenderFrameEvents, not applicable here
|
// Skip IRenderFrameEvents, not applicable here
|
||||||
return;
|
return;
|
||||||
|
@ -344,32 +352,7 @@ public class CollaborationResource extends
|
||||||
IRenderableDisplay display = descriptor
|
IRenderableDisplay display = descriptor
|
||||||
.getRenderableDisplay();
|
.getRenderableDisplay();
|
||||||
BeginFrameEvent bfe = (BeginFrameEvent) renderable;
|
BeginFrameEvent bfe = (BeginFrameEvent) renderable;
|
||||||
IExtent frameExtent = bfe.getExtent();
|
adjustView(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);
|
|
||||||
display.setBackgroundColor(bfe.getColor());
|
display.setBackgroundColor(bfe.getColor());
|
||||||
} else {
|
} else {
|
||||||
// Add to list for processing in paintInternal
|
// 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)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|
|
@ -56,6 +56,7 @@ public class StringRenderingHandler extends CollaborationRenderingHandler {
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void drawStrings(DrawStringsEvent event) {
|
public void drawStrings(DrawStringsEvent event) {
|
||||||
|
IGraphicsTarget target = getGraphicsTarget();
|
||||||
DrawStringEvent[] events = event.getStrings();
|
DrawStringEvent[] events = event.getStrings();
|
||||||
DrawableString[] strings = new DrawableString[events.length];
|
DrawableString[] strings = new DrawableString[events.length];
|
||||||
for (int i = 0; i < events.length; ++i) {
|
for (int i = 0; i < events.length; ++i) {
|
||||||
|
@ -66,7 +67,7 @@ public class StringRenderingHandler extends CollaborationRenderingHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
getGraphicsTarget().drawStrings(strings);
|
target.drawStrings(strings);
|
||||||
} catch (VizException e) {
|
} catch (VizException e) {
|
||||||
Activator.statusHandler.handle(Priority.PROBLEM,
|
Activator.statusHandler.handle(Priority.PROBLEM,
|
||||||
e.getLocalizedMessage(), e);
|
e.getLocalizedMessage(), e);
|
||||||
|
|
Loading…
Add table
Reference in a new issue