Package org.eclipse.help.ui.internal

# Class StyledLineWrapper

java.lang.Object
org.eclipse.help.ui.internal.StyledLineWrapper

All Implemented Interfaces:
  `StyledTextContent`

public class StyledLineWrapper extends Object implements StyledTextContent

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`BOLD_CLOSE_TAG`
Internal representation of <b> - unlikely to occur in a text
`static final String`
`BOLD_TAG`
Internal representation of <b> - unlikely to occur in a text
`static final int`
`DEFAULT_WIDTH`
Beyond this length (pixels), lines should wrap
`int`
`maxWidth`

## Constructor Summary

Constructors
Constructor
Description
`StyledLineWrapper(String text, Drawable drawable, int minWidth)`
Constructor

## Method Summary

Modifier and Type
Method
Description
`void`
`addTextChangeListener(TextChangeListener l)`
Called by StyledText to add itself as an Observer to content changes.
`int`
`getCharCount()`
Return the number of characters in the content.
`String`
`getLine(int i)`
Return the line at the given line index without delimiters.
`int`
`getLineAtOffset(int offset)`
Return the line index at the given character offset.
`int`
`getLineCount()`
Return the number of lines.
`String`
`getLineDelimiter()`
Return the line delimiter that should be used by the StyledText widget when inserting new lines.
`int`
`getOffsetAtLine(int line)`
Return the character offset of the first character of the given line.
`StyleRange[]`
`getStyles()`
Returns the array of styles.
`String`
`getTextRange(int start, int end)`
Returns a string representing the content at the given range.
`void`
`removeTextChangeListener(TextChangeListener arg0)`
Remove the specified text changed listener.
`void`
`replaceTextRange(int arg0, int arg1, String arg2)`
Replace the text with "newText" starting at position "start" for a length of "replaceLength".
`void`
`setText(String text)`
Set text to "text".

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

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

## Field Details

### BOLD_CLOSE_TAG

public static final String BOLD_CLOSE_TAG
Internal representation of <b> - unlikely to occur in a text

See Also:
  - Constant Field Values

### BOLD_TAG

public static final String BOLD_TAG
Internal representation of <b> - unlikely to occur in a text

See Also:
  - Constant Field Values

### DEFAULT_WIDTH

public static final int DEFAULT_WIDTH
Beyond this length (pixels), lines should wrap

See Also:
  - Constant Field Values

### maxWidth

public int maxWidth

## Constructor Details

### StyledLineWrapper

public StyledLineWrapper(String text, Drawable drawable, int minWidth)
Constructor

## Method Details

### addTextChangeListener

public void addTextChangeListener(TextChangeListener l)
Description copied from interface: `StyledTextContent`
Called by StyledText to add itself as an Observer to content changes. See TextChangeListener for a description of the listener methods that are called when text changes occur.

Specified by:
  `addTextChangeListener` in interface `StyledTextContent`
Parameters:
  `l` - the listener

### getCharCount

public int getCharCount()
Description copied from interface: `StyledTextContent`
Return the number of characters in the content.

Specified by:
  `getCharCount` in interface `StyledTextContent`
Returns:
  the number of characters in the content.

### getLine

public String getLine(int i)
Description copied from interface: `StyledTextContent`
Return the line at the given line index without delimiters.

Specified by:
  `getLine` in interface `StyledTextContent`
Parameters:
  `i` - index of the line to return. Does not include delimiters of preceding lines. Index 0 is the first line of the content.
Returns:
  the line text without delimiters For example, if text = "\r\n\r\n", and delimiter = "\r\n", then:
  - getLine(0) == ""
  - getLine(1) == ""
  - getLine(2) == ""
  or if text = "A\nBC\nD", and delimiter = "\n", then:
  - getLine(0) == "A"
  - getLine(1) == "BC"
  - getLine(2) == "D"

### getLineAtOffset

public int getLineAtOffset(int offset)
Description copied from interface: `StyledTextContent`
Return the line index at the given character offset.

Specified by:
  `getLineAtOffset` in interface `StyledTextContent`
Parameters:
  `offset` - offset of the line to return. The first character of the document is at offset 0. An offset of `StyledTextContent.getCharCount()` is valid and should answer the line index of the last line.
Returns:
  the line index. The first line is at index 0. If the character at offset is a delimiter character, answer the line index of the line that is delimited. For example, if text = "\r\n\r\n", and delimiter = "\r\n", then:
  - getLineAtOffset(0) == 0
  - getLineAtOffset(1) == 0
  - getLineAtOffset(2) == 1
  - getLineAtOffset(3) == 1
  - getLineAtOffset(4) == 2
  or if text = "A\nBC\nD", and delimiter = "\n", then:
  - getLineAtOffset(0) == 0
  - getLineAtOffset(1) == 0
  - getLineAtOffset(2) == 1
  - getLineAtOffset(3) == 1
  - getLineAtOffset(4) == 1
  - getLineAtOffset(5) == 2
  - getLineAtOffset(6) == 2

