Issue #429 working telestration collaboration capabilities
Former-commit-id:86e2f1a7ad
[formerly3c2fcc59d0
] [formerly86e2f1a7ad
[formerly3c2fcc59d0
] [formerlyc27a3cf672
[formerly f1c9552a757e7d194e31ed9786cb358c53e631b7]]] Former-commit-id:c27a3cf672
Former-commit-id:a7544fadf9
[formerly28df06150e
] Former-commit-id:64ef004e78
This commit is contained in:
parent
d5bf79f20d
commit
0e37e6938f
15 changed files with 384 additions and 151 deletions
|
@ -22,6 +22,7 @@ package com.raytheon.uf.viz.collaboration.ui.role;
|
||||||
import com.google.common.eventbus.Subscribe;
|
import com.google.common.eventbus.Subscribe;
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.event.IInitData;
|
import com.raytheon.uf.viz.collaboration.comm.identity.event.IInitData;
|
||||||
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
|
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
|
||||||
|
@ -29,9 +30,13 @@ import com.raytheon.uf.viz.collaboration.ui.editor.CollaborationEditor;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.editor.CollaborationEditorInputHandler;
|
import com.raytheon.uf.viz.collaboration.ui.editor.CollaborationEditorInputHandler;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.editor.EditorSetup;
|
import com.raytheon.uf.viz.collaboration.ui.editor.EditorSetup;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.editor.SharedEditor;
|
import com.raytheon.uf.viz.collaboration.ui.editor.SharedEditor;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.CollaborationPathDrawingResourceData;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.CollaborationPathToolbar;
|
||||||
import com.raytheon.uf.viz.core.VizApp;
|
import com.raytheon.uf.viz.core.VizApp;
|
||||||
|
import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
|
||||||
import com.raytheon.uf.viz.drawing.PathToolbar;
|
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||||
|
import com.raytheon.uf.viz.drawing.PathDrawingResourceData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles the events of a session that are specific to the Participant role.
|
* Handles the events of a session that are specific to the Participant role.
|
||||||
|
@ -74,6 +79,23 @@ public class ParticipantEventController extends AbstractRoleEventController {
|
||||||
InputPriority.SYSTEM_RESOURCE);
|
InputPriority.SYSTEM_RESOURCE);
|
||||||
CollaborationDataManager.getInstance().editorCreated(
|
CollaborationDataManager.getInstance().editorCreated(
|
||||||
session.getSessionId(), editor);
|
session.getSessionId(), editor);
|
||||||
|
|
||||||
|
// activate the drawing tool by default for participants
|
||||||
|
PathDrawingResourceData data = new CollaborationPathDrawingResourceData();
|
||||||
|
try {
|
||||||
|
editor.getActiveDisplayPane()
|
||||||
|
.getDescriptor()
|
||||||
|
.getResourceList()
|
||||||
|
.add(data.construct(new LoadProperties(),
|
||||||
|
editor.getActiveDisplayPane()
|
||||||
|
.getDescriptor()));
|
||||||
|
} catch (VizException e) {
|
||||||
|
statusHandler.handle(Priority.PROBLEM,
|
||||||
|
e.getLocalizedMessage(), e);
|
||||||
|
}
|
||||||
|
// PathDrawingTool tool = new
|
||||||
|
// CollaborationPathDrawingTool();
|
||||||
|
// tool.activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -90,13 +112,13 @@ public class ParticipantEventController extends AbstractRoleEventController {
|
||||||
@Override
|
@Override
|
||||||
public void startup() {
|
public void startup() {
|
||||||
super.startup();
|
super.startup();
|
||||||
VizApp.runAsync(new Runnable() {
|
// VizApp.runAsync(new Runnable() {
|
||||||
@Override
|
// @Override
|
||||||
public void run() {
|
// public void run() {
|
||||||
PathToolbar toolbar = PathToolbar.getToolbar();
|
// PathToolbar toolbar = CollaborationPathToolbar.getToolbar();
|
||||||
toolbar.open();
|
// toolbar.open();
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -109,6 +131,6 @@ public class ParticipantEventController extends AbstractRoleEventController {
|
||||||
@Override
|
@Override
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
super.shutdown();
|
super.shutdown();
|
||||||
PathToolbar.getToolbar().close();
|
CollaborationPathToolbar.getToolbar().close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,9 +20,11 @@
|
||||||
package com.raytheon.uf.viz.collaboration.ui.role;
|
package com.raytheon.uf.viz.collaboration.ui.role;
|
||||||
|
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.CollaborationPathDrawingTool;
|
||||||
import com.raytheon.uf.viz.collaboration.ui.telestrator.CollaborationPathToolbar;
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.CollaborationPathToolbar;
|
||||||
import com.raytheon.uf.viz.core.VizApp;
|
import com.raytheon.uf.viz.core.VizApp;
|
||||||
import com.raytheon.uf.viz.drawing.PathToolbar;
|
import com.raytheon.uf.viz.drawing.PathToolbar;
|
||||||
|
import com.raytheon.uf.viz.drawing.tools.PathDrawingTool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Add Description
|
* TODO Add Description
|
||||||
|
@ -63,6 +65,11 @@ public class SessionLeaderEventController extends AbstractRoleEventController {
|
||||||
VizApp.runAsync(new Runnable() {
|
VizApp.runAsync(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
// activate the drawing tool by default for the session leader
|
||||||
|
PathDrawingTool tool = new CollaborationPathDrawingTool();
|
||||||
|
tool.activate();
|
||||||
|
|
||||||
|
// open the path drawing toolbar
|
||||||
PathToolbar toolbar = CollaborationPathToolbar.getToolbar();
|
PathToolbar toolbar = CollaborationPathToolbar.getToolbar();
|
||||||
toolbar.open();
|
toolbar.open();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,15 +19,23 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.collaboration.ui.telestrator;
|
package com.raytheon.uf.viz.collaboration.ui.telestrator;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.Color;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
|
||||||
import com.google.common.collect.HashMultimap;
|
import com.google.common.collect.HashMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
import com.google.common.collect.Multimaps;
|
||||||
|
import com.google.common.eventbus.Subscribe;
|
||||||
|
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.IVenueSession;
|
import com.raytheon.uf.viz.collaboration.comm.identity.IVenueSession;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
||||||
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
|
import com.raytheon.uf.viz.collaboration.data.CollaborationDataManager;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.event.ClearDrawingEvent;
|
||||||
|
import com.raytheon.uf.viz.collaboration.ui.telestrator.event.CollaborationDrawingEvent;
|
||||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||||
import com.raytheon.uf.viz.core.drawables.IWireframeShape;
|
import com.raytheon.uf.viz.core.drawables.IWireframeShape;
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||||
|
@ -37,6 +45,9 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
|
||||||
import com.raytheon.uf.viz.core.rsc.capabilities.OutlineCapability;
|
import com.raytheon.uf.viz.core.rsc.capabilities.OutlineCapability;
|
||||||
import com.raytheon.uf.viz.drawing.DrawingLayer;
|
import com.raytheon.uf.viz.drawing.DrawingLayer;
|
||||||
import com.raytheon.uf.viz.drawing.PathDrawingResourceData;
|
import com.raytheon.uf.viz.drawing.PathDrawingResourceData;
|
||||||
|
import com.raytheon.viz.ui.EditorUtil;
|
||||||
|
import com.raytheon.viz.ui.editor.AbstractEditor;
|
||||||
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
import com.vividsolutions.jts.geom.LineString;
|
import com.vividsolutions.jts.geom.LineString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,7 +70,11 @@ import com.vividsolutions.jts.geom.LineString;
|
||||||
|
|
||||||
public class CollaborationDrawingLayer extends DrawingLayer {
|
public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
|
|
||||||
private Multimap<Color, IWireframeShape> collaboratorShapes;
|
private Multimap<RGB, IWireframeShape> collaboratorShapes;
|
||||||
|
|
||||||
|
private List<IWireframeShape> deletedCollaboratorShapes;
|
||||||
|
|
||||||
|
private RGB officialColor = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param data
|
* @param data
|
||||||
|
@ -68,6 +83,48 @@ public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
public CollaborationDrawingLayer(PathDrawingResourceData data,
|
public CollaborationDrawingLayer(PathDrawingResourceData data,
|
||||||
LoadProperties props) {
|
LoadProperties props) {
|
||||||
super(data, props);
|
super(data, props);
|
||||||
|
AbstractEditor editor = EditorUtil
|
||||||
|
.getActiveEditorAs(AbstractEditor.class);
|
||||||
|
CollaborationDataManager mgr = CollaborationDataManager.getInstance();
|
||||||
|
for (String str : mgr.getSessions().keySet()) {
|
||||||
|
if (editor.equals(mgr.getEditor(str))) {
|
||||||
|
mgr.getSession(str).registerEventHandler(this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void handle(IDisplayEvent event) {
|
||||||
|
if (event instanceof ClearDrawingEvent) {
|
||||||
|
resetTemp();
|
||||||
|
disposeInternal();
|
||||||
|
issueRefresh();
|
||||||
|
} else if (event instanceof CollaborationDrawingEvent) {
|
||||||
|
CollaborationDrawingEvent collEvent = (CollaborationDrawingEvent) event;
|
||||||
|
addCollaborationShape(collEvent.getGeom(),
|
||||||
|
getCapability(ColorableCapability.class).getColor());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see com.raytheon.uf.viz.drawing.DrawingLayer#reset()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void reset() {
|
||||||
|
super.reset();
|
||||||
|
ClearDrawingEvent event = new ClearDrawingEvent();
|
||||||
|
Map<String, IVenueSession> sessions = CollaborationDataManager
|
||||||
|
.getInstance().getSessions();
|
||||||
|
for (String str : sessions.keySet()) {
|
||||||
|
try {
|
||||||
|
((ISharedDisplaySession) sessions.get(str)).sendEvent(event);
|
||||||
|
} catch (CollaborationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -81,7 +138,13 @@ public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
protected void initInternal(IGraphicsTarget target) throws VizException {
|
protected void initInternal(IGraphicsTarget target) throws VizException {
|
||||||
super.initInternal(target);
|
super.initInternal(target);
|
||||||
this.collaboratorShapes = HashMultimap.create();
|
this.collaboratorShapes = HashMultimap.create();
|
||||||
getCapabilities().removeCapability(ColorableCapability.class);
|
this.collaboratorShapes = Multimaps
|
||||||
|
.synchronizedMultimap(this.collaboratorShapes);
|
||||||
|
this.deletedCollaboratorShapes = new ArrayList<IWireframeShape>();
|
||||||
|
TelestratorColorManager colorManager = TelestratorColorManager
|
||||||
|
.getColorManager();
|
||||||
|
officialColor = colorManager.getColorFromUser(CollaborationDataManager
|
||||||
|
.getInstance().getLoginId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -99,14 +162,33 @@ public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
|
|
||||||
OutlineCapability outline = getCapability(OutlineCapability.class);
|
OutlineCapability outline = getCapability(OutlineCapability.class);
|
||||||
// paint the shapes that come over from others
|
// paint the shapes that come over from others
|
||||||
for (Color color : collaboratorShapes.keySet()) {
|
synchronized (collaboratorShapes) {
|
||||||
for (IWireframeShape sh : collaboratorShapes.get(color)) {
|
for (RGB color : collaboratorShapes.keySet()) {
|
||||||
target.drawWireframeShape(sh, color.getRGB(),
|
for (IWireframeShape sh : collaboratorShapes.get(color)) {
|
||||||
outline.getOutlineWidth(), outline.getLineStyle());
|
target.drawWireframeShape(sh, color,
|
||||||
|
outline.getOutlineWidth(), outline.getLineStyle());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addCollaborationShape(Geometry geom, RGB color) {
|
||||||
|
IWireframeShape shape = target.createWireframeShape(false,
|
||||||
|
getDescriptor());
|
||||||
|
drawTempLinePrimitive(geom, shape);
|
||||||
|
synchronized (collaboratorShapes) {
|
||||||
|
collaboratorShapes.put(color, shape);
|
||||||
|
}
|
||||||
|
issueRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeCollaborationShape(Geometry geom, RGB color) {
|
||||||
|
synchronized (collaboratorShapes) {
|
||||||
|
// deletedCollaboratorShapes.
|
||||||
|
// collaboratorShapes.remove(geom, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
|
@ -115,10 +197,18 @@ public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
@Override
|
@Override
|
||||||
protected void disposeInternal() {
|
protected void disposeInternal() {
|
||||||
super.disposeInternal();
|
super.disposeInternal();
|
||||||
for (IWireframeShape shape : collaboratorShapes.values()) {
|
synchronized (collaboratorShapes) {
|
||||||
|
for (IWireframeShape shape : collaboratorShapes.values()) {
|
||||||
|
shape.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (IWireframeShape shape : deletedCollaboratorShapes) {
|
||||||
shape.dispose();
|
shape.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
collaboratorShapes.clear();
|
collaboratorShapes.clear();
|
||||||
|
deletedCollaboratorShapes.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -131,21 +221,36 @@ public class CollaborationDrawingLayer extends DrawingLayer {
|
||||||
@Override
|
@Override
|
||||||
public void finalizeLine(LineString line, String uuid) {
|
public void finalizeLine(LineString line, String uuid) {
|
||||||
super.finalizeLine(line, uuid);
|
super.finalizeLine(line, uuid);
|
||||||
|
sendDrawEvent(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.raytheon.uf.viz.drawing.DrawingLayer#addTempDrawLine(com.vividsolutions
|
||||||
|
* .jts.geom.LineString)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addTempDrawLine(LineString line) {
|
||||||
|
super.addTempDrawLine(line);
|
||||||
|
// sendDrawEvent(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendDrawEvent(LineString line) {
|
||||||
Map<String, IVenueSession> sessions = CollaborationDataManager
|
Map<String, IVenueSession> sessions = CollaborationDataManager
|
||||||
.getInstance().getSessions();
|
.getInstance().getSessions();
|
||||||
|
CollaborationDrawingEvent tObject = new CollaborationDrawingEvent(line,
|
||||||
TelestratorLine tObject = new TelestratorLine();
|
officialColor);
|
||||||
// set the coordinates of the TransferLine
|
|
||||||
tObject.setCoordinates(Arrays.asList(line.getCoordinates()));
|
|
||||||
// get the color of the user here, before sending it off
|
// get the color of the user here, before sending it off
|
||||||
tObject.setColor(null);
|
AbstractEditor editor = EditorUtil
|
||||||
// for (String str : sessions.keySet()) {
|
.getActiveEditorAs(AbstractEditor.class);
|
||||||
// try {
|
for (String str : sessions.keySet()) {
|
||||||
// ((ISharedDisplaySession) sessions.get(str)).sendEvent(tObject);
|
try {
|
||||||
// } catch (CollaborationException e) {
|
((ISharedDisplaySession) sessions.get(str)).sendEvent(tObject);
|
||||||
// e.printStackTrace();
|
} catch (CollaborationException e) {
|
||||||
// }
|
e.printStackTrace();
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.collaboration.ui.telestrator;
|
package com.raytheon.uf.viz.collaboration.ui.telestrator;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
|
||||||
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
import com.raytheon.uf.viz.core.drawables.IDescriptor;
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||||
|
@ -81,6 +83,6 @@ public class CollaborationPathDrawingResourceData extends
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setClassT(String classT) {
|
public void setClassT(String classT) {
|
||||||
|
System.out.println("setClassT");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
/**
|
||||||
|
* 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.telestrator;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
|
||||||
|
import com.raytheon.viz.core.ColorUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Add Description
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Apr 3, 2012 mnash Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author mnash
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class TelestratorColorManager {
|
||||||
|
|
||||||
|
private Map<String, RGB> colors;
|
||||||
|
|
||||||
|
private static TelestratorColorManager colorManager = null;
|
||||||
|
|
||||||
|
private static RGB[] rgbPresets = null;
|
||||||
|
|
||||||
|
public static TelestratorColorManager getColorManager() {
|
||||||
|
if (colorManager == null) {
|
||||||
|
colorManager = new TelestratorColorManager();
|
||||||
|
rgbPresets = ColorUtil.getResourceColorPresets();
|
||||||
|
}
|
||||||
|
return colorManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private TelestratorColorManager() {
|
||||||
|
if (colors == null) {
|
||||||
|
colors = new HashMap<String, RGB>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the colors
|
||||||
|
*/
|
||||||
|
public Map<String, RGB> getColors() {
|
||||||
|
return colors;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a user with a new color value
|
||||||
|
*
|
||||||
|
* @param user
|
||||||
|
*/
|
||||||
|
public void addUser(String user) {
|
||||||
|
int count = colors.size();
|
||||||
|
if (rgbPresets.length <= colors.size()) {
|
||||||
|
count = rgbPresets.length % colors.size();
|
||||||
|
}
|
||||||
|
colors.put(user, rgbPresets[count]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RGB getColorFromUser(String user) {
|
||||||
|
if (colors.get(user) == null) {
|
||||||
|
addUser(user);
|
||||||
|
}
|
||||||
|
return colors.get(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,81 +0,0 @@
|
||||||
/**
|
|
||||||
* 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.telestrator;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.Color;
|
|
||||||
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A line for the telestrator
|
|
||||||
*
|
|
||||||
* <pre>
|
|
||||||
*
|
|
||||||
* SOFTWARE HISTORY
|
|
||||||
*
|
|
||||||
* Date Ticket# Engineer Description
|
|
||||||
* ------------ ---------- ----------- --------------------------
|
|
||||||
* Mar 26, 2012 mnash Initial creation
|
|
||||||
*
|
|
||||||
* </pre>
|
|
||||||
*
|
|
||||||
* @author mnash
|
|
||||||
* @version 1.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class TelestratorLine extends TelestratorObject {
|
|
||||||
// the color of the shape to be drawn
|
|
||||||
private Color color;
|
|
||||||
|
|
||||||
// the coordinates to be converted into a wireframe shape
|
|
||||||
private List<Coordinate> coordinates;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param color
|
|
||||||
* the color to set
|
|
||||||
*/
|
|
||||||
public void setColor(Color color) {
|
|
||||||
this.color = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the color
|
|
||||||
*/
|
|
||||||
public Color getColor() {
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param coordinates
|
|
||||||
* the coordinates to set
|
|
||||||
*/
|
|
||||||
public void setCoordinates(List<Coordinate> coordinates) {
|
|
||||||
this.coordinates = coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the coordinates
|
|
||||||
*/
|
|
||||||
public List<Coordinate> getCoordinates() {
|
|
||||||
return coordinates;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -17,9 +17,11 @@
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.collaboration.ui.telestrator;
|
package com.raytheon.uf.viz.collaboration.ui.telestrator.event;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||||
import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
||||||
|
import com.raytheon.uf.viz.drawing.events.DrawingEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Add Description
|
* TODO Add Description
|
||||||
|
@ -30,7 +32,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
||||||
*
|
*
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Mar 26, 2012 mnash Initial creation
|
* Apr 4, 2012 mnash Initial creation
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -38,6 +40,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class TelestratorObject implements IDisplayEvent {
|
@DynamicSerialize
|
||||||
|
public class ClearDrawingEvent extends DrawingEvent implements IDisplayEvent {
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
/**
|
||||||
|
* 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.telestrator.event;
|
||||||
|
|
||||||
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||||
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
|
||||||
|
import com.raytheon.uf.viz.collaboration.comm.identity.event.IDisplayEvent;
|
||||||
|
import com.raytheon.uf.viz.drawing.events.DrawingEvent;
|
||||||
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Add Description
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* Apr 3, 2012 mnash Initial creation
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @author mnash
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@DynamicSerialize
|
||||||
|
public class CollaborationDrawingEvent extends DrawingEvent implements
|
||||||
|
IDisplayEvent {
|
||||||
|
|
||||||
|
@DynamicSerializeElement
|
||||||
|
private Geometry geom;
|
||||||
|
|
||||||
|
// @DynamicSerializeElement
|
||||||
|
// private RGB color;
|
||||||
|
|
||||||
|
public CollaborationDrawingEvent() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public CollaborationDrawingEvent(Geometry geom, RGB color) {
|
||||||
|
this.geom = geom;
|
||||||
|
// this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * @return the color
|
||||||
|
// */
|
||||||
|
// public RGB getColor() {
|
||||||
|
// return color;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * @param color
|
||||||
|
// * the color to set
|
||||||
|
// */
|
||||||
|
// public void setColor(RGB color) {
|
||||||
|
// this.color = color;
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the geom
|
||||||
|
*/
|
||||||
|
public Geometry getGeom() {
|
||||||
|
return geom;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param geom
|
||||||
|
* the geom to set
|
||||||
|
*/
|
||||||
|
public void setGeom(Geometry geom) {
|
||||||
|
this.geom = geom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,7 +49,7 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IPresence;
|
||||||
public abstract class Tools {
|
public abstract class Tools {
|
||||||
|
|
||||||
public static final String TAG_INVITE = "[[INVITEID#";
|
public static final String TAG_INVITE = "[[INVITEID#";
|
||||||
|
|
||||||
public static final String TAG_INVITE_ID = TAG_INVITE + "%s]]%s";
|
public static final String TAG_INVITE_ID = TAG_INVITE + "%s]]%s";
|
||||||
|
|
||||||
public static final String PROP_SESSION_ID = "sessionId";
|
public static final String PROP_SESSION_ID = "sessionId";
|
||||||
|
@ -329,7 +329,7 @@ public abstract class Tools {
|
||||||
sb.append(ENV_THRIFT);
|
sb.append(ENV_THRIFT);
|
||||||
} catch (SerializationException e) {
|
} catch (SerializationException e) {
|
||||||
throw new CollaborationException(
|
throw new CollaborationException(
|
||||||
"[THRIFT] Could not serialize object");
|
"[THRIFT] Could not serialize object", e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -342,7 +342,7 @@ public abstract class Tools {
|
||||||
}
|
}
|
||||||
} catch (JAXBException je) {
|
} catch (JAXBException je) {
|
||||||
throw new CollaborationException(
|
throw new CollaborationException(
|
||||||
"[JAXB] Could not serialize object");
|
"[JAXB] Could not serialize object", je);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -389,7 +389,7 @@ public abstract class Tools {
|
||||||
unMarshalledData = SerializationUtil.transformFromThrift(b);
|
unMarshalledData = SerializationUtil.transformFromThrift(b);
|
||||||
} catch (SerializationException e) {
|
} catch (SerializationException e) {
|
||||||
throw new CollaborationException(
|
throw new CollaborationException(
|
||||||
"Could not deserialize object");
|
"Could not deserialize object", e);
|
||||||
}
|
}
|
||||||
} else if (data.startsWith(ENV_JAXB)) {
|
} else if (data.startsWith(ENV_JAXB)) {
|
||||||
String s = data.substring(ENV_JAXB.length());
|
String s = data.substring(ENV_JAXB.length());
|
||||||
|
@ -397,7 +397,7 @@ public abstract class Tools {
|
||||||
unMarshalledData = SerializationUtil.unmarshalFromXml(s);
|
unMarshalledData = SerializationUtil.unmarshalFromXml(s);
|
||||||
} catch (JAXBException je) {
|
} catch (JAXBException je) {
|
||||||
throw new CollaborationException(
|
throw new CollaborationException(
|
||||||
"[JAXB] Could not deserialize object");
|
"[JAXB] Could not deserialize object", je);
|
||||||
}
|
}
|
||||||
} else if (data.startsWith(ENV_STRING)) {
|
} else if (data.startsWith(ENV_STRING)) {
|
||||||
unMarshalledData = data.substring(ENV_STRING.length());
|
unMarshalledData = data.substring(ENV_STRING.length());
|
||||||
|
|
|
@ -4,6 +4,7 @@ Bundle-Name: Drawing
|
||||||
Bundle-SymbolicName: com.raytheon.uf.viz.drawing;singleton:=true
|
Bundle-SymbolicName: com.raytheon.uf.viz.drawing;singleton:=true
|
||||||
Bundle-Version: 1.0.0.qualifier
|
Bundle-Version: 1.0.0.qualifier
|
||||||
Bundle-Activator: com.raytheon.uf.viz.drawing.Activator
|
Bundle-Activator: com.raytheon.uf.viz.drawing.Activator
|
||||||
|
Eclipse-RegisterBuddy: com.raytheon.uf.viz.core
|
||||||
Bundle-Vendor: RAYTHEON
|
Bundle-Vendor: RAYTHEON
|
||||||
Require-Bundle: org.eclipse.ui,
|
Require-Bundle: org.eclipse.ui,
|
||||||
org.eclipse.core.runtime,
|
org.eclipse.core.runtime,
|
||||||
|
|
|
@ -163,7 +163,7 @@ public class DrawingLayer extends
|
||||||
* @param shape
|
* @param shape
|
||||||
* @param wShape
|
* @param wShape
|
||||||
*/
|
*/
|
||||||
private void drawTempLinePrimitive(Geometry shape, IWireframeShape wShape) {
|
protected void drawTempLinePrimitive(Geometry shape, IWireframeShape wShape) {
|
||||||
LineString line = (LineString) shape;
|
LineString line = (LineString) shape;
|
||||||
|
|
||||||
int pts = line.getNumPoints();
|
int pts = line.getNumPoints();
|
||||||
|
@ -214,7 +214,9 @@ public class DrawingLayer extends
|
||||||
public void finalizeLine(LineString line, String uuid) {
|
public void finalizeLine(LineString line, String uuid) {
|
||||||
tempWireframeShape.compile();
|
tempWireframeShape.compile();
|
||||||
wireframeShapes.put(line, tempWireframeShape);
|
wireframeShapes.put(line, tempWireframeShape);
|
||||||
DrawingEvent event = new DrawingEvent(line, null);
|
|
||||||
|
// this will update the toolbar if necessary
|
||||||
|
DrawingEvent event = new DrawingEvent();
|
||||||
eventBus.post(event);
|
eventBus.post(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class RedoAddAction extends AbstractHandler {
|
||||||
if (pair.getResource() instanceof DrawingLayer) {
|
if (pair.getResource() instanceof DrawingLayer) {
|
||||||
((DrawingLayer) pair.getResource()).redoAdd();
|
((DrawingLayer) pair.getResource()).redoAdd();
|
||||||
((DrawingLayer) pair.getResource()).getEventBus().post(
|
((DrawingLayer) pair.getResource()).getEventBus().post(
|
||||||
new DrawingEvent(null, null));
|
new DrawingEvent());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ public class UndoAddAction extends AbstractHandler {
|
||||||
if (pair.getResource() instanceof DrawingLayer) {
|
if (pair.getResource() instanceof DrawingLayer) {
|
||||||
((DrawingLayer) pair.getResource()).undoAdd();
|
((DrawingLayer) pair.getResource()).undoAdd();
|
||||||
((DrawingLayer) pair.getResource()).getEventBus().post(
|
((DrawingLayer) pair.getResource()).getEventBus().post(
|
||||||
new DrawingEvent(null, null));
|
new DrawingEvent());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.uf.viz.drawing.events;
|
package com.raytheon.uf.viz.drawing.events;
|
||||||
|
|
||||||
import com.raytheon.viz.ui.editor.AbstractEditor;
|
import com.raytheon.uf.common.serialization.ISerializableObject;
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Add Description
|
* TODO Add Description
|
||||||
|
@ -39,28 +39,7 @@ import com.vividsolutions.jts.geom.Geometry;
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class DrawingEvent {
|
@DynamicSerialize
|
||||||
|
public class DrawingEvent implements ISerializableObject {
|
||||||
|
|
||||||
private AbstractEditor editor;
|
}
|
||||||
|
|
||||||
private Geometry geom;
|
|
||||||
|
|
||||||
public DrawingEvent(Geometry geom, AbstractEditor editor) {
|
|
||||||
this.geom = geom;
|
|
||||||
this.editor = editor;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the geom
|
|
||||||
*/
|
|
||||||
public Geometry getGeom() {
|
|
||||||
return geom;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the editor
|
|
||||||
*/
|
|
||||||
public AbstractEditor getEditor() {
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -106,7 +106,7 @@ public class IncludeMenuItem extends CommonIncludeMenuItem implements
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return subMenuName;
|
return "IncludeSubMenuContributionId_" + subMenuName;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return new IContributionItem[] { submenuCont };
|
return new IContributionItem[] { submenuCont };
|
||||||
|
|
Loading…
Add table
Reference in a new issue