JHotDraw 7.5.1

org.jhotdraw.draw
Class LabeledLineConnectionFigure

java.lang.Object
  extended by org.jhotdraw.beans.AbstractBean
      extended by org.jhotdraw.draw.AbstractFigure
          extended by org.jhotdraw.draw.AbstractAttributedFigure
              extended by org.jhotdraw.draw.BezierFigure
                  extended by org.jhotdraw.draw.LineFigure
                      extended by org.jhotdraw.draw.LineConnectionFigure
                          extended by org.jhotdraw.draw.LabeledLineConnectionFigure
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, CompositeFigure, ConnectionFigure, Figure, DOMStorable

public class LabeledLineConnectionFigure
extends LineConnectionFigure
implements CompositeFigure

A LineConnection with labels.

Usage:

 LineConnectionFigure lcf = new LineConnectionFigure();
 lcf.setLayouter(new LocatorLayouter());
 TextFigure label = new TextFigure();
 label.setText("Hello");
 LocatorLayouter.LAYOUT_LOCATOR.set(label, new BezierLabelLocator(0, -Math.PI / 4, 8));
 lcf.add(label);
 

Version:
$Id: LabeledLineConnectionFigure.java 647 2010-01-24 22:52:59Z rawcoder $
Author:
Werner Randelshofer
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.jhotdraw.draw.LineConnectionFigure
LINER_PROPERTY
 
Fields inherited from class org.jhotdraw.draw.BezierFigure
path
 
Fields inherited from class org.jhotdraw.draw.AbstractFigure
changingDepth, listenerList
 
Fields inherited from class org.jhotdraw.beans.AbstractBean
propertySupport
 
Fields inherited from interface org.jhotdraw.draw.CompositeFigure
LAYOUT_INSETS
 
Fields inherited from interface org.jhotdraw.draw.Figure
CONNECTABLE_PROPERTY, REMOVABLE_PROPERTY, SELECTABLE_PROPERTY, TRANSFORMABLE_PROPERTY
 
Constructor Summary
LabeledLineConnectionFigure()
          Creates a new instance.
 
Method Summary
 boolean add(Figure figure)
          Adds a child to the figure.
 void add(int index, Figure figure)
          Adds a child to the figure at the specified index.
 void addCompositeFigureListener(CompositeFigureListener listener)
          Adds a listener for this composite figure.
 void addNotify(Drawing drawing)
          This method is invoked, when the Figure is being removed from a Drawing.
 void basicAdd(Figure figure)
          Adds a child to the figure without firing events.
 void basicAdd(int index, Figure figure)
          Adds a child to the figure at the specified index without firing events.
 int basicRemove(Figure figure)
          Removes the specified child without firing events.
 void basicRemoveAllChildren()
          Removes all children from the composite figure without firing events.
 Figure basicRemoveChild(int index)
          Removes the child at the specified index without firing events.
 LabeledLineConnectionFigure clone()
          Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators.
 boolean contains(Figure f)
          Returns true if this composite figure contains the specified figure.
 boolean contains(java.awt.geom.Point2D.Double p)
          Checks if a point is contained by the figure.
 void draw(java.awt.Graphics2D g)
          Draw the figure.
 Figure findFigureInside(java.awt.geom.Point2D.Double p)
          Finds the innermost figure at the specified location.
protected  void fireFigureAdded(Figure f, int zIndex)
          Notify all listenerList that have registered interest for notification on this event type.
