Issue #588 Made Canvas sizes stay in sync to fix text size issues
Change-Id: I1a9bff16168eda355850d47983fe479853e2e907 Former-commit-id:c7ea0894bb
[formerly 8b6bb90e6ba0f1b21e78594ff3b3604924662138] Former-commit-id:fdbd626715
This commit is contained in:
parent
01f852004b
commit
d44ba58859
9 changed files with 309 additions and 78 deletions
|
@ -19,7 +19,19 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.collaboration.display.editor;
|
package com.raytheon.uf.viz.collaboration.display.editor;
|
||||||
|
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.custom.ScrolledComposite;
|
||||||
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Event;
|
||||||
|
import org.eclipse.swt.widgets.Listener;
|
||||||
|
import org.eclipse.swt.widgets.ScrollBar;
|
||||||
|
|
||||||
import com.raytheon.uf.viz.collaboration.display.editor.input.CollaborationInputHandler;
|
import com.raytheon.uf.viz.collaboration.display.editor.input.CollaborationInputHandler;
|
||||||
|
import com.raytheon.uf.viz.core.IDisplayPane;
|
||||||
|
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
|
||||||
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
import com.raytheon.uf.viz.core.rsc.IInputHandler;
|
||||||
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
||||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||||
|
@ -50,11 +62,48 @@ public class CollaborationEditor extends AbstractEditor {
|
||||||
|
|
||||||
private String sessionId;
|
private String sessionId;
|
||||||
|
|
||||||
|
private Composite canvasComp;
|
||||||
|
|
||||||
|
private ScrolledComposite scrollable;
|
||||||
|
|
||||||
private CollaborationInputHandler inputHandler = new CollaborationInputHandler();
|
private CollaborationInputHandler inputHandler = new CollaborationInputHandler();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PaneManager getNewPaneManager() {
|
protected PaneManager getNewPaneManager() {
|
||||||
return new PaneManager();
|
return new PaneManager() {
|
||||||
|
@Override
|
||||||
|
public IDisplayPane addPane(IRenderableDisplay renderableDisplay) {
|
||||||
|
// // scrollable composite
|
||||||
|
scrollable = new ScrolledComposite(composite, SWT.H_SCROLL
|
||||||
|
| SWT.V_SCROLL);
|
||||||
|
scrollable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
|
||||||
|
true));
|
||||||
|
// Sets background color of scrollable composite to white
|
||||||
|
scrollable.setBackground(scrollable.getDisplay()
|
||||||
|
.getSystemColor(SWT.COLOR_WHITE));
|
||||||
|
|
||||||
|
// Composite for canvas (fixed size)
|
||||||
|
canvasComp = new Composite(scrollable, SWT.NONE);
|
||||||
|
GridLayout gl = new GridLayout(1, false);
|
||||||
|
gl.marginHeight = 0;
|
||||||
|
gl.marginWidth = 0;
|
||||||
|
canvasComp.setLayout(gl);
|
||||||
|
canvasComp.setSize(1000, 1000);
|
||||||
|
|
||||||
|
// Set canvasComp as content on scrollable
|
||||||
|
scrollable.setContent(canvasComp);
|
||||||
|
scrollable.addListener(SWT.Resize, new Listener() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(Event event) {
|
||||||
|
setCanvasSize(canvasComp.getBounds());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
IDisplayPane pane = addPane(renderableDisplay, canvasComp);
|
||||||
|
canvasComp.layout();
|
||||||
|
return pane;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -80,4 +129,24 @@ public class CollaborationEditor extends AbstractEditor {
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCanvasSize(Rectangle bounds) {
|
||||||
|
canvasComp.setSize(bounds.width, bounds.height);
|
||||||
|
|
||||||
|
// This code centers the GLCanvas in the scrollable composite
|
||||||
|
ScrollBar vertical = scrollable.getVerticalBar();
|
||||||
|
ScrollBar horizon = scrollable.getHorizontalBar();
|
||||||
|
Rectangle scrollableBounds = scrollable.getBounds();
|
||||||
|
if (vertical.isVisible()) {
|
||||||
|
scrollableBounds.width -= vertical.getSize().x;
|
||||||
|
}
|
||||||
|
if (horizon.isVisible()) {
|
||||||
|
scrollableBounds.height -= horizon.getSize().y;
|
||||||
|
}
|
||||||
|
|
||||||
|
canvasComp.setLocation(
|
||||||
|
Math.max(0, (scrollableBounds.width - bounds.width) / 2),
|
||||||
|
Math.max(0, (scrollableBounds.height - bounds.height) / 2));
|
||||||
|
canvasComp.layout();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.IRenderFrame
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.MouseLocationEvent;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.MouseLocationEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrame;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrame;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrameNeededEvent;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrameNeededEvent;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.rsc.ParticipantInitializedEvent;
|
||||||
import com.raytheon.uf.viz.core.IDisplayPane;
|
import com.raytheon.uf.viz.core.IDisplayPane;
|
||||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
||||||
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
|
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
|
||||||
|
@ -151,10 +152,17 @@ public class CollaborationDispatcher extends Dispatcher {
|
||||||
// Remove and dispose to reset frame
|
// Remove and dispose to reset frame
|
||||||
previousFrames.remove(needed);
|
previousFrames.remove(needed);
|
||||||
needed.dispose();
|
needed.dispose();
|
||||||
|
display.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void handleParticipantInitialized(ParticipantInitializedEvent event) {
|
||||||
|
// Force repaint when participant initializes
|
||||||
|
display.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
|
|
@ -27,7 +27,6 @@ import java.util.Set;
|
||||||
|
|
||||||
import org.eclipse.jface.action.Action;
|
import org.eclipse.jface.action.Action;
|
||||||
import org.eclipse.jface.action.IMenuManager;
|
import org.eclipse.jface.action.IMenuManager;
|
||||||
import org.eclipse.swt.graphics.RGB;
|
|
||||||
import org.eclipse.swt.graphics.Rectangle;
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
|
|
||||||
import com.google.common.eventbus.EventBus;
|
import com.google.common.eventbus.EventBus;
|
||||||
|
@ -35,6 +34,8 @@ import com.google.common.eventbus.Subscribe;
|
||||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
|
import com.raytheon.uf.viz.collaboration.comm.identity.CollaborationException;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
||||||
|
import com.raytheon.uf.viz.collaboration.data.SharedDisplaySessionMgr;
|
||||||
|
import com.raytheon.uf.viz.collaboration.display.editor.CollaborationEditor;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
import com.raytheon.uf.viz.collaboration.ui.Activator;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.FrameDisposed;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.FrameDisposed;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.IPersistedEvent;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.IPersistedEvent;
|
||||||
|
@ -45,9 +46,8 @@ import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.RenderFrameN
|
||||||
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.UpdateRenderFrameEvent;
|
import com.raytheon.uf.viz.collaboration.ui.role.dataprovider.event.UpdateRenderFrameEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingDataManager;
|
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingDataManager;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingHandler;
|
import com.raytheon.uf.viz.collaboration.ui.rsc.rendering.CollaborationRenderingHandler;
|
||||||
import com.raytheon.uf.viz.core.IExtent;
|
|
||||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||||
import com.raytheon.uf.viz.core.PixelExtent;
|
import com.raytheon.uf.viz.core.VizApp;
|
||||||
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
||||||
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
|
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||||
|
@ -103,8 +103,6 @@ public class CollaborationResource extends
|
||||||
|
|
||||||
private MouseLocationEvent latestMouseLocation;
|
private MouseLocationEvent latestMouseLocation;
|
||||||
|
|
||||||
private IExtent providerWindow;
|
|
||||||
|
|
||||||
private Set<Integer> waitingOnObjects = new HashSet<Integer>();
|
private Set<Integer> waitingOnObjects = new HashSet<Integer>();
|
||||||
|
|
||||||
private Set<Integer> waitingOnFrames = new HashSet<Integer>();
|
private Set<Integer> waitingOnFrames = new HashSet<Integer>();
|
||||||
|
@ -128,15 +126,6 @@ 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) {
|
||||||
|
@ -152,16 +141,6 @@ public class CollaborationResource extends
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (providerWindow != null) {
|
|
||||||
IExtent clippingPane = paintProps.getClippingPane();
|
|
||||||
clippingPane = new PixelExtent(Math.max(providerWindow.getMinX(),
|
|
||||||
clippingPane.getMinX()), Math.min(providerWindow.getMaxX(),
|
|
||||||
clippingPane.getMaxX()), Math.max(providerWindow.getMinY(),
|
|
||||||
clippingPane.getMinY()), Math.min(providerWindow.getMaxY(),
|
|
||||||
clippingPane.getMaxY()));
|
|
||||||
paintProps.setClippingPane(clippingPane);
|
|
||||||
}
|
|
||||||
|
|
||||||
dataManager.beginRender(target, paintProps);
|
dataManager.beginRender(target, paintProps);
|
||||||
|
|
||||||
List<IRenderEvent> toRender = new LinkedList<IRenderEvent>();
|
List<IRenderEvent> toRender = new LinkedList<IRenderEvent>();
|
||||||
|
@ -181,29 +160,6 @@ public class CollaborationResource extends
|
||||||
renderingRouter.post(latestMouseLocation);
|
renderingRouter.post(latestMouseLocation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (providerWindow != null) {
|
|
||||||
// Render yellow box to show data provider visible area
|
|
||||||
target.clearClippingPlane();
|
|
||||||
IExtent currExtent = paintProps.getView().getExtent();
|
|
||||||
float size = 1.0f;
|
|
||||||
double xOffset = size
|
|
||||||
* (currExtent.getWidth() / paintProps.getCanvasBounds().width);
|
|
||||||
double yOffset = size
|
|
||||||
* (currExtent.getHeight() / paintProps.getCanvasBounds().height);
|
|
||||||
double minX = Math.max(currExtent.getMinX(),
|
|
||||||
providerWindow.getMinX());
|
|
||||||
double maxX = Math.min(currExtent.getMaxX(),
|
|
||||||
providerWindow.getMaxX());
|
|
||||||
double minY = Math.max(currExtent.getMinY(),
|
|
||||||
providerWindow.getMinY());
|
|
||||||
double maxY = Math.min(currExtent.getMaxY(),
|
|
||||||
providerWindow.getMaxY());
|
|
||||||
target.drawRect(new PixelExtent(minX - xOffset, maxX + xOffset,
|
|
||||||
minY - yOffset, maxY + yOffset), new RGB(255, 255, 0),
|
|
||||||
size + 1, 1.0f);
|
|
||||||
target.setupClippingPlane(paintProps.getClippingPane());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void lockObject(int objectId) {
|
public void lockObject(int objectId) {
|
||||||
|
@ -227,10 +183,24 @@ public class CollaborationResource extends
|
||||||
.createRenderingHandlers(dataManager)) {
|
.createRenderingHandlers(dataManager)) {
|
||||||
renderingRouter.register(handler);
|
renderingRouter.register(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ISharedDisplaySession session = resourceData.getSession();
|
||||||
|
ParticipantInitializedEvent event = new ParticipantInitializedEvent();
|
||||||
|
event.setUserId(session.getUserID().getFQName());
|
||||||
|
try {
|
||||||
|
session.sendObjectToPeer(session.getCurrentDataProvider(), event);
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
Activator.statusHandler.handle(Priority.PROBLEM,
|
||||||
|
e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void updateRenderFrameEvent(UpdateRenderFrameEvent event) {
|
public void updateRenderFrameEvent(UpdateRenderFrameEvent event) {
|
||||||
|
if (dataManager == null) {
|
||||||
|
// Haven't initialized yet, don't process
|
||||||
|
return;
|
||||||
|
}
|
||||||
int objectId = event.getObjectId();
|
int objectId = event.getObjectId();
|
||||||
RenderFrameEvent frame = dataManager.getRenderableObject(objectId,
|
RenderFrameEvent frame = dataManager.getRenderableObject(objectId,
|
||||||
RenderFrameEvent.class, false);
|
RenderFrameEvent.class, false);
|
||||||
|
@ -349,11 +319,29 @@ public class CollaborationResource extends
|
||||||
if (renderable instanceof BeginFrameEvent) {
|
if (renderable instanceof BeginFrameEvent) {
|
||||||
// Handle begin frame event immediately before next
|
// Handle begin frame event immediately before next
|
||||||
// paint occurs
|
// paint occurs
|
||||||
IRenderableDisplay display = descriptor
|
final IRenderableDisplay display = descriptor
|
||||||
.getRenderableDisplay();
|
.getRenderableDisplay();
|
||||||
BeginFrameEvent bfe = (BeginFrameEvent) renderable;
|
final BeginFrameEvent bfe = (BeginFrameEvent) renderable;
|
||||||
adjustView(bfe.getExtent());
|
|
||||||
display.setBackgroundColor(bfe.getColor());
|
display.setBackgroundColor(bfe.getColor());
|
||||||
|
final CollaborationEditor editor = SharedDisplaySessionMgr
|
||||||
|
.getSessionContainer(
|
||||||
|
resourceData.getSession()
|
||||||
|
.getSessionId())
|
||||||
|
.getCollaborationEditor();
|
||||||
|
if (previousBounds == null
|
||||||
|
|| previousBounds.equals(bfe.getBounds()) == false) {
|
||||||
|
previousBounds = bfe.getBounds();
|
||||||
|
VizApp.runAsync(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
editor.setCanvasSize(bfe.getBounds());
|
||||||
|
display.getView().setExtent(
|
||||||
|
bfe.getExtent());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
display.getView().setExtent(bfe.getExtent());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Add to list for processing in paintInternal
|
// Add to list for processing in paintInternal
|
||||||
currentRenderables.add(renderable);
|
currentRenderables.add(renderable);
|
||||||
|
@ -381,31 +369,6 @@ 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)
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
/**
|
||||||
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
|
*
|
||||||
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
|
* This software product contains export-restricted data whose
|
||||||
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
|
* an export license or other authorization.
|
||||||
|
*
|
||||||
|
* Contractor Name: Raytheon Company
|
||||||
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
|
* Mail Stop B8
|
||||||
|
* Omaha, NE 68106
|
||||||
|
* 402.291.0100
|
||||||
|
*
|
||||||
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
|
* further licensing information.
|
||||||
|
**/
|
||||||
|
package com.raytheon.uf.viz.collaboration.ui.rsc;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||||
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event stating the participant has initialized and is ready for rendering
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* May 14, 2012 mschenke Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author mschenke
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
@DynamicSerialize
|
||||||
|
public class ParticipantInitializedEvent {
|
||||||
|
|
||||||
|
@DynamicSerializeElement
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the userId
|
||||||
|
*/
|
||||||
|
public String getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param userId
|
||||||
|
* the userId to set
|
||||||
|
*/
|
||||||
|
public void setUserId(String userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package com.raytheon.uf.viz.remote.graphics;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||||
import org.osgi.framework.BundleContext;
|
import org.osgi.framework.BundleContext;
|
||||||
|
|
||||||
|
@ -12,6 +13,7 @@ import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.raytheon.uf.viz.core.PixelExtent;
|
import com.raytheon.uf.viz.core.PixelExtent;
|
||||||
import com.raytheon.uf.viz.remote.graphics.adapters.PixelExtentSerializationAdapter;
|
import com.raytheon.uf.viz.remote.graphics.adapters.PixelExtentSerializationAdapter;
|
||||||
import com.raytheon.uf.viz.remote.graphics.adapters.RGBSerializationAdapter;
|
import com.raytheon.uf.viz.remote.graphics.adapters.RGBSerializationAdapter;
|
||||||
|
import com.raytheon.uf.viz.remote.graphics.adapters.RectangleAdapter;
|
||||||
import com.raytheon.uf.viz.remote.graphics.adapters.RenderedImageAdapter;
|
import com.raytheon.uf.viz.remote.graphics.adapters.RenderedImageAdapter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,6 +52,8 @@ public class Activator extends AbstractUIPlugin {
|
||||||
new RGBSerializationAdapter());
|
new RGBSerializationAdapter());
|
||||||
DynamicSerializationManager.registerAdapter(BufferedImage.class,
|
DynamicSerializationManager.registerAdapter(BufferedImage.class,
|
||||||
new RenderedImageAdapter());
|
new RenderedImageAdapter());
|
||||||
|
DynamicSerializationManager.registerAdapter(Rectangle.class,
|
||||||
|
new RectangleAdapter());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -29,7 +29,12 @@ import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
|
import org.eclipse.swt.widgets.Canvas;
|
||||||
|
import org.eclipse.swt.widgets.Event;
|
||||||
|
import org.eclipse.swt.widgets.Listener;
|
||||||
import org.geotools.coverage.grid.GeneralGridGeometry;
|
import org.geotools.coverage.grid.GeneralGridGeometry;
|
||||||
|
|
||||||
import com.raytheon.uf.common.colormap.IColorMap;
|
import com.raytheon.uf.common.colormap.IColorMap;
|
||||||
|
@ -116,9 +121,19 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
||||||
|
|
||||||
private GraphicsExtensionManager extensionManager;
|
private GraphicsExtensionManager extensionManager;
|
||||||
|
|
||||||
public DispatchGraphicsTarget(IGraphicsTarget target, Dispatcher dispatcher) {
|
private Rectangle bounds;
|
||||||
|
|
||||||
|
public DispatchGraphicsTarget(IGraphicsTarget target, Canvas canvas,
|
||||||
|
Dispatcher dispatcher) {
|
||||||
super(target, dispatcher);
|
super(target, dispatcher);
|
||||||
extensionManager = new GraphicsExtensionManager(this);
|
extensionManager = new GraphicsExtensionManager(this);
|
||||||
|
bounds = canvas.getBounds();
|
||||||
|
canvas.addListener(SWT.Resize, new Listener() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(Event event) {
|
||||||
|
bounds = ((Canvas) event.widget).getBounds();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -806,6 +821,7 @@ public class DispatchGraphicsTarget extends DispatchingObject<IGraphicsTarget>
|
||||||
BeginFrameEvent.class, this);
|
BeginFrameEvent.class, this);
|
||||||
beginFrame.setExtent(view.getExtent().clone());
|
beginFrame.setExtent(view.getExtent().clone());
|
||||||
beginFrame.setColor(backgroundColor);
|
beginFrame.setColor(backgroundColor);
|
||||||
|
beginFrame.setBounds(bounds);
|
||||||
dispatch(beginFrame);
|
dispatch(beginFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class DispatchingGraphicsFactory extends AbstractGraphicsFactoryAdapter {
|
||||||
public IGraphicsTarget constructTarget(Canvas canvas, float width,
|
public IGraphicsTarget constructTarget(Canvas canvas, float width,
|
||||||
float height) throws VizException {
|
float height) throws VizException {
|
||||||
return new DispatchGraphicsTarget(delegate.constructTarget(canvas,
|
return new DispatchGraphicsTarget(delegate.constructTarget(canvas,
|
||||||
width, height), dispatcher);
|
width, height), canvas, dispatcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/**
|
||||||
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
|
*
|
||||||
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
|
* This software product contains export-restricted data whose
|
||||||
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
|
* an export license or other authorization.
|
||||||
|
*
|
||||||
|
* Contractor Name: Raytheon Company
|
||||||
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
|
* Mail Stop B8
|
||||||
|
* Omaha, NE 68106
|
||||||
|
* 402.291.0100
|
||||||
|
*
|
||||||
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
|
* further licensing information.
|
||||||
|
**/
|
||||||
|
package com.raytheon.uf.viz.remote.graphics.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.serialization.IDeserializationContext;
|
||||||
|
import com.raytheon.uf.common.serialization.ISerializationContext;
|
||||||
|
import com.raytheon.uf.common.serialization.ISerializationTypeAdapter;
|
||||||
|
import com.raytheon.uf.common.serialization.SerializationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapter for swt Rectangle object
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* May 14, 2012 mschenke Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author mschenke
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class RectangleAdapter implements ISerializationTypeAdapter<Rectangle> {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.raytheon.uf.common.serialization.ISerializationTypeAdapter#serialize
|
||||||
|
* (com.raytheon.uf.common.serialization.ISerializationContext,
|
||||||
|
* java.lang.Object)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void serialize(ISerializationContext serializer, Rectangle object)
|
||||||
|
throws SerializationException {
|
||||||
|
serializer.writeI32(object.x);
|
||||||
|
serializer.writeI32(object.y);
|
||||||
|
serializer.writeI32(object.width);
|
||||||
|
serializer.writeI32(object.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.raytheon.uf.common.serialization.ISerializationTypeAdapter#deserialize
|
||||||
|
* (com.raytheon.uf.common.serialization.IDeserializationContext)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Rectangle deserialize(IDeserializationContext deserializer)
|
||||||
|
throws SerializationException {
|
||||||
|
return new Rectangle(deserializer.readI32(), deserializer.readI32(),
|
||||||
|
deserializer.readI32(), deserializer.readI32());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -20,6 +20,7 @@
|
||||||
package com.raytheon.uf.viz.remote.graphics.events.rendering;
|
package com.raytheon.uf.viz.remote.graphics.events.rendering;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
import org.eclipse.swt.graphics.Rectangle;
|
||||||
|
|
||||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||||
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||||
|
@ -51,6 +52,9 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||||
@DynamicSerializeElement
|
@DynamicSerializeElement
|
||||||
private RGB color;
|
private RGB color;
|
||||||
|
|
||||||
|
@DynamicSerializeElement
|
||||||
|
private Rectangle bounds;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
@ -69,6 +73,9 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||||
if (color.equals(diffEvent.color) == false) {
|
if (color.equals(diffEvent.color) == false) {
|
||||||
diffObject.color = diffEvent.color;
|
diffObject.color = diffEvent.color;
|
||||||
}
|
}
|
||||||
|
if (bounds.equals(diffEvent.bounds) == false) {
|
||||||
|
diffObject.bounds = diffEvent.bounds;
|
||||||
|
}
|
||||||
return diffObject;
|
return diffObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,6 +95,9 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||||
if (event.color != null) {
|
if (event.color != null) {
|
||||||
color = event.color;
|
color = event.color;
|
||||||
}
|
}
|
||||||
|
if (event.bounds != null) {
|
||||||
|
bounds = event.bounds;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -120,6 +130,21 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||||
this.color = color;
|
this.color = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the bounds
|
||||||
|
*/
|
||||||
|
public Rectangle getBounds() {
|
||||||
|
return bounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bounds
|
||||||
|
* the bounds to set
|
||||||
|
*/
|
||||||
|
public void setBounds(Rectangle bounds) {
|
||||||
|
this.bounds = bounds;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
@ -134,6 +159,11 @@ public class BeginFrameEvent extends AbstractRemoteGraphicsRenderEvent {
|
||||||
if (getClass() != obj.getClass())
|
if (getClass() != obj.getClass())
|
||||||
return false;
|
return false;
|
||||||
BeginFrameEvent other = (BeginFrameEvent) obj;
|
BeginFrameEvent other = (BeginFrameEvent) obj;
|
||||||
|
if (bounds == null) {
|
||||||
|
if (other.bounds != null)
|
||||||
|
return false;
|
||||||
|
} else if (!bounds.equals(other.bounds))
|
||||||
|
return false;
|
||||||
if (color == null) {
|
if (color == null) {
|
||||||
if (other.color != null)
|
if (other.color != null)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue