blob: b8f0e2bcdfe2170bef11d9f39a545b46a7cff72e [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.migration.diagram.ad.map;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.PrecisionPoint;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.epf.authoring.gef.util.TemplateConstants;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityFinalNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityFinalNodeNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityParameterNode2EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityParameterNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityParameterNodeName2EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ActivityParameterNodeNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ControlFlowEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ControlFlowNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.DecisionNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.DecisionNodeNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.ForkNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.InitialNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.InitialNodeNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.JoinNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.MergeNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.MergeNodeNameEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNode2EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNode3EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNodeEditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNodeName2EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNodeName3EditPart;
import org.eclipse.epf.diagram.ad.edit.parts.StructuredActivityNodeNameEditPart;
import org.eclipse.epf.diagram.ad.part.ActivityDiagramEditorPlugin;
import org.eclipse.epf.diagram.add.edit.parts.RoleTaskCompositeEditPart;
import org.eclipse.epf.diagram.add.edit.parts.WorkProductCompositeEditPart;
import org.eclipse.epf.diagram.add.part.ActivityDetailDiagramEditorPlugin;
import org.eclipse.epf.diagram.core.bridge.BridgeHelper;
import org.eclipse.epf.diagram.model.Link;
import org.eclipse.epf.diagram.model.RoleTaskComposite;
import org.eclipse.epf.diagram.model.WorkProductComposite;
import org.eclipse.epf.diagram.model.WorkProductNode;
import org.eclipse.epf.diagram.model.util.GraphicalDataHelper;
import org.eclipse.epf.diagram.wpdd.edit.parts.WorkProductNodeEditPart;
import org.eclipse.epf.diagram.wpdd.edit.parts.WorkProductNodeNameEditPart;
import org.eclipse.epf.diagram.wpdd.part.WPDDiagramEditorPlugin;
import org.eclipse.epf.uma.GraphNode;
import org.eclipse.epf.uma.Property;
import org.eclipse.gmf.runtime.common.ui.services.parser.CommonParserHint;
import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
import org.eclipse.gmf.runtime.diagram.core.util.ViewType;
import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants;
import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities;
import org.eclipse.gmf.runtime.notation.Bounds;
import org.eclipse.gmf.runtime.notation.DescriptionStyle;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Edge;
import org.eclipse.gmf.runtime.notation.FillStyle;
import org.eclipse.gmf.runtime.notation.FontStyle;
import org.eclipse.gmf.runtime.notation.LineStyle;
import org.eclipse.gmf.runtime.notation.Node;
import org.eclipse.gmf.runtime.notation.NotationFactory;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.uml2.uml.ActivityEdge;
import org.eclipse.uml2.uml.ActivityNode;
import org.eclipse.uml2.uml.ActivityParameterNode;
import org.eclipse.uml2.uml.ControlFlow;
import org.eclipse.uml2.uml.DecisionNode;
import org.eclipse.uml2.uml.FinalNode;
import org.eclipse.uml2.uml.ForkNode;
import org.eclipse.uml2.uml.InitialNode;
import org.eclipse.uml2.uml.JoinNode;
import org.eclipse.uml2.uml.MergeNode;
import org.eclipse.uml2.uml.NamedElement;
import org.eclipse.uml2.uml.StructuredActivityNode;
/**
* @author Shilpa Toraskar
* @since 1.2
*/
public class MapUtil {
/**
* Create notation node in diagram corresponding to activity node
*
* @param diagram
* @param umlNode
* @return
*/
public static Node createNotationNode_AD(Diagram diagram, Object obj) {
Node notationNode = null;
ActivityNode umlNode = obj instanceof ActivityNode ? (ActivityNode) obj
: null;
if (umlNode instanceof StructuredActivityNode) {
String type = BridgeHelper.getEAnnotationType(umlNode,
BridgeHelper.UMA_TYPE);
if (type.equalsIgnoreCase(BridgeHelper.UMA_PHASE)) {
// Phase
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(StructuredActivityNode2EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
StructuredActivityNodeName2EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (type.equalsIgnoreCase(BridgeHelper.UMA_ITERATION)) {
// Iteration
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(StructuredActivityNode3EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
StructuredActivityNodeName3EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else {
// Activity
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(StructuredActivityNodeEditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
StructuredActivityNodeNameEditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
}
// set default font style
setDefaultFontStyle(notationNode);
} else if (umlNode instanceof InitialNode) {
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(InitialNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
InitialNodeNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof DecisionNode) {
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(DecisionNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
DecisionNodeNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof MergeNode) {
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(MergeNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
MergeNodeNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof ForkNode) {
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(ForkNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof JoinNode) {
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(JoinNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof FinalNode) {
notationNode = ViewService
.createNode(diagram, umlNode, new Integer(
ActivityFinalNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
ActivityFinalNodeNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (umlNode instanceof ActivityParameterNode) {
String type = BridgeHelper.getEAnnotationType(umlNode,
BridgeHelper.UMA_TYPE);
if (type.equalsIgnoreCase(BridgeHelper.UMA_MILESTONE)) {
// Milestone
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(ActivityParameterNode2EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, umlNode, new Integer(
ActivityParameterNodeName2EditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
} else if (type.equalsIgnoreCase(BridgeHelper.UMA_TASK_DESCRIPTOR)) {
// TaskDescriptor
notationNode = ViewService.createNode(diagram, umlNode,
new Integer(ActivityParameterNodeEditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService
.createNode(notationNode, umlNode, new Integer(
ActivityParameterNodeNameEditPart.VISUAL_ID)
.toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
}
// set default font style
setDefaultFontStyle(notationNode);
}
return notationNode;
}
/**
* Create notation node for model node in ADD and WPD
* @param diagram
* @param obj
* @return
*/
public static Node createNotationNode_ADDorWPD(Diagram diagram, org.eclipse.epf.diagram.model.Node obj) {
Node notationNode = null;
org.eclipse.epf.diagram.model.Node node = obj instanceof org.eclipse.epf.diagram.model.Node ? (org.eclipse.epf.diagram.model.Node) obj
: null;
if (node instanceof RoleTaskComposite) {
notationNode = ViewService.createNode(diagram, node, new Integer(
RoleTaskCompositeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
/*
* ViewService.createNode(notationNode, node, new Integer(
* RoleTaskCompositeRoleTaskCompartmentEditPart.VISUAL_ID).toString(),
* ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
*/
} else if (node instanceof WorkProductComposite) {
notationNode = ViewService.createNode(diagram, node, new Integer(
WorkProductCompositeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
/*
* ViewService.createNode(notationNode, node, new Integer(
* WorkProductCompositeWorkProductCompartmentEditPart.VISUAL_ID).toString(),
* ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
*/
} else if (node instanceof WorkProductNode) {
notationNode = ViewService.createNode(diagram, node, new Integer(
WorkProductNodeEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(notationNode, node, new Integer(
WorkProductNodeNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
}
// set default font style for notation node
setDefaultFontStyle(notationNode);
return notationNode;
}
/**
*
* Create text for free form text
* @param diagram
* @param node
* @return
*/
public static Node createText(Diagram diagram,
org.eclipse.epf.diagram.model.Node node) {
// create text
Node text = ViewService.createNode(diagram, ViewType.TEXT,
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(text, ViewType.DIAGRAM_NAME,
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(text, CommonParserHint.DESCRIPTION,
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
// create description
GraphNode graphNode = (GraphNode) node.getObject();
String description = ""; //$NON-NLS-1$
Property prop = GraphicalDataHelper.getPropertyByKey(graphNode
.getProperty(), GraphicalDataHelper.GRAPH_NODE_FREE_TEXT);
if (prop != null)
description = prop.getValue();
DescriptionStyle descStyle = (DescriptionStyle) text
.getStyle(NotationPackage.Literals.DESCRIPTION_STYLE);
descStyle.setDescription(description);
//
IPreferenceStore store = (IPreferenceStore) ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT
.getPreferenceStore();
// create fill style
FillStyle fillStyle = (FillStyle) text
.getStyle(NotationPackage.Literals.FILL_STYLE);
if (fillStyle != null) {
// fill color
RGB fillRGB = PreferenceConverter.getColor(store,
IPreferenceConstants.PREF_FILL_COLOR);
fillStyle.setFillColor(FigureUtilities.RGBToInteger(fillRGB)
.intValue());
}
// create line style
LineStyle lineStyle = (LineStyle) text
.getStyle(NotationPackage.Literals.LINE_STYLE);
if (lineStyle != null) {
// line color
RGB lineRGB = PreferenceConverter.getColor(store,
IPreferenceConstants.PREF_LINE_COLOR);
lineStyle.setLineColor(FigureUtilities.RGBToInteger(lineRGB)
.intValue());
}
// create font style
FontStyle fontStyle = (FontStyle) text
.getStyle(NotationPackage.Literals.FONT_STYLE);
Font oldFont = null;
if (fontStyle != null) {
// get font properties
String fontName = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_NAME);
if (fontName == null) fontName = TemplateConstants.DEFAULT_FONT_NAME;
String oldFontStyleStr = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_STYLE);
String fontHeightStr = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_HEIGHT);
String fontRed = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_RED);
String fontGreen = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_GREEN);
String fontBlue = getPropertyValue(graphNode,
TemplateConstants.PROPERTY_FONT_BLUE);
int red = 0;
int green = 0;
int blue = 0;
if (fontName != null)
fontStyle.setFontName(fontName);
int oldFontStyle = 0;
if (oldFontStyleStr != null) {
oldFontStyle = new Integer(oldFontStyleStr).intValue();
if (oldFontStyle == 1)
fontStyle.setBold(true);
if (oldFontStyle == 2)
fontStyle.setItalic(true);
if (oldFontStyle == 3) {
fontStyle.setBold(true);
fontStyle.setItalic(true);
}
}
// set font height
int fontHeight = TemplateConstants.DEFAULT_FONT_SIZE;
if (fontHeightStr != null)
fontHeight = new Integer(fontHeightStr).intValue();
fontStyle.setFontHeight(fontHeight);
// set font RGB color
if (fontRed != null)
red = new Integer(fontRed).intValue();
if (fontGreen != null)
green = new Integer(fontGreen).intValue();
if (fontBlue != null)
blue = new Integer(fontBlue).intValue();
RGB fontRGB = new RGB(red, green, blue);
fontStyle.setFontColor(FigureUtilities.RGBToInteger(fontRGB)
.intValue());
// make old font as well
oldFont = new Font(null, fontName, fontHeight, oldFontStyle);
}
Dimension d = FigureUtilities.getTextExtents(description, oldFont);
if (oldFont != null) {
oldFont.dispose();
}
int noOfLines = 1;
if (d != null && d.width > 0) {
if (node.getWidth() == -1)
noOfLines = 1;
else {
int div = d.width / node.getWidth();
int mod = d.width % node.getWidth();
// if (mod != 0)
div++;
noOfLines = div;
}
}
int textHeight = d.height;
// create layout contraint
Bounds bounds = NotationFactory.eINSTANCE.createBounds();
// bounds.setHeight(noOfLines * textHeight);
if (node.getWidth() == -1) {
int textWidth = d.width;
bounds.setWidth(textWidth);
}
else
bounds.setWidth(node.getWidth());
bounds.setX(node.getLocation().x);
bounds.setY(node.getLocation().y);
text.setLayoutConstraint(bounds);
return text;
}
/**
* Create edge for AD diagram
*
* @param sourceNode
* @param targetNode
* @param actEdge
* @return
*/
public static Edge createEdge_AD(Node sourceNode, Node targetNode,
ActivityEdge actEdge) {
if (actEdge instanceof ControlFlow) {
Edge edge = ViewService.createEdge(sourceNode, targetNode, actEdge,
new Integer(ControlFlowEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(edge, actEdge, new Integer(
ControlFlowNameEditPart.VISUAL_ID).toString(),
ActivityDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
return edge;
}
return null;
}
/**
* Create edge for WPD diagram
*
* @param sourceNode
* @param targetNode
* @param actEdge
* @return
*/
public static Edge createEdge_WPD(Node sourceNode, Node targetNode,
EObject actEdge) {
if (actEdge instanceof Link) {
Edge edge = ViewService.createEdge(sourceNode, targetNode, actEdge,
new Integer(org.eclipse.epf.diagram.wpdd.edit.parts.LinkEditPart.VISUAL_ID).toString(),
WPDDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(edge, actEdge, new Integer(
org.eclipse.epf.diagram.wpdd.edit.parts.LinkEditPart.VISUAL_ID).toString(),
WPDDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
return edge;
}
return null;
}
/**
* Create edge for ADD diagram
*
* @param sourceNode
* @param targetNode
* @param actEdge
* @return
*/
public static Edge createEdge_ADD(Node sourceNode, Node targetNode,
EObject actEdge) {
if (actEdge instanceof Link) {
Edge edge = ViewService.createEdge(sourceNode, targetNode, actEdge,
new Integer(org.eclipse.epf.diagram.add.edit.parts.LinkEditPart.VISUAL_ID).toString(),
ActivityDetailDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
ViewService.createNode(edge, actEdge, new Integer(
org.eclipse.epf.diagram.add.edit.parts.LinkEditPart.VISUAL_ID).toString(),
ActivityDetailDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT);
return edge;
}
return null;
}
/**
*
*/
private static String getPropertyValue(GraphNode graphNode, String key) {
Property prop = GraphicalDataHelper.getPropertyByKey(graphNode
.getProperty(), key);
if (prop != null) {
return prop.getValue();
}
return null;
}
/**
* Calculates no of lines in the node text based on text width and width of
* figure
*
* @param node
* @return
*/
public static int getNoOfLines(Node node) {
int noOfLines = 1;
if (node.getElement() != null
&& node.getElement() instanceof NamedElement) {
String text = ((NamedElement) node.getElement()).getName();
Font f = TemplateConstants.DEFAULT_FONT;
Dimension d = FigureUtilities.getTextExtents(text, f);
Bounds bounds = (Bounds) node.getLayoutConstraint();
if (d != null && d.width > 0) {
int div = d.width / bounds.getWidth();
int mod = d.width % bounds.getWidth();
if (mod != 0)
div++;
noOfLines = div;
}
}
return noOfLines;
}
/**
* Return height of text of th enode
*
* @param node
* @return
*/
public static int getTextHeight(Node node) {
if (node.getElement() != null
&& node.getElement() instanceof NamedElement) {
String text = ((NamedElement) node.getElement()).getName();
Font f = TemplateConstants.DEFAULT_FONT;
Dimension d = FigureUtilities.getTextExtents(text, f);
if (d != null)
return d.height;
}
return 0;
}
/**
* Convert point to terminal string
*
* @param p
* @return
*/
public static String composeTerminalString(PrecisionPoint p) {
final char TERMINAL_START_CHAR = '(';
final char TERMINAL_DELIMITER_CHAR = ',';
final char TERMINAL_END_CHAR = ')';
StringBuffer s = new StringBuffer(24);
s.append(TERMINAL_START_CHAR); // 1 char
s.append((float) p.preciseX); // 10 chars
s.append(TERMINAL_DELIMITER_CHAR); // 1 char
s.append((float) p.preciseY); // 10 chars
s.append(TERMINAL_END_CHAR); // 1 char
return s.toString(); // 24 chars max (+1 for safety, i.e. for string
// termination)
}
/**
* Get relative anchor location
*
* @param p
* @param bounds
* @return
*/
public static PrecisionPoint getAnchorRelativeLocation(Point p,
Bounds bounds) {
PrecisionPoint relLocation;
Point temp = new Point(p);
if (p.x < bounds.getX() || p.x > bounds.getX() + bounds.getWidth()
|| p.y < bounds.getY()
|| p.y > bounds.getY() + bounds.getHeight()) {
if (p.x < bounds.getX() || p.x > bounds.getX() + bounds.getWidth()) {
temp.x = p.x < bounds.getX() ? bounds.getX() : bounds.getX()
+ bounds.getWidth();
}
if (p.y < bounds.getY() || p.y > bounds.getY() + bounds.getHeight()) {
temp.y = p.y < bounds.getY() ? bounds.getY() : bounds.getY()
+ bounds.getHeight();
}
relLocation = new PrecisionPoint((double) (temp.x - bounds.getX())
/ bounds.getWidth(), (double) (temp.y - bounds.getY())
/ bounds.getHeight());
} else {
relLocation = new PrecisionPoint((double) (temp.x - bounds.getX())
/ bounds.getWidth(), (double) (temp.y - bounds.getY())
/ bounds.getHeight());
}
return relLocation;
}
/**
* Set default font style for notation node
* @param notationNode
*/
private static void setDefaultFontStyle(Node notationNode) {
// create font style
FontStyle fontStyle = (FontStyle) notationNode
.getStyle(NotationPackage.Literals.FONT_STYLE);
if (fontStyle != null) {
// set font name
String fontName = TemplateConstants.DEFAULT_FONT_NAME;
if (fontName != null)
fontStyle.setFontName(fontName);
// set font height
int fontHeight = TemplateConstants.DEFAULT_FONT_SIZE;
fontStyle.setFontHeight(fontHeight);
}
}
}