protected  void fireFigureRemoved(Figure f, int zIndex)
          Notify all listenerList that have registered interest for notification on this event type.
 Figure getChild(int index)
          Returns the child figure at the specified index.
 int getChildCount()
          Returns the number of children.
 java.util.List<Figure> getChildren()
          Returns an unchangeable list view on the children.
 java.util.List<Figure> getChildrenFrontToBack()
          Returns an iterator to iterate in Z-order front to back over the children.
 java.awt.geom.Rectangle2D.Double getDrawingArea()
          Returns the drawing area of the figure as a Rectangle.
 Layouter getLayouter()
          Get a Layouter object which encapsulated a layout algorithm for this figure.
 int indexOf(Figure child)
          Returns the index of the specified child.
 void invalidate()
          Invalidates cached data of the Figure.
 void layout()
          A layout algorithm is used to define how the child components should be laid out in relation to each other.
 void remap(java.util.Map<Figure,Figure> oldToNew, boolean disconnectIfNotInMap)
          After cloning a collection of figures, the ConnectionFigures contained in this collection still connect to the original figures instead of to the clones.
 boolean remove(Figure figure)
          Removes the specified child.
 void removeAllChildren()
          Removes all children from the composite figure.
 Figure removeChild(int index)
          Removes the child at the specified index.
 void removeCompositeFigureListener(CompositeFigureListener listener)
          Removes a listener from this composite figure.
 void removeNotify(Drawing drawing)
          This method is invoked, when the Figure is being removed from a Drawing.
<T> void
set(AttributeKey<T> key, T newValue)
          Sets an attribute of the figure.
 void setLayouter(Layouter newLayouter)
          Set a Layouter object which encapsulated a layout algorithm for this figure.
 void transform(java.awt.geom.AffineTransform tx)
          Transforms the figure.
 void updateConnection()
          Updates the start and end point of the figure and fires figureChanged events.
 void validate()
           
 
Methods inherited from class org.jhotdraw.draw.LineConnectionFigure
canConnect, canConnect, createHandles, getBezierPath, getEndConnector, getEndFigure, getLiner, getStartConnector, getStartFigure, handleConnect, handleDisconnect, handleMouseClick, lineout, read, readLiner, readPoints, reverseConnection, setConnectable, setEndConnector, setEndPoint, setLiner, setNode, setPoint, setStartConnector, setStartPoint, write, writeLiner, writePoints
 
Methods inherited from class org.jhotdraw.draw.BezierFigure
addNode, addNode, chop, drawCaps, drawFill, drawStroke, findCompatibleConnector, findConnector, findNode, findSegment, getBounds, getCappedPath, getCenter, getEndPoint, getNode, getNodeCount, getOutermostPoint, getPoint, getPoint, getPointOnPath, getStartPoint, getTransformRestoreData, isClosed, joinSegments, joinSegments, removeAllNodes, removeNode, restoreTransformTo, setBezierPath, setBounds, setClosed, setPoint, splitSegment, splitSegment
 
Methods inherited from class org.jhotdraw.draw.AbstractAttributedFigure
applyAttributesTo, drawText, get, getAttributeKey, getAttributes, getAttributesRestoreData, getStroke, getStrokeMiterLimitFactor, hasAttribute, isAttributeEnabled, readAttributes, removeAttribute, restoreAttributesTo, setAttributeEnabled, setAttributes, writeAttributes
 
Methods inherited from class org.jhotdraw.draw.AbstractFigure
addFigureListener, basicClone, changed, fireAreaInvalidated, fireAreaInvalidated, fireAreaInvalidated, fireAttributeChanged, fireFigureAdded, fireFigureChanged, fireFigureChanged, fireFigureChanged, fireFigureHandlesChanged, fireFigureRemoved, fireFigureRequestRemove, fireUndoableEditHappened, getActions, getChangingDepth, getConnectors, getCursor, getDecomposition, getDrawing, getFontRenderContext, getLayer, getLock, getPreferredSize, getTool, getToolTipText, handleDrop, includes, isChanging, isConnectable, isRemovable, isSelectable, isTransformable, isVisible, removeFigureListener, requestRemove, setBounds, setRemovable, setSelectable, setTransformable, setVisible, toString, willChange
 
