Package 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, Figure.ReverseFigureChildrenIterator`

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

`IFigure.NoInsets`

## Field Summary

Fields
Modifier and Type
Field
Description
`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
Description
`FlowFigure()`
Constructs a new FlowFigure.

## Method Summary

Modifier and Type
Method
Description
`void`
`add(IFigure child, 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, addMouseWheelListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, containsPoint, containsPoint, erase, findDescendantAtExcluding, findFigureAt, findFigureAt, findFigureAt, findFigureAtExcluding, findMouseEventTargetAt, findMouseEventTargetInDescendantsAt, fireCoordinateSystemChanged, fireFigureMoved, fireMoved, firePropertyChange, firePropertyChange, firePropertyChange, getBackgroundColor, getBorder, getBounds, getChildren, getChildrenRevIterable, getClientArea, getClientArea, getClippingStrategy, getCursor, getFlag, getFont, getForegroundColor, getInsets, getLayoutManager, getListeners, getListenersIterable, 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, handleMouseWheelScrolled, hasFocus, internalGetEventDispatcher, intersects, invalidate, invalidateTree, isCoordinateSystem, isEnabled, isFocusTraversable, isMirrored, isMouseEventTarget, isOpaque, isRequestFocusEnabled, isShowing, isValid, isValidationRoot, isVisible, layout, optimizeClip, paint, paintBorder, paintChildren, paintClientArea, paintFigure, primTranslate, removeAll, removeAncestorListener, removeCoordinateListener, removeFigureListener, removeFocusListener, removeKeyListener, removeLayoutListener, removeListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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, useDoublePrecision, useLocalCoordinates, validate`

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

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

## Field Details

### selectionStart

protected int selectionStart
integer indicating whether selection should be displayed.

## Constructor Details

### FlowFigure

public FlowFigure()
Constructs a new FlowFigure.

## Method Details

### add

public void add(IFigure child, 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