org.eclipse.draw2d.text

## Class FlowFigure

- java.lang.Object
- - org.eclipse.draw2d.Figure
  - - org.eclipse.draw2d.text.FlowFigure

All Implemented Interfaces:
  IFigure

Direct Known Subclasses:
  BlockFlow, FlowAdapter, InlineFlow

    public abstract class FlowFigure
    extends Figure

The base implementation for text flow figures. A flow figure is used to render a document in which elements are laid out horizontally within a "line" until that line is filled. Layout continues on the next line.

WARNING: This class is not intended to be subclassed by clients. Future versions may contain additional abstract methods.

Since:
  2.1

### Nested Class Summary

### Nested classes/interfaces inherited from class org.eclipse.draw2d.Figure

`Figure.FigureIterator, Figure.IdentitySearch`

### Nested classes/interfaces inherited from interface org.eclipse.draw2d.IFigure

`IFigure.NoInsets`

### Field Summary

Fields
`protected int` `selectionStart` integer indicating whether selection should be displayed.

### Fields inherited from class org.eclipse.draw2d.Figure

`bgColor, border, bounds, fgColor, flags, font, MAX_FLAG, maxSize, minSize, NO_MANAGER, prefSize, toolTip`

### Fields inherited from interface org.eclipse.draw2d.IFigure

`MAX_DIMENSION, MIN_DIMENSION, NO_INSETS`

### Constructor Summary

Constructors
Constructor and Description
`FlowFigure()` Constructs a new FlowFigure.

### Method Summary

Methods
`void` `add(IFigure child, java.lang.Object constraint, int index)` If the child is a `FlowFigure`, its FlowContext is passed to it.
`boolean` `addLeadingWordRequirements(int[] width)` Calculates the width of text before the next line-break is encountered.
`protected void` `contributeBidi(BidiProcessor proc)` FlowFigures can contribute text for their block to the given `BidiProcessor`, which will process the contributions to determine Bidi levels and shaping requirements.
`protected abstract FlowFigureLayout` `createDefaultFlowLayout()` Creates the default layout manager
`abstract void` `postValidate()` Called after validate has occurred.
`void` `remove(IFigure figure)` Overridden to revalidateBidi when fragments are removed.
`protected void` `revalidateBidi(IFigure origin)` This method should be invoked whenever a change that can potentially affect the Bidi evaluation is made (eg., adding or removing children, changing text, etc.).
`void` `setBidiInfo(BidiInfo info)` Sets the bidi information for this figure.
`void` `setBounds(Rectangle r)` FlowFigures override setBounds() to prevent translation of children.
`void` `setFlowContext(FlowContext flowContext)` Sets the flow context.
`void` `setSelection(int start, int end)` Sets the selection or a range of selection.

### Methods inherited from class org.eclipse.draw2d.Figure

`add, add, add, addAncestorListener, addCoordinateListener, addFigureListener, addFocusListener, addKeyListener, addLayoutListener, addListener, addMouseListener, addMouseMotionListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, containsPoint, containsPoint, erase, findDescendantAtExcluding, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, findMouseEventTargetInDescendantsAt, fireCoordinateSystemChanged, fireFigureMoved, fireMoved, firePropertyChange, firePropertyChange, firePropertyChange, getBackgroundColor, getBorder, getBounds, getChildren, getClientArea, getClientArea, getClippingStrategy, getCursor, getFlag, getFont, getForegroundColor, getInsets, getLayoutManager, getListeners, getLocalBackgroundColor, getLocalFont, getLocalForegroundColor, getLocation, getMaximumSize, getMinimumSize, getMinimumSize, getParent, getPreferredSize, getPreferredSize, getSize, getToolTip, getUpdateManager, handleFocusGained, handleFocusLost, handleKeyPressed, handleKeyReleased, handleMouseDoubleClicked, handleMouseDragged, handleMouseEntered, handleMouseExited, handleMouseHover, handleMouseMoved, handleMousePressed, handleMouseReleased, hasFocus, internalGetEventDispatcher, intersects, invalidate, invalidateTree, isCoordinateSystem, isEnabled, isFocusTraversable, isMirrored, isMouseEventTarget, isOpaque, isRequestFocusEnabled, isShowing, isValid, isValidationRoot, isVisible, layout, paint, paintBorder, paintChildren, paintClientArea, paintFigure, primTranslate, removeAll, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeListener, removeMouseListener, removeMouseMotionListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, revalidate, setBackgroundColor, setBorder, setChildrenDirection, setChildrenEnabled, setChildrenOrientation, setClippingStrategy, setConstraint, setCursor, setEnabled, setFlag, setFocusTraversable, setFont, setForegroundColor, setLayoutManager, setLocation, setMaximumSize, setMinimumSize, setOpaque, setParent, setPreferredSize, setPreferredSize, setRequestFocusEnabled, setSize, setSize, setToolTip, setValid, setVisible, translate, translateFromParent, translateToAbsolute, translateToParent, translateToRelative, useLocalCoordinates, validate`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### selectionStart

    protected int selectionStart