Methods inherited from class org.jhotdraw.beans.AbstractBean
addPropertyChangeListener, addPropertyChangeListener, firePropertyChange, firePropertyChange, firePropertyChange, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jhotdraw.draw.Figure
addFigureListener, addPropertyChangeListener, changed, createHandles, findCompatibleConnector, findConnector, get, getActions, getAttributes, getAttributesRestoreData, getBounds, getConnectors, getCursor, getDecomposition, getEndPoint, getLayer, getPreferredSize, getStartPoint, getTool, getToolTipText, getTransformRestoreData, handleDrop, handleMouseClick, includes, isConnectable, isRemovable, isSelectable, isTransformable, isVisible, removeFigureListener, removePropertyChangeListener, requestRemove, restoreAttributesTo, restoreTransformTo, setBounds, willChange
 
Methods inherited from interface org.jhotdraw.draw.ConnectionFigure
getEndPoint, getNode, getNodeCount, getPoint, getStartPoint
 

Constructor Detail

LabeledLineConnectionFigure

public LabeledLineConnectionFigure()
Creates a new instance.

Method Detail

draw

public void draw(java.awt.Graphics2D g)
Draw the figure. This method is delegated to the encapsulated presentation figure.

Specified by:
draw in interface Figure
Overrides:
draw in class AbstractAttributedFigure
Parameters:
g - The Graphics2D to draw to.

transform

public void transform(java.awt.geom.AffineTransform tx)
Transforms the figure.

Specified by:
transform in interface Figure
Overrides:
transform in class LineConnectionFigure
Parameters:
tx - The transformation.
See Also:
Figure.getTransformRestoreData(), Figure.restoreTransformTo(java.lang.Object)

getDrawingArea

public java.awt.geom.Rectangle2D.Double getDrawingArea()
Description copied from interface: Figure
Returns the drawing area of the figure as a Rectangle.

The drawing area is used to inform DrawingView about the area that is needed to draw this figure.

The drawing area needs to be large enough, to take line width, line caps and other decorations into account that exceed the bounds of the Figure.

Specified by:
getDrawingArea in interface Figure
Overrides:
getDrawingArea in class BezierFigure

contains

public boolean contains(java.awt.geom.Point2D.Double p)
Description copied from interface: Figure
Checks if a point is contained by the figure.

This is used for hit testing by Tool's.

Specified by:
contains in interface Figure
Overrides:
contains in class BezierFigure

set

public <T> void set(AttributeKey<T> key,
                    T newValue)
Sets an attribute of the figure. AttributeKey name and semantics are defined by the class implementing the figure interface.

Specified by:
set in interface Figure
Overrides:
set in class BezierFigure
See Also:
AttributeKey.set(org.jhotdraw.draw.Figure, T)

findFigureInside

public Figure findFigureInside(java.awt.geom.Point2D.Double p)
Description copied from interface: Figure
Finds the innermost figure at the specified location.

In case of a CompositeFigure, this method descends into its children and into its children's children until the innermost figure is found.

This functionality is implemented using the Chain of Responsibility design pattern. A figure which is not composed of other figures returns itself if the point is contained by the figure. Composed figures pass the method call down to their children.

Specified by:
findFigureInside in interface Figure
Overrides:
findFigureInside in class AbstractFigure
Parameters:
p - A location on the drawing.
Returns:
Returns the innermost figure at the location, or null if the location is not contained in a figure.

updateConnection

public void updateConnection()
Description copied from interface: ConnectionFigure
Updates the start and end point of the figure and fires figureChanged events.

Specified by:
updateConnection in interface ConnectionFigure
Overrides:
updateConnection in class LineConnectionFigure

getChildren

public java.util.List<Figure> getChildren()
Description copied from interface: CompositeFigure
Returns an unchangeable list view on the children.

Specified by:
getChildren in interface CompositeFigure

getChildCount

public int getChildCount()
Description copied from interface: CompositeFigure
Returns the number of children.

This is a convenience method for calling getChildren().size();.

Specified by:
getChildCount in interface CompositeFigure

getChild

public Figure getChild(int index)
Description copied from interface: CompositeFigure
Returns the child figure at the specified index.

This is a convenience method for calling getChildren().get(index);.

Specified by:
getChild in interface CompositeFigure

getChildrenFrontToBack

