# Class: modelit.ui.TreeTable

### Extends: modelit.ui.Jacontrol & modelit.ui.AbstractJacontrol & matlab.mixin.SetGet & handle & matlab.mixin.Heterogeneous

## DESCRIPTION:

A treetable for display of hierarchical data. Furthermore the table has some built in features to render icons, dates, comboboxes, Change color of foreground and background of the table cells etc.

#

## Properties

Anchor | Integer: default value: [] |
     Returns the index (row and column) of the first selected cell in the current selection.
     Some interfaces display the anchor in a special way.
     e.g. Windows95 displays the lead index with a dotted yellow outline.
BackgroundColor | 1-by-3 matrix of RGB values, default value is system dependent |
     The background color of the treetable.
Border | Boolean, default value: true |
     Indicates if a border is shown around the treetable's scrollpane.
Busy | Boolean, default value: False |
     If true a indeterminate progress indicator appears on the faded treetable.
     While this indicator is visible the treetable is disabled.
BusyAction | cancel | {queue} |
     Callback queuing.
     Determines how MATLAB handles the execution of interrupting callbacks.
     A running callback is the currently executing callback. The interrupting callback is the callback that tries to interrupt the running callback.
     The BusyAction property of the interrupting callback determines how MATLAB handles its execution. When the BusyAction property is set to:
      'queue' ? Puts the interrupting callback in a queue to be processed after the running callback finishes execution.
      'cancel' ? Discards the interrupting callback as MATLAB finishes execution.
     For information about how the Interruptible property of the callback controls whether other callbacks can interrupt the running callback, see the Interruptible property description.
Callback | String, cell array or function handle, default value: [] |
     Function that should be executed when the user changes the current selection.
     Selection can be changed by clicking with the left mousebutton or
     by using up/down/left/right, enter, tab, pageUp/PageDown, Ctrl+a or
     home/end keys
CellBackgroundColor | Matrix, default value: [] |
     Specifies an index in the ColorSet for every treetable cell.
     This matrix with indices has the same size (rows and columns) as the data in the treetable.
     The colorindex is used to look up the color in the treetable's ColorSet and sets every cell's background color.
     e.g.
     ColorSet = [0 0 0 1; 0 --> blue
                 1 1 0 0] 1 --> red
     and
     Colorindex = [1 1 1;0 0 0] makes the first row red and the second row blue

     NOTE: Do not forget to specify the treetable's ColorSet
CellForegroundColor | Matrix, default value: [] |
     Specifies an index in the ColorSet for every treetable cell.
     This matrix with indices has the same size (rows and columns) as the data in the treetable.
     The colorindex is used to look up the color in the treetable's ColorSet and sets every cell's foreground (text) color if possible.
     e.g.
     ColorSet = [0 0 0 1; 0 --> blue
                 1 1 0 0] 1 --> red
     and
     Colorindex = [1 1 1;0 0 0] makes the text of the first row red and the second row blue

     NOTE: Do not forget to specify the treetable's ColorSet.
CellSelection | Boolean: default value: False |
     Indicates whether the user can select single cells (true) or only rows (false) in the treetable.
CellToolTips | Cellstring, default value: {} (no tooltips) |
     Set the tooltips for the treetable cells.
CheckedRows | [Nx1] Array of booleans with N the height of the data matrix |
     If true, check the checkbox for this row.
     if false, uncheck the checkbox for this row.
Children | The component's children. |
Clipping | clipping |
     Clipping mode.
     This property has no direct effect on the objects
     Use this property if you want to implement your own custom
CMenu | Handle, default value: [] |
     The handle of the context menu associated with the treetable.
     The context menu is displayed whenever you right-click over the treetable.
     Use the Matlab uicontextmenu function to create the context menu.
ColorSet | Matrix Nx4, default value: [] (no colors) |
     First column is a key
     Second, third and fourth column specify the RGB values for the corresponding index.
     The colorset is used to determine the color of every cell in the treetable by using the color key specified for every cell.
     The colorset is also used to determine the colors for piecebars
     (see ColumnFormats).