integer indicating whether selection should be displayed.

### Constructor Detail

#### FlowFigure

    public FlowFigure()

Constructs a new FlowFigure.

### Method Detail

#### add

    public void add(IFigure child,
           java.lang.Object constraint,
           int index)

If the child is a `FlowFigure`, its FlowContext is passed to it.

Specified by:
  `add` in interface `IFigure`
Overrides:
  `add` in class `Figure`
Parameters:
  `child` - The IFigure to add
  `constraint` - The newly added IFigure's constraint
  `index` - The index where the IFigure should be added
See Also:
  `IFigure.add(IFigure, Object, int)`

#### addLeadingWordRequirements

    public boolean addLeadingWordRequirements(int[] width)

Calculates the width of text before the next line-break is encountered.

Default implementation treats each FlowFigure as a line-break. It adds no width and returns `true`. Sub-classes should override as needed.

Parameters:
  `width` - the width before the next line-break (if one's found; all the width, otherwise) will be added on to the first int in the given array
Returns:
  boolean indicating whether or not a line-break was found
Since:
  3.1

#### contributeBidi

    protected void contributeBidi(BidiProcessor proc)

FlowFigures can contribute text for their block to the given `BidiProcessor`, which will process the contributions to determine Bidi levels and shaping requirements.

This method is invoked as part of validating Bidi.

Sub-classes that cache the BidiInfo and/or the bidi level in ContentBoxes should clear the cached values when this method is invoked.

Parameters:
  `proc` - the BidiProcessor to which contributions should be made
Since:
  3.1
See Also:
  `BidiProcessor.add(FlowFigure, String)`

#### createDefaultFlowLayout

    protected abstract FlowFigureLayout createDefaultFlowLayout()

Creates the default layout manager

Returns:
  The default layout

#### postValidate

    public abstract void postValidate()

Called after validate has occurred. This is used to update the bounds of the FlowFigure to encompass its new flow boxed created during validate.

#### remove

    public void remove(IFigure figure)

Overridden to revalidateBidi when fragments are removed.

Specified by:
  `remove` in interface `IFigure`
Overrides:
  `remove` in class `Figure`
Parameters:
  `figure` - The Figure to remove
See Also:
  `IFigure.remove(org.eclipse.draw2d.IFigure)`

#### revalidateBidi

    protected void revalidateBidi(IFigure origin)

This method should be invoked whenever a change that can potentially affect the Bidi evaluation is made (eg., adding or removing children, changing text, etc.).

The default implementation delegates the revalidation task to the parent. Only `blocks` perform the actual revalidation.

The given IFigure is the one that triggered the revalidation. This can be used to optimize bidi evaluation.

Parameters:
  `origin` - the figure that was revalidated
Since:
  3.1

#### setBidiInfo

    public void setBidiInfo(BidiInfo info)

Sets the bidi information for this figure. A flow figure contributes bidi text in `contributeBidi(BidiProcessor)`. If the figure contributes text associated with it, this method is called back to indicate the bidi properties for that text within its block.

Parameters:
  `info` - the BidiInfo for this figure
Since:
  3.1

#### setBounds

    public void setBounds(Rectangle r)

FlowFigures override setBounds() to prevent translation of children. "bounds" is a derived property for FlowFigures, calculated from the fragments that make up the FlowFigure.

Specified by:
  `setBounds` in interface `IFigure`
Overrides:
  `setBounds` in class `Figure`
Parameters:
  `r` - The new bounds
See Also:
  `Figure.setBounds(Rectangle)`

#### setFlowContext

    public void setFlowContext(FlowContext flowContext)

Sets the flow context.

Parameters:
  `flowContext` - the flow context for this flow figure

#### setSelection

    public void setSelection(int start,
                    int end)

Sets the selection or a range of selection. A start value of -1 is used to indicate no selection. A start value >=0 indicates show selection. A start and end value can be used to represent a range of offsets which should render selection.

Parameters:
  `start` - the start offset
  `end` - the end offset
Since:
  3.1