public java.util.List<Figure> getChildrenFrontToBack()
Returns an iterator to iterate in Z-order front to back over the children.


add

public boolean add(Figure figure)
Description copied from interface: CompositeFigure
Adds a child to the figure.

This is a convenience method for add(getChildCount(), child);

This method calls figureAdded on all registered CompositeFigureListeners.

Specified by:
add in interface CompositeFigure
Returns:
true if this CompositeFigure changed as a result of the call

add

public void add(int index,
                Figure figure)
Description copied from interface: CompositeFigure
Adds a child to the figure at the specified index.

This method calls figureAdded on all registered CompositeFigureListeners.

Specified by:
add in interface CompositeFigure

basicAdd

public void basicAdd(Figure figure)
Description copied from interface: CompositeFigure
Adds a child to the figure without firing events.

This method can be used to reinsert a child figure which has been temporarily removed from this CompositeFigure (for example to reorder the sequence of the children) and to efficiently build a drawing from an InputFormat. This is a convenience method for calling basicAdd(getChildCount(), child);.

Specified by:
basicAdd in interface CompositeFigure

basicAdd

public void basicAdd(int index,
                     Figure figure)
Description copied from interface: CompositeFigure
Adds a child to the figure at the specified index without firing events.

This method can be used to reinsert a child figure which has been temporarily removed from this CompositeFigure (for example to reorder the sequence of the children) and to efficiently build a drawing from an InputFormat.

Specified by:
basicAdd in interface CompositeFigure

remove

public boolean remove(Figure figure)
Description copied from interface: CompositeFigure
Removes the specified child. Returns true, if the Figure contained the removed child.

This is a convenience method for calling removeChild(getChildren().indexOf(child));

This method calls figureRemoved on all registered CompositeFigureListener's.

Specified by:
remove in interface CompositeFigure

removeChild

public Figure removeChild(int index)
Description copied from interface: CompositeFigure
Removes the child at the specified index. Returns the removed child figure.

Calls figureRemoved on all registered CompositeFigureListener's.

Specified by:
removeChild in interface CompositeFigure

basicRemove

public int basicRemove(Figure figure)
Description copied from interface: CompositeFigure
Removes the specified child without firing events.

This method can be used to temporarily remove a child from this CompositeFigure (for example to reorder the sequence of the children).

This is a convenience method for calling basicRemove(indexOf(child));.

Returns the index of the removed figure. Returns -1 if the figure was not a child of this CompositeFigure.

Specified by:
basicRemove in interface CompositeFigure

basicRemoveChild

public Figure basicRemoveChild(int index)
Description copied from interface: CompositeFigure
Removes the child at the specified index without firing events.

This method can be used to temporarily remove a child from this CompositeFigure (for example to reorder the sequence of the children).

Returns the removed child figure.

Specified by:
basicRemoveChild in interface CompositeFigure

removeAllChildren

public void removeAllChildren()
Description copied from interface: CompositeFigure
Removes all children from the composite figure.

This is a convenience method for while(getChildCount() > 0) removeChild(0);

Specified by:
removeAllChildren in interface CompositeFigure

basicRemoveAllChildren

public void basicRemoveAllChildren()
Description copied from interface: CompositeFigure
Removes all children from the composite figure without firing events.

This method can be used to temporarily remove a child from this CompositeFigure (for example to reorder the sequence of the children).

This is a convenience method for while(getChildCount() > 0) basicRemoveChild(0);

Specified by:
basicRemoveAllChildren in interface CompositeFigure

getLayouter

public Layouter getLayouter()
Get a Layouter object which encapsulated a layout algorithm for this figure. Typically, a Layouter accesses the child components of this figure and arranges their graphical presentation.

Specified by:
getLayouter in interface CompositeFigure
Returns:
layout strategy used by this figure

setLayouter

public void setLayouter(Layouter newLayouter)
Description copied from interface: CompositeFigure
Set a Layouter object which encapsulated a layout algorithm for this figure. Typically, a Layouter accesses the child components of this figure and arranges their graphical presentation. It is a good idea to put the Layouter in the protected initialize() method so it can be recreated if a GraphicalCompositeFigure is read and restored from a StorableInput stream.

