/*
* @(#)LabeledConnectionSample.java
*
* Copyright (c) 1996-2010 The authors and contributors of JHotDraw.
* You may not use, copy or modify this file, except in compliance with the
* accompanying license terms.
*/
package org.jhotdraw.samples.mini;
import org.jhotdraw.draw.locator.BezierLabelLocator;
import org.jhotdraw.draw.layouter.LocatorLayouter;
import org.jhotdraw.draw.liner.ElbowLiner;
import java.awt.geom.*;
import javax.swing.*;
import org.jhotdraw.draw.*;
import org.jhotdraw.geom.*;
/**
* Example showing how to connect two rectangles with a labeled connection,
* that has a labels at both ends.
*
* @author Werner Randelshofer
* @version $Id$
*/
public class LabeledLineConnectionFigureSample {
/** Creates a new instance. */
public LabeledLineConnectionFigureSample() {
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// Create the two rectangle figures
RectangleFigure ta = new RectangleFigure();
ta.setBounds(new Point2D.Double(10, 10), new Point2D.Double(100, 100));
RectangleFigure tb = new RectangleFigure();
tb.setBounds(new Point2D.Double(210, 110), new Point2D.Double(300, 200));
// Create a labeled line connection
LabeledLineConnectionFigure cf = new LabeledLineConnectionFigure();
cf.setLiner(new ElbowLiner());
cf.setLayouter(new LocatorLayouter());
// Create labels and add them to both ends of the labeled line connection
TextFigure startLabel = new TextFigure();
startLabel.set(LocatorLayouter.LAYOUT_LOCATOR, new BezierLabelLocator(0, -Math.PI / 4, 8));
startLabel.setEditable(false);
startLabel.setText("start");
cf.add(startLabel);
TextFigure endLabel = new TextFigure();
endLabel.set(LocatorLayouter.LAYOUT_LOCATOR, new BezierLabelLocator(1, Math.PI + Math.PI / 4, 8));
endLabel.setEditable(false);
endLabel.setText("end");
cf.add(endLabel);
// Connect the figures
cf.setStartConnector(ta.findConnector(Geom.center(ta.getBounds()), cf));
cf.setEndConnector(tb.findConnector(Geom.center(tb.getBounds()), cf));
// Add all figures to a drawing
Drawing drawing = new DefaultDrawing();
drawing.add(ta);
drawing.add(tb);
drawing.add(cf);
// Show the drawing
JFrame f = new JFrame("My Drawing");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 300);
DrawingView view = new DefaultDrawingView();
view.setDrawing(drawing);
f.getContentPane().add(view.getComponent());
f.setVisible(true);
}
});
}
}