org.gnu.gtk

Class ListStore

public class ListStore extends TreeModel implements TreeSortable, TreeDragSource, TreeDragDest

The ListStore is the gtk Model used for constructing Lists and tables to be displayed within {@link TreeView} widgets. For full details of what objects are needed to construct lists and tables, please see the {@link TreeView} description.

The list store has a number of {@link DataColumn}s, or data 'columns' associated with it. These do not correspond to the organisation of the output into columns. The data store can in fact be used with any number of treeView widgets, each displaying a different part of the data. In these Java bindings, we will try to use the term dataBlock for the data in the ListStore and Column to refer to the columns to be displayed. The data to be displayed is set in the {@link TreeViewColumn} objects, by associating properties of {@link CellRenderer}'s with the data block used in this object.

Constructor Summary
ListStore(DataColumn[] dataColumns)
Constructs a new ListStore object for storing data in a list style manner.
Method Summary
voidaddRow(DataRow aRow)
Adds a row to the list.
voidaddRowAt(DataRow aRow, int aPosition)
Adds a row to the list, at the specified position.
TreeIterappendRow()
Appends a new row to the store
voidclear()
Removes all rows from the list store.
ListgetAllDataColumns()
Returns a List with the types for every column as a DataColumn object.
DataColumngetDataColumn(int aCol)
Returns the type of the column aCol as a DataColumn.
DataRowgetRowAt(TreeIter aIter)
Gets all the values in the row indicated by aIter.
DataColumngetSortColumn()
Get a DataColumn object representing the currently sorted column.
SortTypegetSortOrder()
Get the current sorting order of the store.
static TypegetType()
Retrieve the runtime type used by the GLib library.
inthandleCompareFunc(Handle model, Handle aIter, Handle bIter, int col)
Call-back method invoked by the JNI code when sorting is required.
TreeIterinsertRow(int position)
Creates a new row at position.
TreeIterinsertRowAfter(TreeIter sibling)
Inserts a new row after sibling.
TreeIterinsertRowBefore(TreeIter sibling)
Inserts a new row before sibling.
booleanisIterValid(TreeIter iter)
voidmoveRowAfter(TreeIter iter, TreeIter position)
Moves iter in this store to the position after position.
voidmoveRowBefore(TreeIter iter, TreeIter position)
Moves iter in store to the position before position.
voidmoveRowToEnd(TreeIter iter)
Moves iter to the end of the model
voidmoveRowToStart(TreeIter iter)
Moves iter in this store to the start of the store.
TreeIterprependRow()
Prepends a new row to list_store.
booleanremoveRow(TreeIter iter)
Removes the given row from the list store.
voidreorder(int[] newOrder)
voidsetColumnTypes(DataColumn[] dataColumns)
This function is meant primarily for GObjects that inherit from ListStore, and should only be used when constructing a new ListStore.
voidsetDragDestListener(TreeDragDestListener listener)
This method has not yet been implemented.
voidsetDragSourceListener(TreeDragSourceListener listener)
This method has not yet been implemented.
voidsetRowAt(DataRow aRow, TreeIter aIter)
Sets all columns pointed by aIter to the values stored in aRow.
voidsetSortColumn(DataColumn column, SortType order)
Set the column in the list to sort on.
voidsetSortMethod(TreeIterComparison method, DataColumn column)
Set the class used to sort the list according to the values stored in the given DataColumn.
voidsetValue(TreeIter iter, DataColumnString dataBlock, String value)
Sets a value in the data store.
voidsetValue(TreeIter iter, DataColumnStockItem dataBlock, GtkStockItem value)
Sets a value in the dataStore.
voidsetValue(TreeIter iter, DataColumnIconSize dataBlock, IconSize value)
Sets a value in the dataStore.
voidsetValue(TreeIter iter, DataColumnInt dataBlock, int value)
Sets a value in the data store.
voidsetValue(TreeIter iter, DataColumnLong dataBlock, long value)
Sets a value in the dataStore.
voidsetValue(TreeIter iter, DataColumnBoolean dataBlock, boolean value)
Sets a value in the data store.
voidsetValue(TreeIter iter, DataColumnDouble dataBlock, double value)
Sets a value in the data store.
voidsetValue(TreeIter iter, DataColumnObject dataBlock, Object value)
Sets a value in the dataStore.
voidsetValue(TreeIter iter, DataColumnPixbuf dataBlock, Pixbuf value)
Sets a value in the dataStore.
voidswapRows(TreeIter a, TreeIter b)
Swaps a and b in the same level of tree_store.

Constructor Detail

ListStore

public ListStore(DataColumn[] dataColumns)
Constructs a new ListStore object for storing data in a list style manner. The data is stored in a set of numbered data blocks, each one of which can then be displayed in a column by setting the appropriate attribute mapping of the CellRenderers.

Parameters: dataColumns a list of dataColumns for the store. These should be created as private variables of the required type - they will be needed later.

Method Detail

addRow

