## org.gnu.gtk
Class ListStore

    java.lang.Object
      org.gnu.glib.Struct
          org.gnu.glib.GObject
              org.gnu.gtk.TreeModel
                  org.gnu.gtk.ListStore

All Implemented Interfaces:
  TreeDragDest, TreeDragSource, TreeSortable

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 `TreeView` widgets. For full details of what objects are needed to construct lists and tables, please see the `TreeView` description.

The list store has a number of `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 `TreeViewColumn` objects, by associating properties of `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
`void` `addRow(DataRow aRow)` Adds a row to the list.
`void` `addRowAt(DataRow aRow, int aPosition)` Adds a row to the list, at the specified position.
`TreeIter` `appendRow()` Appends a new row to the store
`void` `clear()` Removes all rows from the list store.
`java.util.List` `getAllDataColumns()` Returns a `List` with the types for every column as a `DataColumn` object.
`DataColumn` `getDataColumn(int aCol)` Returns the type of the column `aCol` as a `DataColumn`.
`DataRow` `getRowAt(TreeIter aIter)` Gets all the values in the row indicated by `aIter`.
`DataColumn` `getSortColumn()` Get a DataColumn object representing the currently sorted column.
`SortType` `getSortOrder()` Get the current sorting order of the store.
`static Type` `getType()` Retrieve the runtime type used by the GLib library.
`int` `handleCompareFunc(org.gnu.glib.Handle model, org.gnu.glib.Handle aIter, org.gnu.glib.Handle bIter, int col)` Call-back method invoked by the JNI code when sorting is required.
`TreeIter` `insertRow(int position)` Creates a new row at `position`.
`TreeIter` `insertRowAfter(TreeIter sibling)` Inserts a new row after sibling.
`TreeIter` `insertRowBefore(TreeIter sibling)` Inserts a new row before sibling.
`boolean` `isIterValid(TreeIter iter)`
`void` `moveRowAfter(TreeIter iter, TreeIter position)` Moves iter in this store to the position after position.
`void` `moveRowBefore(TreeIter iter, TreeIter position)` Moves iter in store to the position before position.
`void` `moveRowToEnd(TreeIter iter)` Moves iter to the end of the model
`void` `moveRowToStart(TreeIter iter)` Moves iter in this store to the start of the store.
`TreeIter` `prependRow()` Prepends a new row to list_store.
`boolean` `removeRow(TreeIter iter)` Removes the given row from the list store.
`void` `reorder(int[] newOrder)`
`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.
`void` `setDragDestListener(TreeDragDestListener listener)`
`void` `setDragSourceListener(TreeDragSourceListener listener)`
`void` `setRowAt(DataRow aRow, TreeIter aIter)` Sets all columns pointed by `aIter` to the values stored in `aRow`.
`void` `setSortColumn(DataColumn column, SortType order)` Set the column in the list to sort on.
`void` `setSortMethod(TreeIterComparison method, DataColumn column)` Set the class used to sort the list according to the values stored in the given DataColumn.
`void` `setValue(TreeIter iter, DataColumnBoolean dataBlock, boolean value)` Sets a value in the data store.
`void` `setValue(TreeIter iter, DataColumnDouble dataBlock, double value)` Sets a value in the data store.
`void` `setValue(TreeIter iter, DataColumnIconSize dataBlock, IconSize value)` Sets a value in the dataStore.
`void` `setValue(TreeIter iter, DataColumnInt dataBlock, int value)` Sets a value in the data store.
`void` `setValue(TreeIter iter, DataColumnObject dataBlock, java.lang.Object value)` Sets a value in the dataStore.
`void` `setValue(TreeIter iter, DataColumnPixbuf dataBlock, Pixbuf value)` Sets a value in the dataStore.
`void` `setValue(TreeIter iter, DataColumnStockItem dataBlock, GtkStockItem value)` Sets a value in the dataStore.
`void` `setValue(TreeIter iter, DataColumnString dataBlock, java.lang.String value)` Sets a value in the data store.
`void` `swapRows(TreeIter a, TreeIter b)` Swaps a and b in the same level of tree_store.

Methods inherited from class org.gnu.gtk.TreeModel
`addListener, getColumnCount, getDataBlockCount, getEventListenerClass, getEventType, getFirstIter, getIter, getIter, getType, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, removeListener`

Methods inherited from class org.gnu.glib.GObject

`addEventHandler, addEventHandler, addEventHandler, addEventHandler, addEventHandler, addEventHandler, addListener, collect, freezeNotify, getBooleanProperty, getData, getDoubleProperty, getFloatProperty, getGObjectFromHandle, getIntProperty, getJavaObjectProperty, getLongProperty, getPixbufProperty, getProperty, getStringProperty, hasProperty, notify, removeEventHandler, removeListener, setBooleanProperty, setData, setDoubleProperty, setFloatProperty, setIntProperty, setJavaObjectProperty, setLongProperty, setPixbufProperty, setProperty, setStringProperty, thawNotify`

Methods inherited from class org.gnu.glib.Struct
`equals, getHandle, getNullHandle, hashCode`

Methods inherited from class java.lang.Object
`getClass, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.gnu.gtk.TreeSortable
`getHandle`

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 `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 `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

