}
}
public void layoutAndAdjustConnection()
{
TagConnector startConnector = (TagConnector) getStartConnector();
TagConnector endConnector = (TagConnector) getEndConnector();
Orientation startOrientation = startConnector.getOrientation();
Orientation endOrientation = endConnector.getOrientation();
SocketFigure startSocketFigure = (SocketFigure) ((ParamFigure) startFigure()).getParent();
SocketFigure endSocketFigure = (SocketFigure) ((ParamFigure) endFigure()).getParent();
Figure startNodeFigure = startSocketFigure.getParent();
Figure endNodeFigure = endSocketFigure.getParent();
Point startCenter = startSocketFigure.center();
Point endCenter = endSocketFigure.center();
Orientation startSocketOrientation = CircleConstants.determineOrientation(startSocketFigure.getAngle(), startNodeFigure.displayBox());
Orientation endSocketOrientation = CircleConstants.determineOrientation(endSocketFigure.getAngle(), endNodeFigure.displayBox());
boolean startSocketIsVertical = startSocketOrientation == Orientation.TOP || startSocketOrientation == Orientation.BOTTOM;
boolean endSocketIsVertical = endSocketOrientation == Orientation.TOP || endSocketOrientation == Orientation.BOTTOM;
boolean socketsInSync = startSocketIsVertical == endSocketIsVertical;
// TODO Fix 4: Param autoconnector orientation doesn't work optimal, test...
if (socketsInSync)
{
endOrientation = startOrientation;
}
else
{
if (startSocketOrientation == Orientation.LEFT || startSocketOrientation == Orientation.RIGHT)
{
if (startCenter.y <= endCenter.y)
startOrientation = Orientation.BOTTOM;
else
startOrientation = Orientation.TOP;
}
if (startSocketOrientation == Orientation.TOP || startSocketOrientation == Orientation.BOTTOM)
{
if (startCenter.x <= endCenter.x)
startOrientation = Orientation.RIGHT;
else
startOrientation = Orientation.LEFT;
}
if (endSocketOrientation == Orientation.LEFT || endSocketOrientation == Orientation.RIGHT)
{
if (startCenter.y <= endCenter.y)
endOrientation = Orientation.TOP;
else
endOrientation = Orientation.BOTTOM;
}
if (endSocketOrientation == Orientation.TOP || endSocketOrientation == Orientation.BOTTOM)
{
if (startCenter.x <= endCenter.x)
endOrientation = Orientation.LEFT;
else
endOrientation = Orientation.RIGHT;
}
/*
if (verticalRelationship)
{
// Vertical line, connectors can be LEFT and RIGHT for param connections
if (startCenter.x < endCenter.x)
{
startOrientation = Orientation.RIGHT;
endOrientation = Orientation.LEFT;
}
else
{
startOrientation = Orientation.LEFT;
endOrientation = Orientation.RIGHT;
}
}
else
{
// Horizontal line, connectors can be TOP and BOTTOM for param connections
if (startCenter.y < endCenter.y)
{
startOrientation = Orientation.BOTTOM;
endOrientation = Orientation.TOP;
}
else
{
startOrientation = Orientation.TOP;
endOrientation = Orientation.BOTTOM;
}
startConnector.setLockedOrientation(startOrientation);
endConnector.setLockedOrientation(endOrientation);
}
*/
}
startConnector.setLockedOrientation(startOrientation);
endConnector.setLockedOrientation(endOrientation);
// Perform a simple connection layout
layoutConnection();
}