com.jfimagine.jfgraph.shape.line
Class JFRegularLine

java.lang.Object
  |
  +--com.jfimagine.jfgraph.shape.base.AbstractObject
        |
        +--com.jfimagine.jfgraph.shape.base.AbstractShape
              |
              +--com.jfimagine.jfgraph.shape.line.JFRegularLine
All Implemented Interfaces:
java.lang.Cloneable

public class JFRegularLine
extends AbstractShape

JFRegularLine class. A regular line should be constructed by one or more vertical or horizontal line segments.

Version:
$Revision: 1.1 $
Author:
CookieMaker

Field Summary
protected  Arrow m_arrow
          arrow format of current line.
protected  LineFormat m_lineFormat
          line format of current line.
static java.lang.String XML_REGULARLINE
          A XML string tag represents a Line
 
Fields inherited from class com.jfimagine.jfgraph.shape.base.AbstractShape
m_boundsNodeList, m_fontFormat, m_label, m_nodeList, m_portList, m_propertyList, XML_DISABLEMODIFYINGPROPERTIES, XML_DISABLEMOTION, XML_DISABLESCALING, XML_INVISIBLE, XML_LABEL, XML_SHOWLABEL
 
Fields inherited from class com.jfimagine.jfgraph.shape.base.AbstractObject
m_lastError, XML_OBJECTID, XML_OBJECTTYPE
 
Constructor Summary
JFRegularLine()
          Constructor for Regular Line
JFRegularLine(int[] xpoints, int[] ypoints, int npoints)
          Constructor for Regular Line
 
Method Summary
 void addNode(double x, double y)
          Add a new node for current node list.
 Port addPort(double x, double y)
          Add a new port to this shape.
protected  void appendChildToDOM(Element element, JFVersion version)
          Append necessary xml child for current element, this method will be called internally by toDOM.
 java.lang.Object clone()
          Creates a new object of the same class and with the same contents as this object.
protected  AbstractObject cloneMe()
          Creates a new AbstractObject of the same class and with the same contents as this object.
 void draw(java.awt.Graphics g, boolean isXorMode)
          Draw current object on graphic canvas.
protected  void drawArrow(java.awt.Graphics g)
          Draw current object's arrows.
 void drawNewNodeTo(double x, double y, java.awt.Graphics g)
          Draw and drag last point to specified position.
 boolean equals(java.lang.Object obj)
          Determines whether or not two objects are equal.
protected  void extractChildFromDOM(Element element, JFVersion version)
          Extract needed xml child from current element, this method will be called internally by fromDOM.
 boolean finishDrawing()
          Finish drawing object.
 void finishMoveNode(Node node, double x, double y, java.awt.Graphics g)
          finish move/adjust a node of current object.
 void finishMoveRegularLineNode(double x, double y)
          When move regularLine node, all of its relational ports will be moved concurrently,
 void flipBy()
          Reverse this object by a central y coordinate of this object.
 void flipBy(double baseY)
          Reverse this object by a y coordinate.
 Arrow getArrow()
          Get the arrow format of current object.
 Rect getBounds()
          Get the bounds of this rectangle.
 LineFormat getLineFormat()
          Get the line format of current line.
 int hashCode()
          Returns the hashcode for this Object.
 boolean ifCompleteDrawing()
          If a regularline has been drew.
protected  void initPorts()
          Init all ports of this regular line.
 boolean intersects(JFPoint pnt)
          Test if current object intersects with a specified point.
 boolean intersects(Rect rect)
          Test if current object intersects with a specified rectangle.
 boolean isOpenShape()
          Ask if this object is an open shape,e.g. line,curve,arc,etc.
 boolean isRotatable()
          Ask if this object is rotatable.
 void loadFromStream(JFReader stream, boolean skipHead, JFVersion version)
          Load object data from a binary stream
 void mirrorBy()
          Mirror this object by a central x coordinate of this object.
 void mirrorBy(double baseX)
          Mirror this object by a x coordinate.
 void moveBy(double x, double y)
          Move current object by an x and y offset.
 void moveNode(Node node, double x, double y, java.awt.Graphics g)
          Move/adjust a node of current object.
 boolean movePort(Port port, double x, double y)
          Move/adjust a port of current object.
 Node removeLastNode()
          Remove last node added by addNode method.
 void rotateBy(double theta)
          Rotate this object by an angle theta.
 void rotateBy(double baseX, double baseY, double theta)
          Rotate current object by a specified point and an angle theta.
 void saveToStream(JFWriter stream, JFVersion version)
          Save this object to a binary stream
 void scaleBy(JFPoint basePoint, double xScale, double yScale)
          Scale current object by a specified x and y scale.
 void scaleBy(JFPoint basePoint, JFPoint refPoint1, JFPoint refPoint2, double scale)
          Scale current object by specified points and scale percent.
 void setArrow(Arrow arrow)
          Set the arrow format of current object.
 void setLineFormat(LineFormat lineFormat)
          Set the line format of current line.
 void setNodeList(ObjectList nodeList)
          Set a node list of this shape.
 void setPortList(ObjectList portList, ObjectList shapeList)
          Set a port list of this shape.
 void startMoveNode(Node node)
          Start move a node.
 java.lang.String toString()
          Convert this object to String
 
