package org.eclipse.uml2.diagram.sequence.internal.layout.model;
import java.awt.Color;
import java.awt.Point;
import org.eclipse.uml2.diagram.sequence.internal.layout.GeometryConstants;
import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsElement;
import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsLink;
import org.eclipse.uml2.diagram.sequence.internal.layout.abstractgde.AbsNode;
/**
*
*/
public abstract class LMBadElement {
public abstract int layoutAndReturnWidth(int xPos);
abstract AbsElement getGdeElement();
static class Node extends LMBadElement {
Node(AbsNode gdeNode) {
myGdeNode = gdeNode;
}
public int layoutAndReturnWidth(int xPos) {
myGdeNode.setBackground(PROBLEM_COLOR);
if (myGdeNode.getWidth() < GeometryConstants.BadElement.MIN_WIDTH) {
myGdeNode.setWidth(GeometryConstants.BadElement.MIN_WIDTH);
}
if (myGdeNode.getHeight() < GeometryConstants.BadElement.MIN_HEIGHT) {
myGdeNode.setHeight(GeometryConstants.BadElement.MIN_HEIGHT);
}
return myGdeNode.getWidth();
}
AbsElement getGdeElement() {
return myGdeNode;
}
private final AbsNode myGdeNode;
static final Color PROBLEM_COLOR = new Color(233,60,50);
}
static class Link extends LMBadElement {
Link(AbsLink gdeLink) {
myGdeLink = gdeLink;
}
public int layoutAndReturnWidth(int xPos) {
myGdeLink.setForeground(Color.RED);
myGdeLink.setLinkPoints(new Point [] {new Point(xPos+5, 10), new Point(xPos+5, 200)} );
return 10;
}
AbsElement getGdeElement() {
return myGdeLink;
}
private final AbsLink myGdeLink;
}
}