public static void main( String[] args ) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

		GraphPanel panel = new GraphPanel();
		frame.add( panel );
		frame.setBounds( 20, 20, 1000, 900 );

		Graph graph = new Graph();
		panel.setGraph( graph );

		for( int i = 0; i < 8; i++ ) {
			ColoredRectangle rectA = new ColoredRectangle( Color.BLUE );
			rectA.setBoundaries( 50, 50 + i * 100, 50, 50 );
			FluentRectangularConnectionArray arrayA = new FluentRectangularConnectionArray();
			rectA.addChild( arrayA );
			RectangularSelection selectionA = new RectangularSelection( rectA );
			rectA.addCapability( CapabilityName.SELECTABLE, selectionA );
			graph.addItem( rectA );

			ColoredRectangle rectB = new ColoredRectangle( Color.GREEN );
			rectB.setBoundaries( 800, 50 + i * 100, 50, 50 );
			FluentRectangularConnectionArray arrayB = new FluentRectangularConnectionArray();
			rectB.addChild( arrayB );
			RectangularSelection selectionB = new RectangularSelection( rectB );
			rectB.addCapability( CapabilityName.SELECTABLE, selectionB );
			graph.addItem( rectB );

			BezierLineConnection bezier = new BezierLineConnection();
			arrayA.add( bezier.getSourceEndPoint() );
			arrayB.add( bezier.getTargetEndPoint() );
			graph.addItem( bezier );

			for( int j = 0; j < 10; j++ ) {
				AbstractConnectionText t = textFor( bezier, i, j / 9.0f );
				if( t != null ) {
					// t.setBackgroundColor( Color.GREEN );
					graph.addItem( t );
				}
			}
		}

		frame.setVisible( true );
	}