if (selfCall) {
direction = -1;
}
SVGPathFigure interactionArrow = new SVGPathFigure();
SVGTextFigure interactionLabel = new SVGTextFigure();
String interactionText;
if (modelInteraction.isExit()) {
SVGAttributeKeys.STROKE_DASHES.set(interactionLine,
SVGConstants.DEFAULT_INTERACTION_EXIT_DASHES);
SVGAttributeKeys.STROKE_COLOR.set(interactionLine,
SVGConstants.DEFAULT_EXIT_STROKE_COLOR);
SVGAttributeKeys.STROKE_OPACITY.set(interactionLine,
SVGConstants.DEFAULT_EXIT_STROKE_OPACITY);
SVGAttributeKeys.STROKE_COLOR.set(interactionArrow,
SVGConstants.DEFAULT_EXIT_STROKE_COLOR);
SVGAttributeKeys.STROKE_OPACITY.set(interactionArrow,
SVGConstants.DEFUALT_EXIT_ARROW_STROKE_OPACITY);
SVGAttributeKeys.FILL_OPACITY.set(interactionLabel,
SVGConstants.DEFAULT_EXIT_STROKE_OPACITY);
interactionArrow.basicAdd(SVGArrow.createArrowForLinePath(
linePath, direction, true && !selfCall));
Instance result = modelInteraction.getResult();
// TODO: check if null check is necessary
if (result != null) {
// TODO: this string format should be abstracted since the
// parameters use the same format and might want to make
// display configurable
interactionText = result.getSimpleName() + ":"
+ result.getSimpleTypeName();
} else {
// TODO: initial implementation: verify this is ok
interactionText = "null";
}
} else {
SVGAttributeKeys.STROKE_COLOR.set(interactionLine,
SVGConstants.DEFAULT_STROKE_COLOR);
SVGAttributeKeys.STROKE_COLOR.set(interactionArrow,
SVGConstants.DEFAULT_STROKE_COLOR);
if (modelInteraction.isStatic()) {
SVGAttributeKeys.FONT_ITALIC.set(interactionLabel, true);
}
interactionArrow.basicAdd(SVGArrow.createArrowForLinePath(
linePath, direction, false));
interactionText = String.format(
SVGConstants.INTERACTION_LABEL_FORMAT, modelInteraction
.getSimpleName());
interactionText = String.format(
SVGConstants.INTERACTION_LABEL_WITH_PARAMETERS_FORMAT,
modelInteraction.getSimpleName(),
createArgumentsString(modelInteraction.getArguments()));
}
interactionLabel.setText(interactionText);
AffineTransform labelTransform = new AffineTransform();
if (selfCall) {
length = heightIncrement * 2;
}
double xTranslation = (length / 2)
- interactionLabel.getBounds().getCenterX();
double yTranslation = interactionLineStartPosition.y
- (interactionLabel.getBounds().height / 2);
labelTransform.setToTranslation(xTranslation, yTranslation);
interactionLabel.transform(labelTransform);
add(interactionLabel);
AttributeKeys.FILL_COLOR.set(interactionLine, null);
linePath.setClosed(false);