Specified by:
setLayouter in interface CompositeFigure
Parameters:
newLayouter - encapsulation of a layout algorithm.

layout

public void layout()
A layout algorithm is used to define how the child components should be laid out in relation to each other. The task for layouting the child components for presentation is delegated to a Layouter which can be plugged in at runtime.

Specified by:
layout in interface CompositeFigure
Overrides:
layout in class BezierFigure

invalidate

public void invalidate()
Description copied from class: AbstractFigure
Invalidates cached data of the Figure. This method must execute fast, because it can be called very often.

Overrides:
invalidate in class BezierFigure

validate

public void validate()
Overrides:
validate in class LineConnectionFigure

addNotify

public void addNotify(Drawing drawing)
Description copied from class: LineConnectionFigure
This method is invoked, when the Figure is being removed from a Drawing. This method invokes handleConnect, if the Figure is connected.

Specified by:
addNotify in interface Figure
Overrides:
addNotify in class LineConnectionFigure
See Also:
LineConnectionFigure.handleConnect(org.jhotdraw.draw.connector.Connector, org.jhotdraw.draw.connector.Connector)

removeNotify

public void removeNotify(Drawing drawing)
Description copied from class: LineConnectionFigure
This method is invoked, when the Figure is being removed from a Drawing. This method invokes handleDisconnect, if the Figure is connected.

Specified by:
removeNotify in interface Figure
Overrides:
removeNotify in class LineConnectionFigure
See Also:
LineConnectionFigure.handleDisconnect(org.jhotdraw.draw.connector.Connector, org.jhotdraw.draw.connector.Connector)

removeCompositeFigureListener

public void removeCompositeFigureListener(CompositeFigureListener listener)
Description copied from interface: CompositeFigure
Removes a listener from this composite figure.

Specified by:
removeCompositeFigureListener in interface CompositeFigure

addCompositeFigureListener

public void addCompositeFigureListener(CompositeFigureListener listener)
Description copied from interface: CompositeFigure
Adds a listener for this composite figure.

Specified by:
addCompositeFigureListener in interface CompositeFigure

fireFigureAdded

protected void fireFigureAdded(Figure f,
                               int zIndex)
Notify all listenerList that have registered interest for notification on this event type.


fireFigureRemoved

protected void fireFigureRemoved(Figure f,
                                 int zIndex)
Notify all listenerList that have registered interest for notification on this event type.


clone

public LabeledLineConnectionFigure clone()
Description copied from interface: Figure
Returns a clone of the figure, with clones of all aggregated figures, such as children and decorators. The cloned figure does not clone the list of FigureListeners from its original.

Specified by:
clone in interface Figure
Overrides:
clone in class LineConnectionFigure

remap

public void remap(java.util.Map<Figure,Figure> oldToNew,
                  boolean disconnectIfNotInMap)
Description copied from interface: Figure
After cloning a collection of figures, the ConnectionFigures contained in this collection still connect to the original figures instead of to the clones. Using This operation and providing a map, which maps from the original collection of figures to the new collection, connections can be remapped to the new figures.

Specified by:
remap in interface Figure
Overrides:
remap in class LineConnectionFigure

contains

public boolean contains(Figure f)
Description copied from interface: CompositeFigure
Returns true if this composite figure contains the specified figure.

This is a convenience method for calling getChildren().contains(f);.

Specified by:
contains in interface CompositeFigure

indexOf

public int indexOf(Figure child)
Description copied from interface: CompositeFigure
Returns the index of the specified child.

This is a convenience method for calling getChildren().indexOf(index);.

Specified by:
indexOf in interface CompositeFigure
Returns:
The index of the child, or -1 if the specified figure is not a child of this CompositeFigure.

Copyright 1996-2010 (c) by the authors and contributors of the JHotDraw project.
Some rights reserved.