### getLineCount

public int getLineCount()
Description copied from interface: `StyledTextContent`
Return the number of lines. Should answer 1 when no text is specified. The StyledText widget relies on this behavior for drawing the cursor.

Specified by:
  `getLineCount` in interface `StyledTextContent`
Returns:
  the number of lines. For example:
  - text value ==> getLineCount
  - null ==> 1
  - "" ==> 1
  - "a\n" ==> 2
  - "\n\n" ==> 3

### getLineDelimiter

public String getLineDelimiter()
Description copied from interface: `StyledTextContent`
Return the line delimiter that should be used by the StyledText widget when inserting new lines. New lines entered using key strokes and paste operations use this line delimiter. Implementors may use System.lineSeparator() to return the platform line delimiter.

Specified by:
  `getLineDelimiter` in interface `StyledTextContent`
Returns:
  the line delimiter that should be used by the StyledText widget when inserting new lines.

### getOffsetAtLine

public int getOffsetAtLine(int line)
Description copied from interface: `StyledTextContent`
Return the character offset of the first character of the given line.

NOTE: When there is no text (i.e., no lines), getOffsetAtLine(0) is a valid call that should return 0.

Specified by:
  `getOffsetAtLine` in interface `StyledTextContent`
Parameters:
  `line` - index of the line. The first line is at index 0.
Returns:
  offset offset of the first character of the line. The first character of the document is at offset 0. The return value should include line delimiters. For example, if text = "\r\ntest\r\n" and delimiter = "\r\n", then:
  - getOffsetAtLine(0) == 0
  - getOffsetAtLine(1) == 2
  - getOffsetAtLine(2) == 8

### getTextRange

public String getTextRange(int start, int end)
Description copied from interface: `StyledTextContent`
Returns a string representing the content at the given range.

Specified by:
  `getTextRange` in interface `StyledTextContent`
Parameters:
  `start` - the start offset of the text to return. Offset 0 is the first character of the document.
  `end` - the length of the text to return
Returns:
  the text at the given range

### removeTextChangeListener

public void removeTextChangeListener(TextChangeListener arg0)
Description copied from interface: `StyledTextContent`
Remove the specified text changed listener.

Specified by:
  `removeTextChangeListener` in interface `StyledTextContent`
Parameters:
  `arg0` - the listener which should no longer be notified

### replaceTextRange

public void replaceTextRange(int arg0, int arg1, String arg2)
Description copied from interface: `StyledTextContent`
Replace the text with "newText" starting at position "start" for a length of "replaceLength".

Implementors have to notify the TextChangeListeners that were added using `addTextChangeListener` before and after the content is changed. A `TextChangingEvent` has to be sent to the textChanging method before the content is changed and a `TextChangedEvent` has to be sent to the textChanged method after the content has changed. The text change that occurs after the `TextChangingEvent` has been sent has to be consistent with the data provided in the `TextChangingEvent`. This data will be cached by the widget and will be used when the `TextChangedEvent` is received.

The `TextChangingEvent` should be set as follows:

- event.start = start of the replaced text
- event.newText = text that is going to be inserted or empty String if no text will be inserted
- event.replaceCharCount = length of text that is going to be replaced
- event.newCharCount = length of text that is going to be inserted
- event.replaceLineCount = number of lines that are going to be replaced
- event.newLineCount = number of new lines that are going to be inserted

NOTE: newLineCount is the number of inserted lines and replaceLineCount is the number of deleted lines based on the change that occurs visually. For example:

- (replaceText, newText) ==> (replaceLineCount, newLineCount)
- ("", "\n") ==> (0, 1)
- ("\n\n", "a") ==> (2, 0)
- ("a", "\n\n") ==> (0, 2)
- ("\n", "") ==> (1, 0)

Specified by:
  `replaceTextRange` in interface `StyledTextContent`
Parameters:
  `arg0` - start offset of text to replace, none of the offsets include delimiters of preceding lines, offset 0 is the first character of the document
  `arg1` - length of text to replace
  `arg2` - text to replace
See Also:
  - `TextChangeListener`

### setText

public void setText(String text)
Description copied from interface: `StyledTextContent`
Set text to "text". Implementors have to send a `TextChangedEvent` to the textSet method of the TextChangeListeners that were added using `addTextChangeListener`.

Specified by:
  `setText` in interface `StyledTextContent`
Parameters:
  `text` - the new text
See Also:
  - `TextChangeListener`

### getStyles

public StyleRange[] getStyles()
Returns the array of styles.