ColumnClass (Read-only) | CellString with class per column. |
ColumnControl | Boolean, default value: False |
     The Column Control is an icon that renders to the right of the column headers,
     just above the vertical scrollbar. When a user clicks the icon, a popup menu appears.
     This popupmenu can be defined by using the treetable's property ControlButtonMenu.
ColumnControlVisible | Boolean, default value: False |
     The Column Control is an icon that renders to the right of the column headers,
     just above the vertical scrollbar. When a user clicks the icon, a popup menu appears.
     This popupmenu can be defined by using the treetable's property ControlButtonMenu.
ColumnEditable | Vector of boolean, default value: [] (not editable) |
     Specifies the columns which are editable.
ColumnFormats | Cellstring, default value: {}. |
     Set the format of the treetable's columns.
     Possible values:
      icon
        render string as icon, the icon is looked up in the iconset
      legend
        render hg handles as legend items
      filesize
        render numbers as a filesize, e.g. 1024 renders as 1 KB
      date
        use matlab datestr formatting to render a Matlab datenum as a date.
        e.g. 'dd mmm yyyy' renders a datenum as 01 mrt 2016
      bar
        render numbers as a bar
      absbar
        render absolute numbers as a bar, the bars are colored red in case of negative numbers
      piecebar
      color
        render an rgb color triple e.g. [0 1 0] as a color
      number
        use sprintf format for numbers e.g. %g or %6.4f
      string
        render value as a string

      NOTE: use '' for boolean, integers
ColumnNames | Cellstring, default value: {}. |
     Set the names (headers) of the treetable columns.
ColumnTooltips | Cellstring, default value: {} (no tooltips) |
     Set the tooltips for the treetable columns.
ColumnWidths | Array, default value: []. |
     Set the widths of the treetable's columns, -1 if auto.
Content | ? |
ContextMenu | Handle, default value: [] |
     The handle of the context menu associated with the treetable.
     The context menu is displayed whenever you right-click over the treetable.
     Use the Matlab uicontextmenu function to create the context menu.
ControlButtonMenu | Handle, default value: [] |
     The handle of the menu associated with the treetable's columncontrol button in the right upper corner of the treetable.
     The context menu is displayed whenever you click on the columncontrol button.
     Menuitems are added after the standard menu of the treetable.
Data | Cell array, default value []: |
     Data for the treetable, every column should have the same format e.g. all strings or numbers.
DragEnabled | Boolean, default value: false |
     Specifies if the content of the selected cells/rows/columns can be
     dragged into another component or application.
EditCallback | String, cell array or function handle, default value: [] |
     Function that should be executed when the user changes the value of a cell in the treetable.
     Use getTableValue to obtain information about which cell(s) of the treetable are edited
Enable | {on} | inactive | off |
     Disable or enable the component.
     This property controls how components respond to user interaction.
     Possible values for this property:
      on ? The component is operational (the default).
      inactive ? The component is not operational, but looks the same as when Enable is on.
      off ? The component is not operational and is grayed out.
ExpandedRows | Boolean array, default value: all false |
     Expansion state of every row in the treetable
     Note that for a node expansion to be visible, not only the node,
     but also its parents must be expanded
      true -> expand this node
      false -> fold this node
Extent | Width and height are the dimensions of the rectangle. All measurements are in units specified by the Units property. |
     Position rectangle (read only).
     A four-element vector that defines the size and position of the component.
     It has the form: [xpos,ypos,width,height]
     The first two elements are always zero are the component's position on the x- and y-axis. w
FontAngle | {normal} | italic |
     Setting this property to italic selects a slanted version of the component's font, when it is available on your system.
FontName | String, default is system dependent. |
     The name of the font in which to display the text in the components.
     To display and print properly, this must be a font that your system supports.
     Use listfonts to list all available system fontnames.
FontSize | Integer, default value is system dependent. |
     A number specifying the size in pixels of the component's font.
