BidiSegmentEvent

This event is sent to BidiSegmentListeners when a line is to be measured or rendered in a bidi locale. The segments field is used to specify text ranges in the line that should be treated as separate segments for bidi reordering. Each segment will be reordered and rendered separately. <p> The elements in the segments field specify the start offset of a segment relative to the start of the line. They must follow the following rules: <ul> <li>first element must be 0 <li>elements must be in ascending order and must not have duplicates <li>elements must not exceed the line length </ul> In addition, the last element may be set to the end of the line but this is not required.

The segments field may be left null if the entire line should be reordered as is. </p> A BidiSegmentListener may be used when adjacent segments of right-to-left text should not be reordered relative to each other. For example, within a Java editor, you may wish multiple right-to-left string literals to be reordered differently than the bidi algorithm specifies.

Members

Variables

lineOffset
int lineOffset;

line start offset

lineText
String lineText;

line text

segments
int[] segments;

bidi segments, see above

Inherited Members

From TypedEvent

display
Display display;

the display where the event occurred

widget
Widget widget;

the widget that issued the event

time
int time;

the time that the event occurred.

data
Object data;

a field for application use

getName
String getName()

Returns the name of the event. This is the name of the class without the module name.

toString
String toString()

Returns a string containing a concise, human-readable description of the receiver.

Examples

<pre> stored line = "R1R2R3" + "R4R5R6" R1 to R6 are right-to-left characters. The quotation marks are part of the line text. The line is 13 characters long.

segments = null: entire line will be reordered and thus the two R2L segments swapped (as per the bidi algorithm). visual line (rendered on screen) = "R6R5R4" + "R3R2R1"

segments = [0, 5, 8] "R1R2R3" will be reordered, followed by blank+blank and "R4R5R6". visual line = "R3R2R1" + "R6R5R4" </pre>

@see <a href="http://www.eclipse.org/swt/">Sample code and further information</a>

Meta