public void addRow(DataRow aRow)
Adds a row to the list. This method can be used to easily add data to the list. Each item in the DataRow must match the {@link DataColumn} type specified in the constructor of ListStore. For example, if it was passed {new DataColumnBoolean(), new DataColumnString()} to the constructor, then the DataRow must contain a Boolean and a String object, respectively.

Parameters: aRow a row to be added to the list

addRowAt

public void addRowAt(DataRow aRow, int aPosition)
Adds a row to the list, at the specified position. This method can be used to easily add data to the list. Each item in the DataRow must match the {@link DataColumn} type specified in the constructor of ListStore. For example, if it was passed {new DataColumnBoolean(), new DataColumnString()} to the constructor, then the DataRow must contain a Boolean and a String object, respectively.

Parameters: aRow a row to be added to the list

appendRow

public TreeIter appendRow()
Appends a new row to the store

Returns: Iterator for the new row

clear

public void clear()
Removes all rows from the list store.

getAllDataColumns

public List getAllDataColumns()
Returns a List with the types for every column as a DataColumn object.

Returns: the list of DataColumn's

getDataColumn

public DataColumn getDataColumn(int aCol)
Returns the type of the column aCol as a DataColumn. This is similar to calling getType(int); the difference is that this method returns the type as a DataColumn, which is a more high-level structure.

Parameters: aCol the column index

Returns: the corresponding DataColumn

getRowAt

public DataRow getRowAt(TreeIter aIter)
Gets all the values in the row indicated by aIter. There are several ways you can get a TreeIter to pass; for example: using methods like getIter and getFirstIter(), or from a TreeSelection.

Parameters: aIter the iter pointing to the row

Returns: a DataRow filled with the values of the row.

See Also: getIter getIter getFirstIter TreeSelection

getSortColumn