FontUnits | {points} | normalized | inches | centimeters | pixels |
     This property determines the units used by the FontSize property.
     Normalized units interpret FontSize as a fraction of the height of the uicontrol. When you resize the uicontrol, MATLAB modifies the screen FontSize accordingly.
     pixels, inches, centimeters, and points are absolute units (1 point = 1/72 inch).
FontWeight | {normal} | bold |
     Setting this property to bold selects a bold version of the component's font, when it is available on your system.
ForegroundColor | RGB triple, default value is system dependent |
     The foreground color of the treetable (font color).
Grid | {grid} | horizontal | vertical | none |
     Specifies whether the treetable draws horizontal lines, vertical lines, both or nothing between the treetable cells.
GridBackgroundColor | 1-by-3 matrix of RGB values, default value is system dependent |
     The background color of the treetable.
GridColor | RGB triple, default value is system dependent |
     The color of the treetable's (partial) grid when visible.
HeaderBackgroundColor | RGB triple, default value is system dependent |
     The background color of the treetable header.
HeaderFontAngle | {normal} | italic |
     Setting this property to italic selects a slanted version of the treetable header's font.
HeaderFontName | String, default is system dependent. |
     The name of the font in which to display the string in the treetable header.
     To display and print properly, this must be a font that your system supports.
     Use listfonts to list all available system fontnames.
HeaderFontSize | Integer, default value is system dependent. |
     A number specifying the size in pixels of the treetable header's font.
HeaderFontWeight | {normal} | bold |
     Setting this property to bold selects a bold version of the treetable header's font.
HeaderForegroundColor | RGB triple, default value is system dependent |
     The foreground color of the treetable (text color) .
HeaderVisible | Boolean, default value: True |
     Display a header with columnnames above the treetable.
Hierarchy | [Nx1] Array of int |
     This array defines the tree structure
     if element i == j then j is the parent of i, 0 is the root
     E.g. [0 0 0 0 0] --> flat treetable (no nesting)
     E.g. [0 1 1 1 1] --> treetable with one nest (all nodes have node 1 as their parent)
     E.g. [0 1 1 1 1 0 6 6 6 6] --> treetable with two nests of four
     nodes
Highlighter | An RGB triple | {none} | genericgrey | beige | classicLinePrinter | floralWhite | linePrinter | quickSilver | ledger | matlab | notepad |
     Rows can be highlighted to make it easier to distinguish between different rows by using a subtle background color scheme for every other row.
IconNames | [Nx1] cellstring |
     The cellcontent specifies the icon (from the iconset) to be shown
     in the hierarchical column of the treetable
     E.g.{'bullet_green.png';'bullet_green.png'} will render green
     bulleted nodes
Iconset | String, default value: '' |
     The name of the jar file with icons or the full path to the jar file.
InfoLabel | Boolean, default value: False |
     Specifies if a label with info is visible in the lower right
     corner of the treetable. This label shows information about the number
     of selected rows, the number of visible rows (after filtering) and
     the total number of available rows.
InfoLabelFontAngle | {normal} | italic |
     Setting this property to italic selects a slanted version of the info label's font, when it is available on your system.
InfoLabelFontName | String, default is system dependent. |
     The name of the font in which to display the string in the info label.
     To display and print properly, this must be a font that your system supports.
     Use listfonts to list all available system fontnames.
InfoLabelFontSize | Integer, default value is system dependent. |
     A number specifying the size in pixels of the info label's font.
InfoLabelFontWeight | {normal} | bold |
     Setting this property to bold selects a bold version of the infor label's font, when it is available on your system.
Interruptible | off | {on} |
     Callback routine interruption.
     Controls whether MATLAB can interrupt an object's callback function when subsequent callbacks attempt to interrupt it.
JavaHandle | Java object |
     The underlying java object.
     See javacomponent
KeyPressedCallback | String, cell array or function handle, default value: [] |
     Function that should be executed when the user presses a key or combination of keys.
