public class RightLeftAnchor {
public static void main(String args[]) {
Shell shell = new Shell();
shell.setText("Draw2d Hello World");
shell.setSize(400, 400);
shell.open();
// create content 4 shell.
createContent4Shell(shell);
while (!shell.isDisposed ()) {
if (!Display.getDefault().readAndDispatch ())
Display.getDefault().sleep ();
}
}
private static void createContent4Shell(Shell shell) {
Panel rootFigure = new Panel();
rootFigure.setLayoutManager(new XYLayout());
IFigure figure1 = new Ellipse();
// Label figure2 = new Label("ddddddddddddddddd");
Triangle figure2 = new Triangle();
// --------------------------------------------------------
// add connection
PolylineConnection connection = new PolylineConnection();
connection.setSourceAnchor(new RightAnchor(figure1));
connection.setTargetAnchor(new LeftAnchor(figure2));
// connection.setTargetAnchor(new ChopboxAnchor(figure2));
// add connection
// --------------------------------------------------------
rootFigure.add(figure1,new Rectangle(10,10,60,30));
rootFigure.add(figure2,new Rectangle(80,90,90,190));
rootFigure.add(connection);
LightweightSystem lws = new LightweightSystem(shell);
lws.setContents(rootFigure);
}
}
class LeftAnchor extends AbstractConnectionAnchor {
public LeftAnchor(IFigure owner) {
super(owner);
}
public Point getLocation(Point reference) {
Point p;
p = getOwner().getBounds().getLeft();
getOwner().translateToAbsolute(p);
return p;
}
}
class RightAnchor extends AbstractConnectionAnchor {
public RightAnchor(IFigure owner) {
super(owner);
}
public Point getLocation(Point reference) {
Point p;
p = getOwner().getBounds().getRight();
getOwner().translateToAbsolute(p);
return p;
}
}