public DataColumn getSortColumn()
Get a DataColumn object representing the currently sorted column. This is not the same DataColumn used to create the store. It is only of type DataColumn (not DataColumnString, etc). It can be compared with another DataColumn object using the {@link DataColumn#equals} method.

Returns: A DataColumn object representing the currently sorted column or null if there is no column currently sorted.

getSortOrder

public SortType getSortOrder()
Get the current sorting order of the store.

Returns: A SortType object defining the current sorting order of the store or null if there is no current sort order.

getType

public static Type getType()
Retrieve the runtime type used by the GLib library.

handleCompareFunc

public int handleCompareFunc(Handle model, Handle aIter, Handle bIter, int col)
Call-back method invoked by the JNI code when sorting is required. This is for internal use only.

insertRow

public TreeIter insertRow(int position)
Creates a new row at position. If position is larger than the number of rows on the list, then the new row will be appended to the list.

Parameters: position The position to place the new row, starting at 0.

Returns: Iterator for the new row

insertRowAfter

public TreeIter insertRowAfter(TreeIter sibling)
Inserts a new row after sibling. If sibling is NULL, then the row will be prepended to the beginning of the list. iter will be changed to point to this new row.

Parameters: sibling

Returns: Iterator for the new row.

insertRowBefore

public TreeIter insertRowBefore(TreeIter sibling)
Inserts a new row before sibling. If sibling is NULL, then the row will be appended to the end of the list. iter will be changed to point to this new row.

Parameters: sibling

Returns: Iterator for the new row

isIterValid

public boolean isIterValid(TreeIter iter)

moveRowAfter

public void moveRowAfter(TreeIter iter, TreeIter position)
Moves iter in this store to the position after position. The iter and position should be in the same level. Note that this function only works with unsorted stores.

Since: 2.2

moveRowBefore

public void moveRowBefore(TreeIter iter, TreeIter position)
Moves iter in store to the position before position. The iter and position should be in the same level. Note that this function only works with unsorted stores.

Since: 2.2

moveRowToEnd

public void moveRowToEnd(TreeIter iter)
Moves iter to the end of the model

Since: 2.2

moveRowToStart

public void moveRowToStart(TreeIter iter)
Moves iter in this store to the start of the store.

Since: 2.2

prependRow

public TreeIter prependRow()
Prepends a new row to list_store. The iter will be changed to point to this new row. The row will be empty after this function is called.

Returns: Iterator for the new row

removeRow

public boolean removeRow(TreeIter iter)
Removes the given row from the list store. After being removed, iter is set to be the next valid row, or invalidated if it pointed to the last row in this store.

Parameters: iter iterator for the row to be removed.

Returns: TRUE if iter is valid, FALSE if not.

reorder

public void reorder(int[] newOrder)

setColumnTypes

public void setColumnTypes(DataColumn[] dataColumns)
This function is meant primarily for GObjects that inherit from ListStore, and should only be used when constructing a new ListStore. It will not function after a row has been added, or a method on the TreeModel interface is called.

Parameters: dataColumns the data columns to be set

setDragDestListener

public void setDragDestListener(TreeDragDestListener listener)
This method has not yet been implemented.

setDragSourceListener

public void setDragSourceListener(TreeDragSourceListener listener)
This method has not yet been implemented.

setRowAt

public void setRowAt(DataRow aRow, TreeIter aIter)
Sets all columns pointed by aIter to the values stored in aRow.

Parameters: aRow a row with items aIter a TreeIter pointing to a row in the tree.

See Also: getRowAt

setSortColumn

public void setSortColumn(DataColumn column, SortType order)
Set the column in the list to sort on.

setSortMethod

public void setSortMethod(TreeIterComparison method, DataColumn column)
Set the class used to sort the list according to the values stored in the given DataColumn.

setValue

public void setValue(TreeIter iter, DataColumnString dataBlock, String value)
Sets a value in the data store. To display the data in the widget, you need to associate the datablock with the renderer, using methods of the {@link TreeViewColumn}.

Parameters: iter A valid iterator which specifies the row in which the data should be set. Iterators can be gained by using methods such as {@link #appendRow()}. dataBlock The data block to store the value in. value The value to store. This must be of the same type for the column as that set in the constructor to the ListStore.

setValue

public void setValue(TreeIter iter, DataColumnStockItem dataBlock, GtkStockItem value)
Sets a value in the dataStore. The type of the value must match the type set for that dataBlock in the constructor.

This does not make the data visible in any of the widgets which use the class - to do that, you have to construct a {@link TreeViewColumn} and add it to the {@link TreeView}; construct and add a {@link CellRenderer} to that; and finally associate the properties of the CellRenderer with the dataBlocks, using the {@link TreeViewColumn#addAttributeMapping(CellRenderer, CellRendererAttribute, DataColumn)} method.

Parameters: dataBlock The datablock in which the data should be stored. iter Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as {@link #appendRow()}. value The value to be set.

setValue

public void setValue(TreeIter iter, DataColumnIconSize dataBlock, IconSize value)
Sets a value in the dataStore. The type of the value must match the type set for that dataBlock in the constructor.

This does not make the data visible in any of the widgets which use the class - to do that, you have to construct a {@link TreeViewColumn} and add it to the {@link TreeView}; construct and add a {@link CellRenderer} to that; and finally associate the properties of the CellRenderer with the dataBlocks, using the {@link TreeViewColumn#addAttributeMapping(CellRenderer, CellRendererAttribute, DataColumn)} method.

Parameters: dataBlock The datablock in which the data should be stored. iter Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as {@link #appendRow()}. value The value to be set.

setValue

public void setValue(TreeIter iter, DataColumnInt dataBlock, int value)
Sets a value in the data store. To display the data in the widget, you need to associate the datablock with the renderer, using methods of the {@link TreeViewColumn}.

Parameters: iter A valid iterator which specifies the row in which the data should be set. Iterators can be gained by using methods such as {@link #appendRow()}. dataBlock The data block to store the value in. value The value to store. This must be of the same type for the column as that set in the constructor to the ListStore.

setValue

public void setValue(TreeIter iter, DataColumnLong dataBlock, long value)
Sets a value in the dataStore. The type of the value must match the type set for that dataBlock in the constructor.

This does not make the data visible in any of the widgets which use the class - to do that, you have to construct a {@link TreeViewColumn} and add it to the {@link TreeView}; construct and add a {@link CellRenderer} to that; and finally associate the properties of the CellRenderer with the dataBlocks, using the {@link TreeViewColumn#addAttributeMapping(CellRenderer, CellRendererAttribute, DataColumn)} method.

Parameters: dataBlock The datablock in which the data should be stored. iter Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as {@link #appendRow(TreeIter)}. value The long value to set into this row.

Since: 2.8.5

setValue

public void setValue(TreeIter iter, DataColumnBoolean dataBlock, boolean value)
Sets a value in the data store. To display the data in the widget, you need to associate the datablock with the renderer, using methods of the {@link TreeViewColumn}.

Parameters: iter A valid iterator which specifies the row in which the data should be set. Iterators can be gained by using methods such as {@link #appendRow()}. dataBlock The data block to store the value in. value The value to store. This must be of the same type for the column as that set in the constructor to the ListStore.

setValue

public void setValue(TreeIter iter, DataColumnDouble dataBlock, double value)
Sets a value in the data store. To display the data in the widget, you need to associate the datablock with the renderer, using methods of the {@link TreeViewColumn}.

Parameters: iter A valid iterator which specifies the row in which the data should be set. Iterators can be gained by using methods such as {@link #appendRow()}. dataBlock The data block to store the value in. value The value to store.

setValue

public void setValue(TreeIter iter, DataColumnObject dataBlock, Object value)
Sets a value in the dataStore. The type of the value must match the type set for that dataBlock in the constructor.

Parameters: dataBlock The datablock in which the data should be stored. iter Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as {@link #appendRow()}. value The value to be set.

setValue

public void setValue(TreeIter iter, DataColumnPixbuf dataBlock, Pixbuf value)
Sets a value in the dataStore. The type of the value must match the type set for that dataBlock in the constructor.

This does not make the data visible in any of the widgets which use the class

Parameters: dataBlock The datablock in which the data should be stored. iter Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as {@link #appendRow()}. value The value to be set. This must match the type for that dataBlock, as set in the constructor.

swapRows

public void swapRows(TreeIter a, TreeIter b)
Swaps a and b in the same level of tree_store. Note that this function only works with unsorted stores.

Since: 2.2