Methods inherited from class com.jfimagine.jfgraph.shape.base.AbstractShape
addNode, attachPort, attachRealPort, attachRealPort, clearAccessTimes, detachPort, drawInvisibleBounds, drawLabel, drawLabelPicked, drawPicked, drawPort, fetchSubObjects, finishMoveLabel, getAccessTimes, getFillFormat, getFontFormat, getLabel, getMoveNodePos, getNodeByIndex, getNodeByObjectId, getNodeCount, getNodeList, getPortByIndex, getPortByObjectId, getPortCount, getPortList, getPropertyByIndex, getPropertyByObjectId, getPropertyCount, getPropertyList, incAccessTimes, initBoundsNodeList, initLabel, isDisableModifyingProperties, isDisableMotion, isDisableScaling, isInvisible, labelIntersects, labelIntersects, moveRelationalPorts, nodeIntersects, pickPort, portIntersects, removePort, rotateNode, setDisableModifyingProperties, setDisableMotion, setDisableScaling, setFillFormat, setFontFormat, setInvisible, setLabel, setObjectId, setParent, setZoomScale, startMoveLabel, unboundBrokenPorts
 
Methods inherited from class com.jfimagine.jfgraph.shape.base.AbstractObject
fromDOM, getLastError, getMaxObjectId, getObjectId, getObjectType, getXMLTag, getZoomScale, isShowDesign, setLastError, setObjectType, setShowDesign, setValue, setXMLTag, toDOM
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

XML_REGULARLINE

public static final java.lang.String XML_REGULARLINE
A XML string tag represents a Line

See Also:
Constant Field Values

m_arrow

protected Arrow m_arrow
arrow format of current line.


m_lineFormat

protected LineFormat m_lineFormat
line format of current line.

Constructor Detail

JFRegularLine

public JFRegularLine()
Constructor for Regular Line


JFRegularLine

public JFRegularLine(int[] xpoints,
                     int[] ypoints,
                     int npoints)
Constructor for Regular Line

Parameters:
xpoints - an array of x coordinates
ypoints - an array of y coordinates
npoints - the total number of points in the Polygon
Method Detail

getArrow

public Arrow getArrow()
Get the arrow format of current object.

Overrides:
getArrow in class AbstractShape
Returns:
The arrow format.

setArrow

public void setArrow(Arrow arrow)
Set the arrow format of current object.

Overrides:
setArrow in class AbstractShape
Parameters:
arrow - A new arrow format object.

getLineFormat

public LineFormat getLineFormat()
Get the line format of current line.

Overrides:
getLineFormat in class AbstractShape
Returns:
The line format.

setLineFormat

public void setLineFormat(LineFormat lineFormat)
Set the line format of current line.

Overrides:
setLineFormat in class AbstractShape
Parameters:
lineFormat - A new line format.

getBounds

public Rect getBounds()
Get the bounds of this rectangle.

Overrides:
getBounds in class AbstractShape
Returns:
The bounds rectangle of current rectangle.

isOpenShape

public boolean isOpenShape()
Ask if this object is an open shape,e.g. line,curve,arc,etc.

Overrides:
isOpenShape in class AbstractShape
Returns:
true if open,false closed.

setNodeList

public void setNodeList(ObjectList nodeList)
Set a node list of this shape.

Overrides:
setNodeList in class AbstractShape
Parameters:
nodeList - A new node list.

