org.gnu.gtk
public class TreeView extends Container
The standard tree and list widgets in GTK+ are very powerful, but unfortunately are also rather complex and there is only so much that can be done to mitigate this. If you patiently work though the following explaination and review the tutorial on the java-gnome website, you should find yourself quickly up to speed.
There is only one widget which is placed in any applications to create trees, lists and tables. This is the TreeView. An application can have any number of treeviews and they can be placed as can normal widgets. The data for the widget, and the method in which it is displayed is controlled by other classes. Gtk has been designed so that any number of treeview widgets can be linked to the same data store. TreeViewColumns, CellRenderers and TreeSelections are created for each view, so Views can use the same data store but have their own column layout, data display within those columns (linked to any of the dataBlocks in the store); and their own selections.
Models are used to store data. Data is stored in what could be considered a table. There are a number of DataColumns, which could be considered the columns of that table (in fact, in the C version of GTK, they are always referred to as columns; but this can get confused with TreeViewColumns which are quite a different matter). These DataColumns each store one type of data (String, boolean, int, etc.). The 'rows' of this data table (the individual records) can be accessed using iterators called TreeIters. These are used extensively in many methods. Setting data involves getting an iterator (creating a new row gets you a TreeIter) and then setting the value for each of the DataColumns. The ordering of the DataColumns in the Model has no meaning. For presentation, you decide exactly which DataColumns are to be used on screen by mapping them to a a TreeViewColumn via a CellRenderer (see below).
GTK provides two implementations of TreeModel:
ListStore - This is used for tables and lists. Data is organised in rows and columns.
TreeStore - This is for data organized in hierarchical trees. You order your data using TreePaths.
Both modes of TreeView (displaying a tree or displaying a list) can have multiple columns of data. As each TreeViewColumns is set up, you add it to the parent TreeView you're creating. The TreeViewColumns determine how the data is displayed. They have settings such as the column title, whether the column can be resized, and even whether the columns can be reorganized (by dragging the columns). Each TreeView widget has it's own set of TreeViewColumns. Determining how the data is displayed in the columns is done by CellRenderers (see below). Any number of CellRenderers can be packed into a given column.
Tree and list `cells' may contain a large variety of data types. Determining how they are displayed is done by the CellRenderer family of classes. If the data is unusual, or you want to combine a number of data types in a single column, you may need to construct your own renderer. However, you are recommended to stick with the regular choices:
The CellRenderers need to be told what data to display. This is done using the TreeViewColumn. The renderer attributes vary with each renderer, for example CellRendererText has a TEXT attribute for the text the be displayed. The final parameter is for the DataColumn in the store in which the data is contained.
Java-Gnome comes with a number of simple example applications involving trees. They may be useful for learning the functionality of these classes.
Finally, some people may find use for a convenience wrapper that Java-Gnome derived; see SimpleList to display a single column list of string values.
Constructor Summary | |
---|---|
TreeView()
Create a new TreeView object. | |
TreeView(Handle handle)
Creates a new tree view from a native handle | |
TreeView(TreeModel model)
Creates a new TreeView Widget with the initial model set |
Method Summary | |
---|---|
void | activateCell(TreePath path, TreeViewColumn column)
Activates the cell determined by path and column.
|
void | addListener(TreeViewListener listener)
Register an object to handle events related to user actions on the
TreeView widget.
|
int | appendColumn(TreeViewColumn column)
Appends column to the list of columns.
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol)
Appends a data column of the model to an existing
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol, boolean expand)
Appends a data column of the model to an existing
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol, CellRenderer aRenderer, CellRendererAttribute aAttr)
Appends a data column of the model to an existing
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol, CellRenderer aRenderer, CellRendererAttribute aAttr, boolean expand)
Appends a data column of the model to an existing
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol, CellRenderer aRenderer, CellRendererAttribute[] aAttr)
Appends a data column of the model to an existing
|
TreeViewColumn | appendDataColumn(TreeViewColumn aExistingCol, int aCol, CellRenderer aRenderer, CellRendererAttribute[] aAttr, boolean expand)
Appends a data column of the model to an existing
|
void | autoSizeColumns()
Resizes all columns to their optimal width. |
void | collapseAll()
Recursively collapses all visible, expanded nodes. |
boolean | collapseRow(TreePath path)
Collapses a row (hides its child rows, if they exist).
|
void | expandAll()
Recursively expands all nodes |
boolean | expandRow(TreePath path, boolean openAll)
Opens the row so its children are visible.
|
void | expandToPath(TreePath path)
Expands the row at path. |
boolean | getAlternateRowColor() |
TreeViewColumn | getColumn(int position)
Gets the column at the given position in the tree view.
|
TreeViewColumn[] | getColumns()
Returns an array of all the columns currently in the view |
TreeViewColumn | getCursorColumn()
Returns the current column |
TreePath | getCursorPath()
Returns the current path |
boolean | getEnableSearch() |
Class | getEventListenerClass(String signal) |
EventType | getEventType(String signal) |
TreeViewColumn | getExpanderColumn() |
boolean | getFixedHeightMode()
Returns whether fixed height mode is turned on for this TreeView. |
Adjustment | getHAdjustment()
Gets the GtkAdjustment currently being used for the horizontal aspect.
|
boolean | getHeadersVisible()
Returns true if the headers on the TreeView are visible. |
boolean | getHoverExpand()
Returns whether hover expansion mode is turned on for TreeView. |
boolean | getHoverSelection()
Returns whether hover selection mode is turned on for this TreeView. |
TreeModel | getModel()
Returns the model associated with this tree. |
boolean | getReorderable() |
boolean | getRowExpanded(TreePath path)
Returns true if the node pointed to by path is expanded.
|
TreeViewRowSeparatorMethod | getRowSeparatorMethod()
Get the object which is used to determine whether a row should be drawn
as a separator.
|
TreeViewColumn | getSearchColumn() |
DataColumn | getSearchDataColumn()
Gets the column searched on by the interactive search code.
|
TreeSelection | getSelection()
Gets the TreeSelection associated with this widget |
static TreeView | getTreeView(Handle handle)
Creates a new tree view from a native handle |
static Type | getType()
Retrieve the runtime type used by the GLib library. |
Adjustment | getVAdjustment()
Gets the Adjustment currently being used for the vertical aspect. |
int | insertColumn(TreeViewColumn column, int position)
This inserts the column into the tree_view at position. |
void | moveColumn(TreeViewColumn column, TreeViewColumn baseColumn)
Moves column to be after to baseColumn. |
int | removeColumn(TreeViewColumn column)
Removes column from tree_view.
|
void | removeListener(TreeViewListener listener)
Removes a listener
|
void | scrollToCell(TreePath path, TreeViewColumn column, double rowAlign, double colAlign)
Moves the alignments of the view to the position specified by column
and path. |
void | scrollToCell(TreePath path, TreeViewColumn column)
Moves the alignments of the view to the position specified by column and
path.
|
void | scrollToCell(TreeViewColumn column)
Moves the alignments of the view to the position specified by column
|
void | scrollToCell(TreePath path)
Moves the alignments of the view to the position specified by path.
|
void | scrollToPoint(int x, int y)
Scrolls the TreeView such that the top-left corner of the visible area is
x, y, where x and y are specified in tree window coordinates. |
void | setAlternateRowColor(boolean setting)
This function tells GTK+ that the user interface for your application
requires users to read across tree rows and associate cells with one
another. |
void | setCursor(TreePath path, TreeViewColumn focusColumn, boolean startEditing)
Sets the current keyboard focus to be at path, and selects it. |
void | setCursor(TreePath path, TreeViewColumn focusColumn, CellRenderer focusCell, boolean startEditing)
Sets the current keyboard focus to be at path, and selects it. |
void | setEnableSearch(boolean enableSearch)
If enable search is set, then the user can type in text to search through
the tree interactively.
|
void | setExpanderColumn(TreeViewColumn column)
Sets the column to draw the expander arrow at. |
void | setFixedHeightMode(boolean enable)
Enables or disables the fixed height mode of this TreeView. |
void | setHAdjustment(Adjustment hadj)
Sets the Adjustment for the current horizontal aspect. |
void | setHeadersClickable(boolean setting)
Allow the column title buttons to be clicked.
|
void | setHeadersVisible(boolean headersVisible)
Sets the the visibility state of the headers.
|
void | setHoverExpand(boolean expand)
Enables or disables the hover expansion mode of this TreeView. |
void | setHoverSelection(boolean hover)
Enables of disables the hover selection mode of this TreeView. |
void | setModel(TreeModel model)
Sets the model for a GtkTreeView. |
void | setReorderable(boolean reorderable)
This function is a convenience function to allow you to reorder models
that support the DragSourceIface and the DragDestIface. |
void | setRowSeparatorMethod(TreeViewRowSeparatorMethod method)
Set the object which is used to determine whether a row should be drawn
as a separator.
|
void | setSearchColumn(TreeViewColumn column) |
void | setSearchDataColumn(DataColumn column)
Sets column as the column where the interactive search code should search
in. |
void | setVAdjustment(Adjustment vadj)
Sets the Adjustment for the current vertical aspect. |
TreeViewColumn | showDataColumn(int aCol)
Shows a data column of the model in this |
TreeViewColumn | showDataColumn(int aCol, boolean expand)
Shows a data column of the model in this |
TreeViewColumn | showDataColumn(int aCol, CellRenderer aRenderer, CellRendererAttribute aAttr)
Shows a data column of the model in this TreeView , with a
specific renderer and rendering attributes.
|
TreeViewColumn | showDataColumn(int aCol, CellRenderer aRenderer, CellRendererAttribute aAttr, boolean expand)
Shows a data column of the model in this TreeView , with a
specific renderer and rendering attributes.
|
TreeViewColumn | showDataColumn(int aCol, CellRenderer aRenderer, CellRendererAttribute[] aAttr)
Shows a data column of the model in this TreeView , with a
specific renderer and rendering attributes.
|
TreeViewColumn | showDataColumn(int aCol, CellRenderer aRenderer, CellRendererAttribute[] aAttr, boolean expand)
Shows a data column of the model in this TreeView , with a
specific renderer and rendering attributes.
|
Parameters: path The TreePath to be activated. column The TreeViewColumn to be activated.
See Also: TreeViewListener
Parameters: column The GtkTreeViewColumn to add.
Returns: The number of columns in tree_view after appending.
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods. It should be used when it's
desired to have more than one data in just one column.
This method will try to guess the renderer to use, and because of that,
it has some limitations. For instance, you should only use it to show
these kinds of DataColumns: DataColumnBoolean
,
DataColumnString
, DataColumnPixbuf
,
DataColumnStockItem
.
For other kinds of DataColumn, the method
appendDataColumn(TreeViewColumn, int, CellRenderer, CellRendererAttribute)
should be used, which is more flexible, allowing you to specify which
renderer to use, and its rendering attributes.
Parameters: aExistingCol
an existing TreeViewColumn
. aCol
the number of the column in the model to be shown; starting
from 0.
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods. It should be used when it's
desired to have more than one data in just one column.
This method will try to guess the renderer to use, and because of that,
it has some limitations. For instance, you should only use it to show
these kinds of DataColumns: DataColumnBoolean
,
DataColumnString
, DataColumnPixbuf
,
DataColumnStockItem
.
For other kinds of DataColumn, the method
appendDataColumn(TreeViewColumn, int, CellRenderer, CellRendererAttribute)
should be used, which is more flexible, allowing you to specify which
renderer to use, and its rendering attributes.
Parameters: aExistingCol
an existing TreeViewColumn
. aCol
the number of the column in the model to be shown; starting
from 0. expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods, and lets you use a specific
renderer and rendering attributes.
It should be used when it's desired to have more than one data in just one column.
Parameters: aCol the number of the column in the model to be shown; starting from 0. aRenderer the renderer to be used aAttr the rendering attributes to be used
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods, and lets you use a specific
renderer and rendering attributes.
It should be used when it's desired to have more than one data in just one column.
Parameters: aCol
the number of the column in the model to be shown; starting
from 0. aRenderer
the renderer to be used aAttr
the rendering attributes to be used expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods, and lets you use a specific
renderer and rendering attributes.
It should be used when it's desired to have more than one data in just one column.
Parameters: aCol the number of the column in the model to be shown; starting from 0. aRenderer the renderer to be used aAttr the rendering attributes to be used
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Appends a data column of the model to an existing
TreeViewColumn
, previously created with one of the
showDataColumn
methods, and lets you use a specific
renderer and rendering attributes.
It should be used when it's desired to have more than one data in just one column.
Parameters: aCol
the number of the column in the model to be shown; starting
from 0. aRenderer
the renderer to be used aAttr
the rendering attributes to be used expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the updated column.
See Also: TreeView TreeView DataColumn
Parameters: path Path to a row in the view
Returns: true if the row was collapsed.
Parameters: path Path to a row openAll Whether to recursively expand, or just expand immediate children
Returns: true if the row existed and had children
Parameters: path path to a row
Since: 2.2
Parameters: position The position of the column, counting from 0.
Returns: The TreeViewColumn, or null
if the position is
outside the range of columns.
Returns: A GtkAdjustment object, or null if none is currently being used.
Parameters: path A TreePath to test expansion state.
Returns: true if path is expanded.
Returns: The TreeViewRowSeparatorMethod or null if no method has been set.
Deprecated: This method is broken and has been deprecated in favor of the TreeView method.
Returns: A DataColumn object representing the column of the data model in which the interactive search takes place.
Parameters: column The GtkTreeViewColumn to be inserted. position The position to insert column in.
Returns: The number of columns in tree_view after insertion.
Parameters: column The GtkTreeViewColumn to be moved. baseColumn The GtkTreeViewColumn to be moved relative to, or null.
Parameters: column The GtkTreeViewColumn to remove.
Returns: The number of columns in tree_view after removing.
See Also: addListener
Parameters: path The path of the row to move to column The TreeViewColumn to move horizontally to rowAlign The vertical alignment of the row specified by path. colAlign : The horizontal alignment of the column specified by column.
Parameters: path The path of the row to move to column The TreeViewColumn to move horizontally to
Parameters: column The TreeViewColumn to move horizontally to
Parameters: path The path of the row to move to, or null.
Parameters: x y
Parameters: setting true if the tree requires reading across rows
Parameters: path A TreePath focusColumn A TreeViewColumn, or null startEditing true if the specified cell should start being edited.
Parameters: path A TreePath focusColumn A TreeViewColumn, or null focusCell A cellrenderer, or null startEditing true if the specified cell should start being edited.
Since: 2.2
Parameters: enableSearch true, if the user can search interactively
Parameters: column null, or the column to draw the expander arrow at.
Parameters: enable true to enable fixed height mode.
Parameters: setting true if the columns are clickable.
Parameters: headersVisible true if the headers are visible
Parameters: expand true to enable hover selection mode.
Parameters: hover true to enable hover selection mode.
Parameters: model the new model for the TreeView
This function does not give you any degree of control over the order -- any reorderering is allowed. If more control is needed, you should probably handle drag and drop manually.
Parameters: reorderable true, if the tree can be reordered.
Parameters: method The TreeViewRowSeparatorMethod or null if no separators are to be drawn (the default).
Deprecated: This method is broken and has been deprecated in favor of the TreeView method.
Parameters: column The column of the data model to search in.
Shows a data column of the model in this TreeView
. This
method will try to guess the renderer to use, and because of that, it has
some limitations. For instance, you should only use it to show these
kinds of DataColumns: DataColumnBoolean
,
DataColumnString
, DataColumnPixbuf
,
DataColumnStockItem
.
For other kinds of DataColumn, the method
showDataColumn(int, CellRenderer, CellRendererAttribute)
should be used, which is more flexible, allowing you to specify which
renderer to use, and its rendering attributes.
Parameters: aCol the number of the column in the model to be shown; starting from 0.
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn
Shows a data column of the model in this TreeView
. This
method will try to guess the renderer to use, and because of that, it has
some limitations. For instance, you should only use it to show these
kinds of DataColumns: DataColumnBoolean
,
DataColumnString
, DataColumnPixbuf
,
DataColumnStockItem
.
For other kinds of DataColumn, the method
showDataColumn(int, CellRenderer, CellRendererAttribute)
should be used, which is more flexible, allowing you to specify which
renderer to use, and its rendering attributes.
Parameters: aCol
the number of the column in the model to be shown; starting
from 0. expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn
TreeView
, with a
specific renderer and rendering attributes.
Parameters: aCol the number of the column in the model to be shown; starting from 0. aRenderer the renderer to be used aAttr the rendering attributes to be used
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn
TreeView
, with a
specific renderer and rendering attributes.
Parameters: aCol
the number of the column in the model to be shown; starting
from 0. aRenderer
the renderer to be used aAttr
the rendering attributes to be used expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn
TreeView
, with a
specific renderer and rendering attributes.
Parameters: aCol the number of the column in the model to be shown; starting from 0. aRenderer the renderer to be used aAttr the rendering attributes to be used
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn
TreeView
, with a
specific renderer and rendering attributes.
Parameters: aCol
the number of the column in the model to be shown; starting
from 0. aRenderer
the renderer to be used aAttr
the rendering attributes to be used expand
true
if this column should expand to fill the
available space in the row, false
otherwise.
Returns: an instance to the new shown column.
See Also: TreeView TreeView DataColumn