Widget for displaying textual data.
Conceptual Overview
java-gnome has an extremely powerful framework for multiline text editing. The
primary objects involved in the process are
TextBuffer
, which represents
the text being edited, and
TextView
, a widget which can display a
TextBuffer. Each buffer can be displayed by any number of views.
One of the important things to remember about text in java-gnome is that it's in
the UTF-8 encoding. This means that one character can be encoded as multiple
bytes. Character counts are usually referred to as offsets, while byte counts
are called indexes. If you confuse these two, things will work fine with
ASCII, but as soon as your buffer contains multibyte characters, bad things
will happen.
Text in a buffer can be marked with tags. A tag is an attribute that can
be applied to some range of text. For example, a tag might be called "bold"
and make the text inside the tag bold. However, the tag concept is more
general than that; tags don't have to affect appearance. They can instead
affect the behavior of mouse and key presses, "lock" a range of text so the
user can't edit it, or countless other things. A tag is represented by a
TextTag
object. One TextTag can be applied to any number of text
ranges in any number of buffers.
Each tag is stored in a
TextTagTable
. A tag table defines a set of
tags that can be used together. Each buffer has one tag table associated with
it; only tags from that tag table can be used with the buffer. A single tag
table can be shared between multiple buffers, however.
Tags can have names, which is convenient sometimes (for example, you can
name your tag that makes things bold "bold"), but they can also be anonymous
(which is convenient if you're creating tags on-the-fly).
Most text manipulation is accomplished with iterators, represented by a
TextIter
. An iterator represents a position between two characters in
the text buffer. Iterators are not valid indefinitely; whenever the buffer is
modified in a way that affects the number of characters in the buffer, all
outstanding iterators become invalid. (Note that deleting 5 characters and
then reinserting 5 still invalidates iterators, though you end up with the
same number of characters you pass through a state with a different number).
Because of this, iterators can't be used to preserve positions across
buffer modifications. To preserve a position, the
TextMark
object is
ideal. You can think of a mark as an invisible cursor or insertion point; it
floats in the buffer, saving a position. If the text surrounding the mark is
deleted, the mark remains in the position the text once occupied; if text is
inserted at the mark, the mark ends up either to the left or to the right of
the new text, depending on its gravity. The standard text cursor in
left-to-right languages is a mark with right gravity, because it stays to the
right of inserted text.
Like tags, marks can be either named or anonymous. There are two marks
built-in to
TextBuffer
; these are named "insert" and
"selection_bound" and refer to the insertion point and the boundary of the
selection which is not the insertion point, respectively. If no text is
selected, these two marks will be in the same position. You can manipulate
what is selected and where the cursor appears by moving these marks around.
Text buffers always contain at least one line, but may be empty (that is,
buffers can contain zero characters). The last line in the text buffer never
ends in a line separator (such as newline); the other lines in the buffer
always end in a line separator. Line separators count as characters when
computing character counts and character offsets. Note that some Unicode line
separators are represented with multiple bytes in UTF-8, and the
two-character sequence "\r\n" is also considered a line separator.
addChild
public void addChild(Widget child,
TextChildAnchor anchor)
Adds a child widget in the text buffer, at the given anchor.
child
- A Widgetanchor
- A TextChildAnchor in the TextBuffer for his view
addListener
public void addListener(TextViewListener listener)
Register an object to receive text view event notification.
listener
- The object that has implemented the
TextViewListener interface that is to receive the text view events.
fireTextViewEvent
protected void fireTextViewEvent(TextViewEvent event)
getAcceptsTab
public boolean getAcceptsTab()
Returns whether pressing the Tab key inserts a tab characters.
- 2.4
setAcceptsTab(boolean)
getBuffer
public TextBuffer getBuffer()
Returns the buffer being used
- The buffer used in the widget.
getDefaultAttributes
public TextAttributes getDefaultAttributes()
Obtains a copy of the default text attributes. These are the attributes
used for text unless a tag overrides them.
- The text attributes being used
getEditable
public boolean getEditable()
Returns the default editability of the GtkTextView. Tags in the buffer
may override this setting for some ranges of text.
- true if the widget is editable.
getEventListenerClass
public Class getEventListenerClass(String signal)
- getEventListenerClass in interface Container
getEventType
public EventType getEventType(String signal)
- getEventType in interface Container
getHAdjustment
protected static final Handle getHAdjustment(Handle textView)
getOverwrite
public boolean getOverwrite()
Returns whether the TextView is in overwrite mode or not.
- 2.4
setOverwrite(boolean)
getType
public static Type getType()
Retrieve the runtime type used by the GLib library.
- getType in interface Container
getVAdjustment
protected static final Handle getVAdjustment(Handle textView)
gtk_text_view_add_child_at_anchor
protected static final void gtk_text_view_add_child_at_anchor(Handle textView,
Handle child,
Handle anchor)
gtk_text_view_add_child_in_window
protected static final void gtk_text_view_add_child_in_window(Handle textView,
Handle child,
int whichWindow,
int xpos,
int ypos)
gtk_text_view_backward_display_line
protected static final boolean gtk_text_view_backward_display_line(Handle textView,
Handle iter)
gtk_text_view_backward_display_line_start
protected static final boolean gtk_text_view_backward_display_line_start(Handle textView,
Handle iter)
gtk_text_view_buffer_to_window_coords
protected static final void gtk_text_view_buffer_to_window_coords(Handle textView,
int win,
int bufferX,
int bufferY,
int[] windowX,
int[] windowY)
gtk_text_view_forward_display_line
protected static final boolean gtk_text_view_forward_display_line(Handle textView,
Handle iter)
gtk_text_view_forward_display_line_end
protected static final boolean gtk_text_view_forward_display_line_end(Handle textView,
Handle iter)
gtk_text_view_get_accepts_tab
protected static final boolean gtk_text_view_get_accepts_tab(Handle textview)
gtk_text_view_get_border_window_size
protected static final int gtk_text_view_get_border_window_size(Handle textView,
int type)
gtk_text_view_get_buffer
protected static final Handle gtk_text_view_get_buffer(Handle textView)
gtk_text_view_get_cursor_visible
protected static final boolean gtk_text_view_get_cursor_visible(Handle textView)
gtk_text_view_get_default_attributes
protected static final Handle gtk_text_view_get_default_attributes(Handle textView)
gtk_text_view_get_editable
protected static final boolean gtk_text_view_get_editable(Handle textView)
gtk_text_view_get_indent
protected static final int gtk_text_view_get_indent(Handle textView)
gtk_text_view_get_iter_at_location
protected static final void gtk_text_view_get_iter_at_location(Handle textView,
Handle iter,
int x,
int y)
gtk_text_view_get_iter_location
protected static final void gtk_text_view_get_iter_location(Handle textView,
Handle iter,
int location)
gtk_text_view_get_justification
protected static final int gtk_text_view_get_justification(Handle textView)
gtk_text_view_get_left_margin
protected static final int gtk_text_view_get_left_margin(Handle textView)
gtk_text_view_get_line_at_y
protected static final void gtk_text_view_get_line_at_y(Handle textView,
Handle targetIter,
int y,
int[] lneTop)
gtk_text_view_get_line_yrange
protected static final void gtk_text_view_get_line_yrange(Handle textView,
Handle iter,
int[] y,
int[] height)
gtk_text_view_get_overwrite
protected static final boolean gtk_text_view_get_overwrite(Handle view)
gtk_text_view_get_pixels_above_lines
protected static final int gtk_text_view_get_pixels_above_lines(Handle textView)
gtk_text_view_get_pixels_below_lines
protected static final int gtk_text_view_get_pixels_below_lines(Handle textView)
gtk_text_view_get_pixels_inside_wrap
protected static final int gtk_text_view_get_pixels_inside_wrap(Handle textView)
gtk_text_view_get_right_margin
protected static final int gtk_text_view_get_right_margin(Handle textView)
gtk_text_view_get_tabs
protected static final Handle gtk_text_view_get_tabs(Handle textView)
gtk_text_view_get_type
protected static final int gtk_text_view_get_type()
gtk_text_view_get_visible_rect
protected static final void gtk_text_view_get_visible_rect(Handle textView,
Handle visibleRect)
gtk_text_view_get_window
protected static final Handle gtk_text_view_get_window(Handle textView,
int win)
gtk_text_view_get_window_type
protected static final int gtk_text_view_get_window_type(Handle textView,
Handle window)
gtk_text_view_get_wrap_mode
protected static final int gtk_text_view_get_wrap_mode(Handle textView)
gtk_text_view_move_child
protected static final void gtk_text_view_move_child(Handle textView,
Handle child,
int xpos,
int ypos)
gtk_text_view_move_mark_onscreen
protected static final boolean gtk_text_view_move_mark_onscreen(Handle textView,
Handle mark)
gtk_text_view_move_visually
protected static final boolean gtk_text_view_move_visually(Handle textView,
Handle iter,
int count)
gtk_text_view_new
protected static final Handle gtk_text_view_new()
gtk_text_view_new_with_buffer
protected static final Handle gtk_text_view_new_with_buffer(Handle buffer)
gtk_text_view_place_cursor_onscreen
protected static final boolean gtk_text_view_place_cursor_onscreen(Handle textView)
gtk_text_view_scroll_mark_onscreen
protected static final void gtk_text_view_scroll_mark_onscreen(Handle textView,
Handle mark)
gtk_text_view_scroll_to_iter
protected static final boolean gtk_text_view_scroll_to_iter(Handle textView,
Handle iter,
double withinMargin,
boolean useAlign,
double xalign,
double yalign)
gtk_text_view_scroll_to_mark
protected static final void gtk_text_view_scroll_to_mark(Handle textView,
Handle mark,
double withinMargin,
boolean useAlign,
double xalign,
double yalign)
gtk_text_view_set_accepts_tab
protected static final void gtk_text_view_set_accepts_tab(Handle view,
boolean setting)
gtk_text_view_set_border_window_size
protected static final void gtk_text_view_set_border_window_size(Handle textView,
int type,
int size)
gtk_text_view_set_buffer
protected static final void gtk_text_view_set_buffer(Handle textView,
Handle buffer)
gtk_text_view_set_cursor_visible
protected static final void gtk_text_view_set_cursor_visible(Handle textView,
boolean setting)
gtk_text_view_set_editable
protected static final void gtk_text_view_set_editable(Handle textView,
boolean setting)
gtk_text_view_set_indent
protected static final void gtk_text_view_set_indent(Handle textView,
int indent)
gtk_text_view_set_justification
protected static final void gtk_text_view_set_justification(Handle textView,
int justification)
gtk_text_view_set_left_margin
protected static final void gtk_text_view_set_left_margin(Handle textView,
int leftMargin)
gtk_text_view_set_overwrite
protected static final void gtk_text_view_set_overwrite(Handle view,
boolean setting)
gtk_text_view_set_pixels_above_lines
protected static final void gtk_text_view_set_pixels_above_lines(Handle textView,
int pixelsAboveLines)
gtk_text_view_set_pixels_below_lines
protected static final void gtk_text_view_set_pixels_below_lines(Handle textView,
int pixelsBelowLines)
gtk_text_view_set_pixels_inside_wrap
protected static final void gtk_text_view_set_pixels_inside_wrap(Handle textView,
int pixelsInsideWrap)
gtk_text_view_set_right_margin
protected static final void gtk_text_view_set_right_margin(Handle textView,
int rightMargin)
gtk_text_view_set_tabs
protected static final void gtk_text_view_set_tabs(Handle textView,
Handle tabs)
gtk_text_view_set_wrap_mode
protected static final void gtk_text_view_set_wrap_mode(Handle textView,
int wrapMode)
gtk_text_view_starts_display_line
protected static final boolean gtk_text_view_starts_display_line(Handle textView,
Handle iter)
gtk_text_view_window_to_buffer_coords
protected static final void gtk_text_view_window_to_buffer_coords(Handle textView,
int win,
int windowX,
int windowY,
int[] bufferX,
int[] bufferY)
moveCursorOnScreen
public boolean moveCursorOnScreen()
Moves the cursor to the currently visible region of the buffer, it it
isn't there already.
- TRUE if the cursor had to be moved.
removeListener
public void removeListener(TextViewListener listener)
Unregister an object that was receiving text view event notification.
listener
- The object that is to no longer receive
text view events.
scrollToIter
public boolean scrollToIter(TextIter iter,
double withinMargin)
Scrolls text view so that iter is on the screen.
The effective screen for purposes of this function is
reduced by a margin of size within_margin. NOTE: This function uses the
currently-computed height of the lines in the text buffer. Note that line
heights are computed in an idle handler; so this function may not have
the desired effect if it's called before the height computations. To
avoid oddness, consider using gtk_text_view_scroll_to_mark() which saves
a point to be scrolled to after line validation.
iter
- a TextIterwithinMargin
- Margin as a [0.0,0.5) fraction of screen size.
- TRUE if scrolling occurred
scrollToIter
public boolean scrollToIter(TextIter iter,
double withinMargin,
double xAlign,
double yAlign)
Scrolls text view so that iter is on the screen in the position indicated
by xalign and yalign. An alignment of 0.0 indicates left or top, 1.0
indicates right or bottom, 0.5 means center.
The effective screen for purposes of this function is
reduced by a margin of size within_margin. NOTE: This function uses the
currently-computed height of the lines in the text buffer. Note that line
heights are computed in an idle handler; so this function may not have
the desired effect if it's called before the height computations. To
avoid oddness, consider using gtk_text_view_scroll_to_mark() which saves
a point to be scrolled to after line validation.
iter
- a TextIterwithinMargin
- Margin as a [0.0,0.5) fraction of screen size.xAlign
- : horizontal alignment of mark within visible area.yAlign
- : vertical alignment of mark within visible area
- TRUE if scrolling occurred
scrollToMark
public void scrollToMark(TextMark mark,
double withinMargin)
Scrolls the view so that mark is on the screen. The
text scrolls the minimal distance to get the mark onscreen, possibly not
scrolling at all. The effective screen for purposes of this function is
reduced by a margin of size withinMargin.
mark
- A TextMark
withinMargin
- Margin as a fraction of screen size
scrollToMark
public void scrollToMark(TextMark mark,
double withinMargin,
boolean useAlign,
double xAlign,
double yAlign)
Scrolls the view so that mark is on the screen in the position indicated
by xAlign and yAlign. An alignment of 0.0 indicates left or top, 1.0
indicates right or bottom, 0.5 means center.
mark
- A TextMark
withinMargin
- Margin as a fraction of screen sizeuseAlign
- Whether to use alignment arguments.xAlign
- Horizontal alignment of mark within visible area.yAlign
- : vertical alignment of mark within visible area
setAcceptsTab
public void setAcceptsTab(boolean acceptsTab)
Sets the behavior of the text widget when the Tab key is pressed. If
TRUE, a tab character is inserted. If is FALSE, the keyboard focus is
moved to the next widget in the focus chain.
acceptsTab
- TRUE if pressing the Tab key should insert a tab character, FALSE, if pressing the Tab key should move the keyboard focus
- 2.4
setBuffer
public void setBuffer(TextBuffer buffer)
Sets buffer as the buffer being displayed by the view.
buffer
- The new buffer to display
setCursorVisible
public void setCursorVisible(boolean setting)
Toggles whether the insertion point is displayed. A buffer with no
editable text probably shouldn't have a visible cursor, so you may want
to turn the cursor off.
setting
- Whether to show the insertion cursor
setEditable
public void setEditable(boolean setting)
Sets the default editability of the GtkTextView. You can override this
default setting with tags in the buffer, using the "editable" attribute
of tags.
setting
- Whether it's editable
setIndent
public void setIndent(int indent)
Sets the default indentation for paragraphs in text_view. Tags in the
buffer may override the default.
indent
- Indentation in pixels
setJustification
public void setJustification(Justification justification)
Sets the default justification of text in text_view. Tags in the view's
buffer may override the default.
justification
- The justification to use.
setLeftMargin
public void setLeftMargin(int leftMargin)
Sets the default left margin for text in text_view. Tags in the buffer
may override the default.
leftMargin
- Size of left margin, in pixels
setOverwrite
public void setOverwrite(boolean overwrite)
Changes the overwrite mode (whether text is overwritten)
overwrite
- TRUE to turn on overwrite mode, FALSE to turn it off
- 2.4
setPixelsAboveLines
public void setPixelsAboveLines(int pixelsAboveLines)
Sets the default number of blank pixels above paragraphs in text_view.
Tags in the buffer for text_view may override the defaults.
pixelsAboveLines
- Pixels above paragraphs
setPixelsBelowLine
public void setPixelsBelowLine(int pixelsBelowLines)
Sets the default number of pixels of blank space to put below paragraphs
in text_view. May be overridden by tags applied to text_view's buffer.
pixelsBelowLines
- Pixels below paragraphs
setPixelsInsideWrap
public void setPixelsInsideWrap(int pixelsInsideWrap)
Sets the default number of pixels of blank space to leave between
display/wrapped lines within a paragraph. May be overridden by tags in
text_view's buffer.
pixelsInsideWrap
- Default number of pixels between wrapped lines
setRightMargin
public void setRightMargin(int rightMargin)
Sets the default right margin for text in text_view. Tags in the buffer
may override the default.
rightMargin
- Size of right margin, in pixels
setTabs
public void setTabs(TabArray tabStops)
Sets the default tab stops for paragraphs in text_view. Tags in the
buffer may override the default.
tabStops
- tabs as a PangoTabArray
setWrapMode
public void setWrapMode(WrapMode wrapMode)
Sets the line wrapping for the view.
wrapMode
- A WrapMode