MatlabHandle | Matlab handle |
     The handle of the associated Matlab container for this java object.
     See javacomponent
MaximumSize | Array, [width height] |
     The component's maximum size, measured in pixels.
     The preferred size indicates the best size for the component.
     The component should be no larger than its maximum size and no smaller than its minimum size.
     NOTE: Matlab may overrule this setting if the component is not in
     a Panel, ScrollPane, Toolbar, SplitPane or TabbedPane.
MinimumSize | Array, [width height] |
     The component's minimum size, measured in pixels.
     The preferred size indicates the best size for the component.
     The component should be no larger than its maximum size and no smaller than its minimum size.
     NOTE: Matlab may overrule this setting if the component is not in
     a Panel, ScrollPane, Toolbar, SplitPane or TabbedPane.rtain layout managers.
MouseClickedCallback | String, cell array or function handle, default value: [] |
     Specifies the function that should be executed when the mouse is clicked on the component
MouseEnteredCallback | String, cell array or function handle, default value: [] |
     Specifies the callback function that should be executed when the mouse enters the component.
MouseExitedCallback | String, cell array or function handle, default value: [] |
     Specifies the callback function that should be executed when the mouse exits the component.
NextFocusableComponent | Jacontrol, default value: [] |
     Specifies the next component to get the focus after this one.
     for example, when the tab key or shift-tab key is used.
Parent | The component's parent. |
Position | Array, [width height] |
     Size and location of the component.
     The rectangle defined by this property specifies the size and location of the component within the parent.
     Specify Position as [left bottom width height]
     left and bottom are the distance from the lower-left corner of the parent object to the lower-left corner of the component.
     width and height are the dimensions of the component. All measurements are in units specified by the Units property.
PreferredSize | Array, [width height] |
     The component's preferred size, measured in pixels.
     The preferred size indicates the best size for the component.
     The component should be no larger than its maximum size and no smaller than its minimum size.
     NOTE: Matlab may overrule this setting if the component is not in
     a Panel, ScrollPane, Toolbar, SplitPane or TabbedPane.
Prompt | String, default value: '' |
     The prompt text (shown empty hint) for the treetable
RowCheckedCallback | String, cell array or function handle, default value: [] |
     Function that executes when the user clicks on the checkboxes in the tree
Scrollbar | Boolean, default value: False |
     Normally a treetable in a scrollPane will fit all columns within the scrollpane's viewport,
     possibly causing some of them to resize beneath an optimal width and making them illegible.
     By setting the Scrollbar property to true all columns will be resized to their preferred width,
     possibly extending the treetable outside the scrollpane's viewport.
SelectedColumns | Integer: default value: [] |
     A vector of indices corresponding to the currently selected treetable columns.
     1 corresponds to the first column in the treetable. Note that the
     index refers to the raw data and not to the current view of the
     table
SelectedRows | Integer: default value: [] |
     A vector of indices corresponding to the currently selected treetable rows.
     1 corresponds to the first row in the treetable. Note that the
     index refers to the raw data and not to the current view of the
     table
SelectionCallback | String, cell array or function handle, default value: [] |
     Function that should be executed when the user changes the current selection.
     Selection can be changed by clicking with the left mousebutton or
     by using up/down/left/right, enter, tab, pageUp/PageDown, Ctrl+a or
     home/end keys
     The number of clicks can be determined from the callback event by using get(event, 'clickcount')
SelectionMode | {1} | 2 | 3 | 5 | 6 | 7 | 11 |
     The selection mode. The following selectionMode values are allowed:
       1: SINGLE_SELECTION
          Only one list index can be selected at a time.
       2: SINGLE_INTERVAL_SELECTION
          One contiguous index interval can be selected at a time.
       3: MULTIPLE_INTERVAL_SELECTION
          In this mode, there's no restriction on what can be selected.
       5: SINGLE_SELECTION_TOGGLE
          Only one list index can be selected at a time.
          Mouse toggles selection.
       6: SINGLE_INTERVAL_SELECTION_TOGGLE
          One contiguous index interval can be selected at a time.
          Mouse toggles selection.
       7: MULTIPLE_INTERVAL_SELECTION_TOGGLE
          In this mode, there's no restriction on what can be selected.
          Mouse toggles selection.
      11: SINGLE_SELECTION_INTERVAL
          Only one list index can be selected at a time. All rows in the treetable
          above the selected row are painted (not selected) with the
          selection color
