Class TextFragment

java.lang.Object
  |
  +--AbstractBox
        |
        +--AbstractRigidBox
              |
              +--TextFragment
All Implemented Interfaces:
Box, RigidBox

public class TextFragment
extends AbstractRigidBox

A fragment of text. This is the basic building-block of all paragraphs. A TextFragment is meant to be used together with other fragments to form larger pieces of text. Each fragment has it's own content, font, and may be a link.


Fields inherited from class AbstractRigidBox
pen
 
Fields inherited from class AbstractBox
height, min_width, pref_width, width
 
Fields inherited from interface RigidBox
BOTH, LEFT, RIGHT
 
Constructor Summary
TextFragment(java.lang.String str, java.awt.Font f, java.net.URL u)
          Creates a new TextFragment.
 
Method Summary
 void doLayout(java.awt.Graphics g, javax.swing.JComponent c, int w)
          Makes the box update it's own width and height, and layout it's child-boxes.
 void drawAt(int x, int y, DocumentView v)
          Draws the box with it's upper-left corner at (x, y).
 Box getLargestTail()
          Tries to make the largest right part from a split.
 int getMinimumWidth()
          Returns the minimum width of this TextFragment.
 Box getSmallestHead()
          Tries to make the smallest left part from a split.
 Box splitHead(int w)
          Tries to split the box at w.
 boolean splitIsPossible(int w)
          Reports if a split is possible at w.
 Box splitTail(int w)
          Tries to split the box at w.
 java.lang.String toString()
          Gives you information about the box.
 void trim(int edge)
          Pretends to trim the box - it does nothing as the body of the method is empty.
 
Methods inherited from class AbstractBox
getHeight, getPreferredWidth, getWidth
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface Box
getHeight, getPreferredWidth, getWidth
 

Constructor Detail

TextFragment

public TextFragment(java.lang.String str,
                    java.awt.Font f,
                    java.net.URL u)
Creates a new TextFragment.
Parameters:
str - the string contained within this fragment. The string should contain any white-space necessary to ensure correct spacing when this fragment is placed side-to-side with other fragments.
f - the font that will be used when rendering the fragment. The font is also used when the content is meassured.
u - the URL that this fragment links to. If the fragment doesn't link to anywhere u should be null.
Method Detail

doLayout

public void doLayout(java.awt.Graphics g,
                     javax.swing.JComponent c,
                     int w)
Description copied from interface: Box
Makes the box update it's own width and height, and layout it's child-boxes.
Overrides:
doLayout in class AbstractBox
Following copied from interface: Box
Parameters:
g - the graphics context. Some boxes, like TextFragments, need a graphics context before they can determine their width and height.
c - the component into which the box will be drawn. An ImageBox needs to know the component to calculate the width and height.
w - the width available for to the Box.

getMinimumWidth

public int getMinimumWidth()
Returns the minimum width of this TextFragment. The result is calculated by meassuring every word in the string and is only calculated once for each fragment.
Overrides:
getMinimumWidth in class AbstractBox
Returns:
the minimum width.

splitIsPossible

public boolean splitIsPossible(int w)
Reports if a split is possible at w. For a fragment to be split, it must contain more than a single word. If it does, the width of the initial word (plus any white space at the beginning) is meassured and compared with w.
Overrides:
splitIsPossible in class AbstractRigidBox
Parameters:
w - the desired width of the head.
Returns:
true if w is greather than the length of the initial word.

drawAt

public void drawAt(int x,
                   int y,
                   DocumentView v)
Description copied from interface: Box
Draws the box with it's upper-left corner at (x, y).
Overrides:
drawAt in class AbstractBox
Following copied from interface: Box
Parameters:
v - the DocumentView that does the actual drawing.
x - the x-coordinate of the upper-left corner.
x - the y-coordinate of the upper-left corner.

splitHead

public Box splitHead(int w)
Description copied from class: AbstractRigidBox
Tries to split the box at w.
Overrides:
splitHead in class AbstractRigidBox
Following copied from class: AbstractRigidBox
Parameters:
w - the place where the split should be.
Returns:
always null to indicate that the box can't be split.

splitTail

public Box splitTail(int w)
Description copied from class: AbstractRigidBox
Tries to split the box at w.
Overrides:
splitTail in class AbstractRigidBox
Following copied from class: AbstractRigidBox
Parameters:
w - the place where the split should be.
Returns:
always null to indicate that the box can't be split.

getSmallestHead

public Box getSmallestHead()
Description copied from class: AbstractRigidBox
Tries to make the smallest left part from a split.
Overrides:
getSmallestHead in class AbstractRigidBox
Following copied from class: AbstractRigidBox
Returns:
always null to indicate that the box can't be split.

getLargestTail

public Box getLargestTail()
Description copied from class: AbstractRigidBox
Tries to make the largest right part from a split.
Overrides:
getLargestTail in class AbstractRigidBox
Following copied from class: AbstractRigidBox
Returns:
always null to indicate that the box can't be split.

trim

public void trim(int edge)
Description copied from class: AbstractRigidBox
Pretends to trim the box - it does nothing as the body of the method is empty.
Overrides:
trim in class AbstractRigidBox
Following copied from class: AbstractRigidBox
Parameters:
edge - to be trimmed. The value is discarded.

toString

public java.lang.String toString()
Description copied from interface: Box
Gives you information about the box.
Overrides:
toString in class AbstractBox
Following copied from interface: Box
Returns:
information about the box - usefull for debugging.