### 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:
    `TreeModel.getIter(String)`, `TreeModel.getIter(TreePath)`, `TreeModel.getFirstIter()`, `TreeSelection`

### 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(TreeIter)`

### 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

### 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

### getAllDataColumns

    public java.util.List getAllDataColumns()

  Returns a `List` with the types for every column as a `DataColumn` object.

  Returns:
    the list of `DataColumn`'s

### setValue

    public void setValue(TreeIter iter,
                         DataColumnString dataBlock,
                         java.lang.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 `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 `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 `TreeViewColumn` and add it to the `TreeView`; construct and add a `CellRenderer` to that; and finally associate the properties of the CellRenderer with the dataBlocks, using the `TreeViewColumn.addAttributeMapping(CellRenderer, CellRendererAttribute, DataColumn)` method. @param dataBlock The datablock in which the data should be stored.

  Parameters:
    `dataBlock` - The data block in which to store the data
    `iter` - Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as `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 `TreeViewColumn` and add it to the `TreeView`; construct and add a `CellRenderer` to that; and finally associate the properties of the CellRenderer with the dataBlocks, using the `TreeViewColumn.addAttributeMapping(CellRenderer, CellRendererAttribute, DataColumn)` method. @param dataBlock The datablock in which the data should be stored.

  Parameters:
    `dataBlock` - The data block in which to store the data
    `iter` - Valid iterator for the data row in which the value is to be set. These can be gotten using methods such as `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 `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 `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,
                         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 `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 `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 `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 `appendRow()`.
    `dataBlock` - The data block to store the value in.
    `value` - The value to store.

### setValue

    public void setValue(TreeIter iter,
                         DataColumnObject dataBlock,
                         java.lang.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 `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 `appendRow()`.
    `value` - The value to be set. This must match the type for that dataBlock, as set in the constructor.

### 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.

### 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

### 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

### 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.

### 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

### 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.

### getType

    public static Type getType()

  Retrieve the runtime type used by the GLib library.

### setSortColumn

    public void setSortColumn(DataColumn column,
                              SortType order)

  Set the column in the list to sort on.

  Specified by:
    `setSortColumn` in interface `TreeSortable`

### 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 ``DataColumn.equals(org.gnu.gtk.DataColumn)`` method.

  Specified by:
    `getSortColumn` in interface `TreeSortable`
  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.

  Specified by:
    `getSortOrder` in interface `TreeSortable`
  Returns:
    A SortType object defining the current sorting order of the store or `null` if there is no current sort order.

### 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.

  Specified by:
    `setSortMethod` in interface `TreeSortable`

### handleCompareFunc

    public int handleCompareFunc(org.gnu.glib.Handle model,
                                 org.gnu.glib.Handle aIter,
                                 org.gnu.glib.Handle bIter,
                                 int col)

  Call-back method invoked by the JNI code when sorting is required. This is for internal use only.

  Specified by:
    `handleCompareFunc` in interface `TreeSortable`

### setDragDestListener

    public void setDragDestListener(TreeDragDestListener listener)

  Specified by:
    `setDragDestListener` in interface `TreeDragDest`

### setDragSourceListener

    public void setDragSourceListener(TreeDragSourceListener listener)

  Specified by:
    `setDragSourceListener` in interface `TreeDragSource`

### 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

### moveRowToEnd

    public void moveRowToEnd(TreeIter iter)

  Moves iter to the end of the model

  Since:
    2.2

### 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

### moveRowToStart

    public void moveRowToStart(TreeIter iter)

  Moves iter in this store to the start of the store.

  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

### isIterValid

    public boolean isIterValid(TreeIter iter)

### reorder

    public void reorder(int[] newOrder)