ShowCheckboxes | Boolean, default value: false |
     If true, show checkbox in the hierarchical column of the treetable.
     Use RowCheckedCallback to react on clicks on these
     checkboxes
ShowRoot | Boolean, default value false |
     If true show root of treetable
Style | TreeTable (Read only) |
Tag | String, default value: '' |
     User specified object identifier.
     Use this tag i.c.w. gcjh('tag',parent) to find a modelit.ui.Jacontrol
Type | Read only property fixed to 'Jacontrol' |
     String with the object type.
Units | {pixels} | normalized | inches | centimeters | points | characters |
     Used to interpret the extent and position properties.
     All units are measured from the lower-left corner of the parent object.
     Normalized units map the lower-left corner of the parent object to (0,0) and the upper-right corner to (1.0,1.0).
     pixels, inches, centimeters, and points are absolute units (1 point = 1/72 inch).
     Character units are characters using the default system font; the width of one character is the width of the letter x, the height of one character is the distance between the baselines of two lines of text.
     If you change the value of Units, it is good practice to return it to its default value after completing your computation so as not to affect other functions that assume Units is set to the default value.
Userdata | Array, default value: [] |
     User specified data for this modelit.ui.Jacontrol object
Value | Integer: default value: [] |
     A a vector of indices corresponding to the currently selected treetable rows.
     1 corresponds to the first row in the treetable. Note that the
     index refers to the raw data and not to the current view of the
     table
Visible | Off | {On} |
     Component visibility.
     By default, all jacontrols are visible. When set to off, the jacontrol is not visible, but still exists and you can query and set its properties.

# Public Method: cleanup

## DESCRIPTION:

Reset object fields to empty values, called by the destructor.

## CALL:

cleanup(obj)

## INPUT:

obj | any |
    modelit.ui.Jacontrol

## OUTPUT:

       No output

# Public Method: TreeTable

## DESCRIPTION:

modelit.ui.TreeTable constructor

## CALL:

obj = modelit.ui.TreeTable(parent, varargin)

## INPUT:

parent | any |
    handle of the TreeTable's parent e.g. gcf or modelit.ui.Panel
varargin | any |
    parameter-value pairs, see TreeTable properties for a
    description of the parameters and their values
    Documentation for modelit.ui.TreeTable/TreeTable
       doc modelit.ui.TreeTable

# Public Method: expandAll

## DESCRIPTION:

Expand or collapse entire tree

## CALL:

expandAll(obj, expand)

## INPUT:

obj | any |
    modelit.ui.Table
expand | any |
    boolean (optional),
      {true}: completely expand tree
      false: collapse tree

## OUTPUT:

       No direct output, tree is fully collapsed or expanded

# Public Method: setValueAt

## DESCRIPTION:

Programmatically set a value in the table.

## CALL:

setValueAt(obj, row, col, value)

## INPUT:

obj | any |
    modelit.ui.Table
row | any |
    integer with the row in the data model which has to be changed.
col | any |
    integer with the column in the data model which has to be changed.
value | any |
    the new value.

## OUTPUT:

       No direct output the value in cell (row, col) of the data model is adjusted.

# Public Method: getValueAt

## DESCRIPTION:

Get a value in the table.

## CALL:

value = getValueAt(obj, row, col)

## INPUT:

obj | any |
    modelit.ui.Table
row | any |
    integer with the row in the data model which has to be changed.
col | any |
    integer with the column in the data model which has to be changed.

## OUTPUT:

value | any |
    the new value.

# Public Method: delete

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

modelit.ui.Jacontrol destructor.

## CALL:

delete(obj)

## INPUT:

obj | any |
    modelit.ui.Jacontrol

## OUTPUT:

       No output

    Help for modelit.ui.TreeTable/delete is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: isappdata

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

True if application defined data exists.

## CALL:

value = isappdata(obj, name)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object
name | any |
    string with the name of the application data

## OUTPUT:

value | any |
        True if the application defined data exists
    Help for modelit.ui.TreeTable/isappdata is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: getappdata

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Get application defined data.

## CALL:

value = getappdata(obj, name)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object
name | any |
    string with the name of the application data

## OUTPUT:

value | any |
        The application defined data
    Help for modelit.ui.TreeTable/getappdata is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: setappdata

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Set application defined data.

## CALL:

setappdata(obj, name, value)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object
name | any |
    string with the name of the application data
value | any |
    value to be stored. May be anything

## OUTPUT:

       No output. The application-defined data,
       which is created if it does not already exist, is
       assigned a name and a value.

    Help for modelit.ui.TreeTable/setappdata is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: ishandle

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Returns true if this is a valid graphics object

## CALL:

value = ishandle(obj)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object

## OUTPUT:

value | any |
        boolean: true if this is a valid graphics object
        What does "valid" mean in this context??
        Matlab HG object/container that holds still exist?
    Help for modelit.ui.TreeTable/ishandle is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: java

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Returns the underlying Java object

## CALL:

jobj = java(obj)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object

## OUTPUT:

jobj | any |
        java object
    Help for modelit.ui.TreeTable/java is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: handle

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Returns the handle of the component's Matlab container

## CALL:

h = handle(obj)

## INPUT:

obj | any |
    a modelit.ui.Jacontrol object

## OUTPUT:

h | any |
        handle of the component's Matlab container
    Help for modelit.ui.TreeTable/handle is inherited from superclass MODELIT.UI.JACONTROL

# Public Method: ancestor

### Inherited from modelit.ui.Jacontrol

## DESCRIPTION:

Returns the handle of the closest ancestor of obj that matches one of the types in type,

## CALL:

p = ancestor(obj, type)

## INPUT:

obj | any |
    modelit.ui.Jacontrol
type | any |
    String or cell array of strings (types)

## OUTPUT:

p | any |
          handle of the closest ancestor of the obj that matches one of the types in type
    Help for modelit.ui.TreeTable/ancestor is inherited from superclass MODELIT.UI.JACONTROL

# Protected Static Sealed Method: getDefaultScalarElement

### Inherited from modelit.ui.AbstractJacontrol

## DESCRIPTION:

Create a default object for heterogeneous arrays. Help for modelit.ui.TreeTable.getDefaultScalarElement is inherited from superclass MODELIT.UI.ABSTRACTJACONTROL

# Public Sealed Method: ne

### Inherited from modelit.ui.AbstractJacontrol

## DESCRIPTION:

Not equal relation for handles. Help for modelit.ui.TreeTable/ne is inherited from superclass MODELIT.UI.ABSTRACTJACONTROL

# Public Sealed Method: eq

### Inherited from modelit.ui.AbstractJacontrol

## DESCRIPTION:

Equal relation for handles. Help for modelit.ui.TreeTable/eq is inherited from superclass MODELIT.UI.ABSTRACTJACONTROL

# Public Sealed Method: findobj

### Inherited from modelit.ui.AbstractJacontrol

## DESCRIPTION:

Returns the objects whose property values match those passed as param-value pairs to the findobj command. Help for modelit.ui.TreeTable/findobj is inherited from superclass MODELIT.UI.ABSTRACTJACONTROL

# Public Sealed Method: set

### Inherited from modelit.ui.AbstractJacontrol

## DESCRIPTION:

Set object properties Help for modelit.ui.TreeTable/set is inherited from superclass MODELIT.UI.ABSTRACTJACONTROL