diva.canvas.connector
Class StraightTerminal

java.lang.Object
  extended by diva.canvas.AbstractFigure
      extended by diva.canvas.connector.StraightTerminal
All Implemented Interfaces:
CanvasComponent, Terminal, Figure, VisibleComponent, UserObjectContainer

public class StraightTerminal
extends AbstractFigure
implements Terminal

A terminal that consists of a straight line plus an additional decoration at the connection end of the terminal.

Version:
$Id: StraightTerminal.java 57040 2010-01-27 20:52:32Z cxh $
Author:
John Reekie

Nested Class Summary
private  class StraightTerminal.ConnectSite
          The site at which a connector can connect to a straight terminal.
 
Field Summary
private  Site _attachSite
          The attachment site
private  Site _connectSite
          The connection site
private  ConnectorEnd _end
          The end decoration
private  double _length
          The length of the terminal
private  java.awt.geom.Line2D _line
          The line that is drawn to display the terminal
private  java.awt.Paint _paint
          The paint of the line
private  java.awt.Stroke _stroke
          The stroke of the line
 
Constructor Summary
StraightTerminal()
          Create a new terminal which is not attached to anything.
StraightTerminal(Site attachSite)
          Create a new terminal attached to the given site.
StraightTerminal(Site attachSite, java.awt.Stroke stroke, java.awt.Paint paint)
          Create a new terminal attached to the given site, with the given stroke and paint.
 
Method Summary
 Site getAttachSite()
          Get the site to which the terminal is attached
 java.awt.geom.Rectangle2D getBounds()
          Get the bounding box of this terminal.
 Site getConnectSite()
          Get the site to which a connector can attach
 ConnectorEnd getEnd()
          Get the object drawn at the end of the terminal, if there is one.
 java.awt.Paint getPaint()
          Get the paint of this terminal.
 java.awt.Shape getShape()
          Get the outline shape of this terminal.
 java.awt.Stroke getStroke()
          Get the stroke of this terminal.
 boolean hit(java.awt.geom.Rectangle2D r)
          Test if this terminal is hit by the given rectangle.
 void paint(java.awt.Graphics2D g)
          Paint the terminal.
private  void recompute()
          Tell the terminal to completely recompute its shape.
 void relocate()
          Tell the terminal to reposition itself over the attachment site.
 void setAttachSite(Site s)
          Set the site to which the terminal is attached.
 void setEnd(ConnectorEnd e)
          Set the object drawn at the end of the terminal.
 void setPaint(java.awt.Paint p)
          Set the stroke paint pattern of this terminal.
 void setStroke(java.awt.Stroke s)
          Set the stroke of this terminal.
 void transform(java.awt.geom.AffineTransform at)
          Transform the terminal.
 void translate(double x, double y)
          Translate the terminal.
 
Methods inherited from class diva.canvas.AbstractFigure
contains, getInteractor, getLayer, getOrigin, getParent, getToolTipText, getTransformContext, getUserObject, intersects, isVisible, paint, repaint, repaint, setInteractor, setParent, setToolTipText, setUserObject, setVisible
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface diva.canvas.Figure
contains, getInteractor, getLayer, getOrigin, getParent, getToolTipText, intersects, setInteractor, setParent, setToolTipText
 
Methods inherited from interface diva.canvas.VisibleComponent
isVisible, paint, setVisible
 
Methods inherited from interface diva.canvas.CanvasComponent
getTransformContext, repaint, repaint
 
Methods inherited from interface diva.util.UserObjectContainer
getUserObject, setUserObject
 

Field Detail

_end

private ConnectorEnd _end
The end decoration


_attachSite

private Site _attachSite
The attachment site


_connectSite

private Site _connectSite
The connection site


_length

private double _length
The length of the terminal


_line

private java.awt.geom.Line2D _line
The line that is drawn to display the terminal


_stroke

private java.awt.Stroke _stroke
The stroke of the line


_paint

private java.awt.Paint _paint
The paint of the line

Constructor Detail

StraightTerminal

public StraightTerminal()
Create a new terminal which is not attached to anything. The terminal should not be displayed until after setAttachSite() is called.


StraightTerminal

public StraightTerminal(Site attachSite)
Create a new terminal attached to the given site.


StraightTerminal

public StraightTerminal(Site attachSite,
                        java.awt.Stroke stroke,
                        java.awt.Paint paint)
Create a new terminal attached to the given site, with the given stroke and paint. If the attach site is not yet available, pass a NullSite.

Method Detail

getAttachSite

public Site getAttachSite()
Get the site to which the terminal is attached

Specified by:
getAttachSite in interface Terminal

getBounds

public java.awt.geom.Rectangle2D getBounds()
Get the bounding box of this terminal.

Specified by:
getBounds in interface Figure
Overrides:
getBounds in class AbstractFigure

getConnectSite

public Site getConnectSite()
Get the site to which a connector can attach

Specified by:
getConnectSite in interface Terminal

getEnd

public ConnectorEnd getEnd()
Get the object drawn at the end of the terminal, if there is one.


getPaint

public java.awt.Paint getPaint()
Get the paint of this terminal.


getShape

public java.awt.Shape getShape()
Get the outline shape of this terminal.

Specified by:
getShape in interface Figure
Specified by:
getShape in class AbstractFigure

getStroke

public java.awt.Stroke getStroke()
Get the stroke of this terminal.


hit

public boolean hit(java.awt.geom.Rectangle2D r)
Test if this terminal is hit by the given rectangle.

Specified by:
hit in interface Figure
Overrides:
hit in class AbstractFigure

paint

public void paint(java.awt.Graphics2D g)
Paint the terminal.

Specified by:
paint in interface VisibleComponent
Specified by:
paint in class AbstractFigure

recompute

private void recompute()
Tell the terminal to completely recompute its shape.


relocate

public void relocate()
Tell the terminal to reposition itself over the attachment site.

Specified by:
relocate in interface Terminal

setAttachSite

public void setAttachSite(Site s)
Set the site to which the terminal is attached.

Specified by:
setAttachSite in interface Terminal

setEnd

public void setEnd(ConnectorEnd e)
Set the object drawn at the end of the terminal.


setStroke

public void setStroke(java.awt.Stroke s)
Set the stroke of this terminal. Currently, this call has no effect on the terminal end shape, if it has one.


setPaint

public void setPaint(java.awt.Paint p)
Set the stroke paint pattern of this terminal. Currently, this call has no effect on the terminal end shape, if it has one.


transform

public void transform(java.awt.geom.AffineTransform at)
Transform the terminal. This is ignored, since the location and orientation of a terminal is determined solely by its attachment site and other parameters.

Specified by:
transform in interface Figure
Specified by:
transform in class AbstractFigure

translate

public void translate(double x,
                      double y)
Translate the terminal. This is implemented since it is the most efficient way for figures that contain terminals to translate themselves. However, this method does not call repaint(), on the assumption that the parent figure will do so anyway.

Specified by:
translate in interface Figure
Overrides:
translate in class AbstractFigure