net.sf.vex.layout
Class PlaceholderBox

java.lang.Object
  |
  +--net.sf.vex.layout.AbstractBox
        |
        +--net.sf.vex.layout.PlaceholderBox
All Implemented Interfaces:
Box, InlineBox

public class PlaceholderBox
extends AbstractBox
implements InlineBox

A zero-width box that represents a single offset in the document.


Nested Class Summary
 
Nested classes inherited from class net.sf.vex.layout.InlineBox
InlineBox.Pair
 
Constructor Summary
PlaceholderBox(LayoutContext context, Element element, int relOffset)
          Class constructor.
 
Method Summary
 boolean canBreakAtEnd()
          Returns true if a line break can occur after this box.
 int getBaseline()
          Returns the distance from the top of the inline box to the baseline.
 java.awt.Shape[] getCaretShapes(LayoutContext context, int offset)
          Returns shapes for the primary and secondary carets for the given offset.
 Element getElement()
          Returns the Element with which this box is associated, or null if there is no such box.
 int getEndOffset()
          Returns the offset of the end of the content that the box covers.
 int getStartOffset()
          Returns the offset of the start of the content that the box covers.
 boolean hasContent()
          Returns true if this box represents a portion of the XML document's content.
 InlineBox.Pair split(LayoutContext context, int maxWidth, boolean force)
          Splits this inline box into two.
 java.lang.String toString()
           
 int viewToModel(LayoutContext context, int x, int y)
          Returns the offset in the content closest to the given view position.
 
Methods inherited from class net.sf.vex.layout.AbstractBox
containsOffset, getChildren, getHeight, getWidth, getX, getY, paint, setHeight, setWidth, setX, setY, skipPaint
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.vex.layout.Box
containsOffset, getChildren, getHeight, getWidth, getX, getY, paint, setX, setY
 

Constructor Detail

PlaceholderBox

public PlaceholderBox(LayoutContext context,
                      Element element,
                      int relOffset)
Class constructor.

Parameters:
element - Element containing this placeholder. the element is used both to determine the size of the box and its caret, but also as a base point for relOffset.
Method Detail

canBreakAtEnd

public boolean canBreakAtEnd()
Description copied from interface: InlineBox
Returns true if a line break can occur after this box. For example, this would be true for text boxes that end with a space.

Specified by:
canBreakAtEnd in interface InlineBox
See Also:
InlineBox.canBreakAtEnd()

getBaseline

public int getBaseline()
Description copied from interface: InlineBox
Returns the distance from the top of the inline box to the baseline.

Specified by:
getBaseline in interface InlineBox
See Also:
InlineBox.getBaseline()

split

public InlineBox.Pair split(LayoutContext context,
                            int maxWidth,
                            boolean force)
Description copied from interface: InlineBox
Splits this inline box into two. If force is false, this method should find a natural split point (e.g. after a space) and return two boxes representing a split at that point. The width of the last box must not exceed maxWidth. If no such natural split exists, null should be returned as the left box and this returned as the right box.

If force is true, it means we are adding the first inline box to a line, therefore we must return something as the left box. In some cases, we may find a suboptimal split (e.g. between characters) that satisfies this. In other cases, this should be returned as the left box even though it exceeds maxWidth.

In both cases, the right box should contain null if this box fits into maxWidth

Specified by:
split in interface InlineBox
Parameters:
context - the layout context to be used.
maxWidth - Maximum width of the left part of the box.
force - if true, force a suboptimal split
See Also:
InlineBox.split(net.sf.vex.layout.LayoutContext, int, boolean)

getCaretShapes

public java.awt.Shape[] getCaretShapes(LayoutContext context,
                                       int offset)
Description copied from interface: Box
Returns shapes for the primary and secondary carets for the given offset. A two-element array is returned, with the first entry being the primary caret and the second being the secondary caret. The second entry will be null if there is no secondary caret at the given offset. The position of the carets is relative to the top-left corner of the box.

Specified by:
getCaretShapes in interface Box
Overrides:
getCaretShapes in class AbstractBox
Parameters:
context - LayoutContext to be used
offset - offset for which to retrieve the caret
Returns:
a two-element array of Shape objects
See Also:
Box.getCaretShapes(net.sf.vex.layout.LayoutContext, int)

getElement

public Element getElement()
Description copied from interface: Box
Returns the Element with which this box is associated, or null if there is no such box. The box may directly represent the Element, or simply use it for formatting information.

Specified by:
getElement in interface Box
Overrides:
getElement in class AbstractBox
See Also:
Box.getElement()

getEndOffset

public int getEndOffset()
Description copied from interface: Box
Returns the offset of the end of the content that the box covers.

Specified by:
getEndOffset in interface Box
Overrides:
getEndOffset in class AbstractBox
See Also:
Box.getEndOffset()

getStartOffset

public int getStartOffset()
Description copied from interface: Box
Returns the offset of the start of the content that the box covers.

Specified by:
getStartOffset in interface Box
Overrides:
getStartOffset in class AbstractBox
See Also:
Box.getStartOffset()

hasContent

public boolean hasContent()
Description copied from interface: Box
Returns true if this box represents a portion of the XML document's content. If false is returned, the following methods are not supported by this box.

Specified by:
hasContent in interface Box
Overrides:
hasContent in class AbstractBox
See Also:
Box.hasContent()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
See Also:
Object.toString()

viewToModel

public int viewToModel(LayoutContext context,
                       int x,
                       int y)
Description copied from interface: Box
Returns the offset in the content closest to the given view position.

Specified by:
viewToModel in interface Box
Overrides:
viewToModel in class AbstractBox
Parameters:
context - LayoutContext for this box tree
x - x offset of the view position for which the model offset is to be determined.
y - y offset of the view position for which the model offset is to be determined.
See Also:
Box.viewToModel(net.sf.vex.layout.LayoutContext, int, int)