addNode

public void addNode(double x,
                    double y)
Add a new node for current node list. here this method will always be called by DrawState class or any drawing class.

Overrides:
addNode in class AbstractShape

finishDrawing

public boolean finishDrawing()
Finish drawing object.

Overrides:
finishDrawing in class AbstractShape

removeLastNode

public Node removeLastNode()
Remove last node added by addNode method.

Overrides:
removeLastNode in class AbstractShape
Returns:
Last node that remained.

ifCompleteDrawing

public boolean ifCompleteDrawing()
If a regularline has been drew.

Overrides:
ifCompleteDrawing in class AbstractShape
Returns:
True when complete, false otherwise.

intersects

public boolean intersects(JFPoint pnt)
Test if current object intersects with a specified point.

Specified by:
intersects in class AbstractShape
Parameters:
pnt - A JFPoint used to test intersection.

intersects

public boolean intersects(Rect rect)
Test if current object intersects with a specified rectangle.

Specified by:
intersects in class AbstractShape
Parameters:
rect - A Rect used to test intersection.

scaleBy

public void scaleBy(JFPoint basePoint,
                    JFPoint refPoint1,
                    JFPoint refPoint2,
                    double scale)
Scale current object by specified points and scale percent. We only support a concurrent width-height scale here, suppose width as the length from basePoint to refPoint1, height as the length from basePoint to refPoint2, and one scale percent acts on both width and height.

Specified by:
scaleBy in class AbstractShape
Parameters:
basePoint - A base point that is unmovable.
refPoint1 - A 'width' reference point.
refPoint2 - A 'height' reference point.
scale - A reference scale percent.

scaleBy

public void scaleBy(JFPoint basePoint,
                    double xScale,
                    double yScale)
Scale current object by a specified x and y scale.
This is a special scale method used to scale a shape in arbitrary x and y scale.
Please see AbstractShape.scaleBy for detailed description.

Specified by:
scaleBy in class AbstractShape
Parameters:
basePoint - A base scale point for scaling reference.
xScale - A scale percentage in x coordinate, default to 1.0
yScale - A scale percentage in y coordinate, default to 1.0

moveBy

public void moveBy(double x,
                   double y)
Move current object by an x and y offset.

Specified by:
moveBy in class AbstractShape

isRotatable

public boolean isRotatable()
Ask if this object is rotatable.

Overrides:
isRotatable in class AbstractShape
Returns:
true if rotatable, false otherwise.

rotateBy

public void rotateBy(double theta)
Rotate this object by an angle theta.

Specified by:
rotateBy in class AbstractShape
Parameters:
theta - A rotate angle.

rotateBy

public void rotateBy(double baseX,
                     double baseY,
                     double theta)
Rotate current object by a specified point and an angle theta.

Specified by:
rotateBy in class AbstractShape
Parameters:
theta - A rotate angle.

mirrorBy

public void mirrorBy()
Mirror this object by a central x coordinate of this object. We make a left-right flip here.

Specified by:
mirrorBy in class AbstractShape

mirrorBy

public void mirrorBy(double baseX)
Mirror this object by a x coordinate. We make a left-right mirror here.

Specified by:
mirrorBy in class AbstractShape
Parameters:
baseX - A mirror base x coordinate.

flipBy

public void flipBy()
Reverse this object by a central y coordinate of this object. We make a up-down flip here.

Specified by:
flipBy in class AbstractShape

flipBy

public void flipBy(double baseY)
Reverse this object by a y coordinate. We make a up-down flip here.

Specified by:
flipBy in class AbstractShape
Parameters:
baseY - A flip base y coordinate.

drawArrow

protected void drawArrow(java.awt.Graphics g)
Draw current object's arrows.


draw

public void draw(java.awt.Graphics g,
                 boolean isXorMode)
Draw current object on graphic canvas.

Specified by:
draw in class AbstractShape
Parameters:
g - A graphic canvas.
isXorMode - If is in xor mode now.

initPorts

protected void initPorts()
Init all ports of this regular line. An object will always has its one or more stable ports and some customized ports, for JFRegularLine, it will has two stable ports as below, port1 at start point of the line. port2 at end point of the line.


setPortList

public void setPortList(ObjectList portList,
                        ObjectList shapeList)
Set a port list of this shape.

