org.gnome.gtk

## Class DataColumn

- Object
- - org.gnome.gtk.DataColumn

- Direct Known Subclasses:
    DataColumnBoolean, DataColumnIcon, DataColumnInteger, DataColumnLong, DataColumnPixbuf, DataColumnReference, DataColumnStock, DataColumnString

      public abstract class DataColumn
      extends Object

  Specify the data type of a column in a TreeModel tabular store and identify its position for later reference. When instantiating a `ListStore` or `TreeStore` you use an array of DataColumns to indicate the data type that each column of the model is to hold.

  The types you can store in a TreeModel is somewhat deliberately constrained to those that make sense when it comes time to present them. In almost every case you will be presenting textual data and so will want a DataColumnString to store it in. And while there are DataColumnInteger and DataColumnLong, if will often find yourself doing formatting on that data (currency, dates, etc) on the Java side before pushing it into the model and so will end up using a DataColumnString anyway.

  Keep in mind that you do not need to store all your application data in the TreeModel. After all, you already have a perfectly sound (and infinitely more powerful) means to model and represent your data: the Java language you're working from in the first place. You only need to push data into a TreeModel that will be directly displayed by a TreeView or that will be used to help manage that display (such as using a numeric type as an auxiliary sorting index for textual columns that otherwise wouldn't order properly). Quite frequently, however, you will want to take a selection or activation event from the TreeView and get back to the Java object that where the displayed data came from in the first place. This is the role of the other significant column type, `DataColumnReference`.

  ## Initializing TreeModels

  The optimal way to use this class is as follows. First declare variables to represent each column (they can be local variables but often you end up needing to access them from code outside the declaring method, so they usually end up as private instance variables).

       ...
       private final DataColumnString name;
       private final DataColumnString dob; // date of birth
       private final DataColumnLong dobSort;
       private final DataColumnBoolean useful; // is this person valued, or a waste of oxygen?

  and then instantiate them;

           ...
           name = new DataColumnString();
           dob = new DataColumnString();
           dobSort = new DataColumnLong();
           useful = new DataColumnBoolean();

  It is important to choose useful names for these variables; you'll be using them to conveniently identify the columns in later code (some people even go so far as to use all capitals to make them stand out, or use a suffix like `Column`, though neither are really necessary). You then make an array of them and use that for the ListStore constructor:

           final DataColumn[] types;
           final ListStore model;

           types = new DataColumn[] {
               name,
               dob,
               dobSort,
               useful
           }
           model = new ListStore(types);

  You can rather nicely do this all at once:

           ...
           model = new ListStore(new DataColumn[] {
               name = new DataColumnString(),
               dob = new DataColumnString(),
               dobSort = new DataColumnInteger(),
               useful = new DataColumnBoolean()
           });

  which is ultimately the API we had in mind for you to use! (Important: do not do the following:

           ...
           types = new DataColumn[] {
               new DataColumnString(),
               new DataColumnString(),
               new DataColumnInteger(),
               new DataColumnBoolean()
           };
           new ListStore(types);

  as this means you can only refer to each column as `types[2]` thus defeating the whole idea of having a meaningfully named handle to the column that each instance of this class represents. You will need those comprehensible names later).

  See the list of subclasses of DataColumn to see the current set of available column types.

  Since:
    4.0.5
  Author:
    Andrew Cowie, Mark Howard, Murray Cummings, Hanna Wallach

- - ### Method Summary

    - ### Methods inherited from class Object

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