Overrides:
setPortList in class AbstractShape
Parameters:
portList - A new port list.
shapeList - All shape objects in a list.

addPort

public Port addPort(double x,
                    double y)
Add a new port to this shape.

Overrides:
addPort in class AbstractShape

startMoveNode

public void startMoveNode(Node node)
Start move a node.

Overrides:
startMoveNode in class AbstractShape
Parameters:
node - The node will be moved.

drawNewNodeTo

public void drawNewNodeTo(double x,
                          double y,
                          java.awt.Graphics g)
Draw and drag last point to specified position. This method will be called while dragging and drawing a new node for regularline.

Parameters:
g - current drawing canvas.

moveNode

public void moveNode(Node node,
                     double x,
                     double y,
                     java.awt.Graphics g)
Move/adjust a node of current object.

Overrides:
moveNode in class AbstractShape
Parameters:
node - Currently moving node.
g - current drawing canvas.

movePort

public boolean movePort(Port port,
                        double x,
                        double y)
Move/adjust a port of current object. A move port event will always occured by relative objects' moving event.

Overrides:
movePort in class AbstractShape
Parameters:
port - Currently moving port.
Returns:
True if successfully moved, false otherwise.

finishMoveRegularLineNode

public void finishMoveRegularLineNode(double x,
                                      double y)
When move regularLine node, all of its relational ports will be moved concurrently,


finishMoveNode

public void finishMoveNode(Node node,
                           double x,
                           double y,
                           java.awt.Graphics g)
finish move/adjust a node of current object.

Overrides:
finishMoveNode in class AbstractShape
Parameters:
node - Currently moving node.
g - current drawing canvas.

toString

public java.lang.String toString()
Convert this object to String

Overrides:
toString in class AbstractShape
Returns:
An string represents the content of the object

cloneMe

protected AbstractObject cloneMe()
                          throws java.lang.CloneNotSupportedException
Creates a new AbstractObject of the same class and with the same contents as this object. This method implements the method defined in AbstractObject.

Specified by:
cloneMe in class AbstractObject
Returns:
A clone of this class.
java.lang.CloneNotSupportedException

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Creates a new object of the same class and with the same contents as this object.

Overrides:
clone in class AbstractShape
Returns:
A clone of this instance.
java.lang.CloneNotSupportedException

hashCode

public int hashCode()
Returns the hashcode for this Object.

Overrides:
hashCode in class AbstractShape
Returns:
hash code for this Point2D.

equals

public boolean equals(java.lang.Object obj)
Determines whether or not two objects are equal.

Overrides:
equals in class AbstractShape
Parameters:
obj - an object to be compared with this object
Returns:
true if the object to be compared is an instance of Port and has the same values; false otherwise.

appendChildToDOM

protected void appendChildToDOM(Element element,
                                JFVersion version)
Append necessary xml child for current element, this method will be called internally by toDOM.

Overrides:
appendChildToDOM in class AbstractShape
Parameters:
element - A XML element to append child xml nodes
version - A file version notification so this object can obey the rules to save data.

extractChildFromDOM

protected void extractChildFromDOM(Element element,
                                   JFVersion version)
Extract needed xml child from current element, this method will be called internally by fromDOM.

Overrides:
extractChildFromDOM in class AbstractShape
Parameters:
element - An element used to extract needed xml child
version - A file version notification so this object can obey the rules to fetch data.

saveToStream

public void saveToStream(JFWriter stream,
                         JFVersion version)
                  throws java.io.IOException
Save this object to a binary stream

Overrides:
saveToStream in class AbstractShape
Parameters:
stream - An binary output stream
version - A file version notification so this object can obey the rules to save data.
Throws:
java.io.IOException

loadFromStream

public void loadFromStream(JFReader stream,
                           boolean skipHead,
                           JFVersion version)
                    throws java.io.IOException
Load object data from a binary stream

Overrides:
loadFromStream in class AbstractShape
Parameters:
stream - An binary input stream
skipHead - Skip head 'TYPE' check, an shape object should always has its own shape-type stored, if this shape-type has already been readed, this loadFromStream should/could not read the type anymore.
version - A file version notification so this object can obey the rules to fetch data.
Throws:
java.io.IOException


Copyright 2004 ~ 2005 JingFei International Cooperation LTD. All Rights Reserved.