The programmer chooses how the objects in the table will be viewed by defining a collection of fields, one for each column. These fields are each instances of the class WkTableColumn, and describe the header, font, justification, field width, fore and back color, validation functions and accessor methods for a particular column. The header is the string that will be displayed at the top of the listbox for that field. The font is the font used to display the column. The justification can be one of left, right, and center. The field width is the number of pixels wide that this field should be; if it is autosizable, the field will be as wide as the widest value displayed in this column. The fore and back colors affect the presentation of data in the cells. The validation functions can be any of those supported by WbEnhancedText. The accessor methods are the messages which will be sent to the object to retrieve a string to display for this field and to update the object when the user changes a cell’s value.
The objects used for cell values and headings are typically Strings, Numbers, and CgIcons, but this is not a requirement. It is possible for an application to use any object as the cell value or heading. Any item which understands #ewHeightUsing:, #ewWidthUsing: and #ewDrawUsing: (called a “renderable object”) can be used for a cell value. Since String, Number, and CgIcon already implement the standard renderable object protocol, they can easily be used. Also, since Object provides default renderable behavior, any object can be rendered, although the default rendering is to render the object’s printString.
addedAt: position count:
countItem(s) were added to the collection of root items at the specified position. The position is specified as an index in the collection of root items only. Refresh the list.
applicationDrawnBackground: aBoolean
Specifies whether the application wants the Draw Background Callback to fire when an item’s background needs to be drawn. If this value is false, then the widget will draw the normal default background for each selected and non-selected item.
atRow: row column:
columnAnswer the string that is at
column@
row. If there is no value, an empty string will be returned. If there are labels (or name) associated with a given row or column, the argument for that coordinate may be a string corresponding to the label (or column name). Example include: 1@'Name', 'Name'@1, 'Name'@'Year', 1@1
atRow: row column: column put:
newValueSet the value that is at
column@
row to
newValue. If there are labels (or name) associated with a given row or column, the argument for that coordinate may be a string corresponding to the label (or column name). Example include: 1@'Name', 'Name'@1, 'Name'@'Year', 1@1
autosize: aBooleanSpecifies whether the autosizable columns should be autosized whenever the widget resizes.
buttonPolicy: anIntegerSpecifies how the hierarchy buttons should be displayed (e.g., as buttons, as triangles or not at all.
cancelEdit
Call the end edit callbacks and proceed with a cancel of the edit if approved. Hide the edit widget only if the end was approved. The last committed value for the edited item will be provided as the newValue during the endEditCallback. Edit changes are committed when the updateEdit or endEdit API is invoked. This method will answer whether or not the cancelEdit was approved.
cellAt:
aPointAnswer the value that is at aPoint.
cellAt: aPoint put:
newValueSet the value that is at aPoint to newValue.
childrenSelector: aSymbolSpecifies a unary selector sent to an item to return its children.
colorSelector: aSymbolSpecifies a unary selector sent to an item to return its label color.
cursorPolicy: anIntegerSpecifies how cursor keys will be treated.
cursorToCell:
cellPointMove the focus for the receiver to the given cell. Cursored emphasis will be placed on the cell. This API can be used after the widget has been created and initially exposed. The API is only valid when the selectionPolicy is XmCELLSINGLESELECT or XmCELLBLOCKSELECT.
deferRefreshWhile:
aBlockMinimize the repainting done while aBlock is being evaluated. This message may be safely nested. This message does not guarantee minimal repainting. Rather, it serves as a hint to the widget so that, where possible and appropriate, repainting can be deferred until the block has finished being evaluated.
deletedAt: position count:
countItem(s) were deleted from the collection of root items at the specified position. The position is specified as an index in the collection of root items only. Refresh the list.
deselectAllItems
Deselect and remove all elements from the selectedItems list. A selection callback is not triggered.
deselectCell: cellPointDeselect a cell by item and column position. A selection callback is not triggered. This function is only valid if the selectionPolicy value is XmCELLSINGLESELECT.
deselectColumn: columnDeselect the column given. This message unhighlights the heading of the specified column.
deselectItem: itemDeselect and remove the specified item from the selected list. A selection callback is not triggered.
deselectPos: positionDeselect and remove an item from the selected list by position. A selection callback is not triggered.
disabledSelector: aSymbolSpecifies selector sent to the row object to determine whether the row should be disabled.
editable: aBoolean
Specifies whether the cells in the table are editable. For a cell to be editable, the table widget must be editable, the column must be editable, and the application must hook the Begin Edit Callback and set the callData doit to true
editCellAt: cellPointEdit a cell in the list by item and column position. This message highlights a table cell at the specified point and begins editing on it by calling the beginEdit callback. If editing is already in progress, the endEdit API will be invoked and if the end edit is successful, editing for the new cell will begin. This API will provide cell editing behavior independent of the values of the WkTableWidget>>editable, WkTableColumn>>editable, and WkTableWidget>>selectionPolicy resources. It is used to trigger editing by some means other than cell selection.
editSelectedCell
Begin editing the selected cell. If editable is true, this message is not needed, since selecting a cell automatically edits it. Otherwise, this calls the beginEdit callback. If editing is already in progress, the endEdit API will be invoked and if the end edit is successful, editing for the new cell will begin.
endEdit
Call the end edit callbacks and proceed with an end to the edit if approved. Hide the edit widget only if the end was approved. Answer whether the end was approved.
expandCollapsePos: position notify: notifyExpand or collapse an item in the list by position to show or hide its children. If it is expanded, collapse it. If it is collapsed, expand it.
getItemPos:
positionAnswer the item in the list by position. This message answers a list item at the specified position or nil if position is greater than the size of the list. This message only accesses the list if the item is not visible.
getMatchPos: itemThis message returns an Array of Integer positions where a specified item is found in the items list. If the item does not occur in the list the resulting Array is empty.
getSelectedPos
Return an Array containing the positions of every selected item in the list.
hasChildrenSelector: aSymbolSet the unary selector sent to an item to return whether it has children.
headingFont: aString
Specifies the font list associated with the headings.
headingHeight: anIntegerSpecifies the height, in pixels, of the table's heading row. If unspecified (i.e., a nil value), the heading height will be automatically calculated to be the height of the tallest heading cell value. This height does not include sizings for etching, the heading separator, or other margins.
headingSeparatorThickness: anInteger
Specifies the thickness of the horizontal line separating the column headings from the rest of the table.
hierarchyPolicy: resourceValueSpecifies how to display and manage the hierarchy. For more information about hierarchy policies, refer to EwHierarchy and its subclasses.
iconExpandSelector: aSymbolSpecifies a unary selector sent to an item to return its expanded icon.
iconSelector: aSymbolSpecifies a unary selector sent to an item to return its icon.
indentationWidth: anIntegerSpecifies how many pixels each level of the hierarchy should be indented.
indexAtPoint: aPointAnswer the index of the item in the list which lies beneath the point given. If no item lies beneath the point or if the widget has not been drawn yet, then answer nil.
indexOf: itemAnswer the index of the item given in the list or 0 if the item is not present in the list.
initialStateSelector: aSymbolSpecifies a unary selector sent to an item to return its initial state (expanded or not).
isExpandedPos: positionAnswer whether an item in the list by position is expanded to show its children.
itemAtPoint: aPointAnswer the item in the list which lies beneath the point given.If no item lies beneath the point, then answer nil.
itemCount
Specifies the total number of items. This number might not match XmNitems, since this number is the size of the expanded hierarchy. It is automatically updated by the list whenever an element is added to or deleted from the list."
itemExists: itemAnswer whether a specified item is in the list.
itemHeight: anInteger
Specifies the height in pixels of items in the list. This includes the margin height on the top and bottom of the item as well as two pixels for emphasis.
itemIsVisible: itemCheck if a specified item is in the portion of the list that is currently visible. Answer true if it is even partially visible, false if it is not visible.
items: anOrderedCollection
An array of objects that are to be displayed as the list items.
itemsDo: aBlockEvaluate aBlock for each item in the receiver's list.
lines: aBooleanSpecifies whether the widget should display hierarchy lines.
lockedColumns: anInteger
Specifies the number of columns to be locked down on the left side of the table. A column can be locked only if its preceding column is also locked. When scrolling, the locked columns remain fixed on the left side and all other columns scroll under the locked columns. This value must be no greater than the number of columns.
parentOfItem: anItemAnswer the parent of the item given in the hierarchy or false if it is not in the expanded hierarchy. Answer nil if it is a root item.
refreshCell: cellPointRefresh a cell by item and column position.
refreshHierarchyPos: positionRefresh an item in the list by position. Also reobtain the item's children.
refreshNodeAt: positionRefresh the node at the given position. Answer whether or not a full refresh occurred.
refreshPos: positionRefresh an item in the list by position.
reorderable: aBooleanSpecifies whether all of the columns should be reorderable (can be draged left and right).
resizable: aBooleanSpecifies whether all of the columns should be resizable by the user. If so, the user can drag the right side of a column heading to change the column width.
rowLabelSelector: aSymbolSpecifies a unary selector sent to an item to return its row label.
rowSeparators: aBoolean
Specifies whether the rows are separated by a horizontal line.
scrollHorizontal: aBoolean
This resource specifies whether a horizontal scroll bar should be used for the list.
selectableColumns: aBoolean
Defines whether the user may select columns by clicking on their headings.
selectCell: cellPoint notify: notifySelect a cell in the list by item and column position. This message selects a cell at the specified point and makes it be the selected cell. If editing is in progress, the endEdit API will be invoked and selection will proceed only if the edit is ended successfully. If the specified cell is editable, the begin edit callback will be fired (i.e., the table is editable and the cell's column is editable).
selectCells: cellPoints notify: notifySelect a group of cells in the list by column and item position.
selectColumn: columnSelect the column given. This message selects the heading of the specified column.
selectedCell
Specifies a Point whose x component is the index of the column of the selected cell and whose y component is the index of the item (row) of the selected cell. If nil, then no cell is selected. Note: This resource is only relevant if the selection policy is XmCELLSINGLESELECT."
selectedCells
A Collection of Points each of whose x component is the index of the column of a selected cell and whose y component is the index of the item (row) of a selected cell. If empty,then no cell is selected. Note: This resource is only relevant if the selection policy is XmCELLSINGLESELECT or XmCELLEXTENDEDSELECT."
selectedItems: anOrderedCollection
An OrderedCollection of Objects that represents the list items that are currently selected, either by the user or the application.
selectItem: item notify: notifySelect an item in the list. This message selects and adds the specified item to the current selected list. The cursor moves to the newly selected item.
selectPos: position notify: notifySelect an item in the list by position. This message selects a list item at the specified position and adds it to the list of selected items.
separatorsToExtremes: aBoolean
Defines whether row and column separators are to be extended to the extreme right and bottom edges of the table.
setBottomItem: itemMake the given item the last visible item in the list. The item can be any valid item in the list.
setBottomPos: positionMake an item the last visible item in the list by position. This message makes the item at the specified position the last visible item in the list.
setFirstColumnPos: positionMake a column the first visible column by position. This message makes the column at the given position the first visible column. If this column is locked, this message has no effect. If there are locked columns and this column is not locked, then this column becomes the first column visible beyond the locked columns.
setItem: itemMake the given item the first visible item in the list. The item can be any valid item in the list.
setLastColumnPos: positionMake a column the last visible column by position. This message makes the column at the given position the last visible column. If this column is locked, this message has no effect. If there are locked columns and this column is not locked, then this column becomes the last column visible.
setPos: positionMake an item the first visible item in the list by position. This message makes the item at the given position the first visible position in the list.
showGrid: aBooleanSet whether horizontal and vertical grid lines should be displayed.
showLines: aBooleanSet whether vertical separator lines should be displayed.
showRowHeading: aBooleanSpecifies whether the row heading should be displayed.
sortable: aBooleanSpecifies whether all of the columns should be sortable.
sortOn: column ascending: aBooleanSort the items based on <column> either ascending or descending.
topItemPosition: anInteger
Specifies the Integer position of the item that is the first visible item in the list.
visibleItemCount
Specifies the number of items that can fit in the visible space of the list. Until the list is realized, this answers 0.
visualStyle: anInteger
Defines the how the cells are displayed.
Browse Selection Callback
These callbacks are triggered when an item is selected in the browse selection mode. It is only valid when Selection Policy is Browse Select.
Children Callback
These callbacks are triggered when an item’s list of children is needed.
Extended Selection Callback
These callbacks are triggered when items are selected using the extended selection mode. It is only valid when Selection Policy is Extended Select.
Modify Verify Callback
These callbacks are triggered when the selection is about to be changed. The application may ‘undo’ the selection change by setting the doit field of the callData to false.
Multiple Selection Callback
These callbacks are triggered when an item is selected in multiple selection mode. It is only valid when Selection Policy is Multiple Select.
Single Selection Callback
These callbacks are triggered when an item is selected in single selection mode. It is only valid when Selection Policy is Single Select.
Visual Info Callback
These callbacks are triggered when an item’s icon, label and isInUse are needed. The application MUST hook this callback and set the callData icon to the CgIcon (or other renderable object) to be displayed as the icon for the item in callData item. It must also set the callData label to the String (or other renderable object) to be displayed as the label for the item.
Application Drawn Background
Specifies whether the application wants the Draw Background Callback to fire when an item’s background needs to be drawn. If this value is false, then the widget will draw the normal default background for each selected and non-selected item.
AutosizeSpecifies whether the autosizable columns should be autosized whenever the widget resizes.
Button PolicySpecifies how the hierarchy buttons should be displayed (e.g., as buttons, as triangles or not at all.
Border Width
Specifies the width of the border that surrounds the widget’s window on all four sides. The width is specified in pixels. A width of zero means that no border will show.
Color SelectorSpecifies a unary selector sent to an item to return its label color.
Disabled SelectorSpecifies selector sent to the row object to determine whether the row should be disabled.
Editable
Specifies whether the cells in the table are editable. For a cell to be editable, the table widget must be editable, the column must be editable, and the application must hook the Begin Edit Callback and set the callData doit to true
Enabled
Determines whether a widget will react to input events. Disabled (insensitive) widgets do not react to input events.
Icon SelectorSpecifies a unary selector sent to an item to return its icon.
Indentation WidthSpecifies how many pixels each level of the hierarchy should be indented.
Initial State SelectorSpecifies a unary selector sent to an item to return its initial state (expanded or not).
Item Height
Specifies the height in pixels of items in the list. This includes the margin height on the top and bottom of the item as well as two pixels for emphasis.
LinesSpecifies whether the widget should display hierarchy lines.
Locked Columns
Specifies the number of columns to be locked down on the left side of the table. A column can be locked only if its preceding column is also locked. When scrolling, the locked columns remain fixed on the left side and all other columns scroll under the locked columns. This value must be no greater than the number of columns.
Row Separators
Specifies whether the rows are separated by a horizontal line.
Scroll Horizontal
This resource specifies whether a horizontal scroll bar should be used for the list.
Selectable Columns
Defines whether the user may select columns by clicking on their headings.
Separators To Extremes
Defines whether row and column separators are to be extended to the extreme right and bottom edges of the table.
SortableSpecifies whether all of the columns should be sortable.
Top Item Position
Specifies the Integer position of the item that is the first visible item in the list.
Visible
Maps the widget (makes visible) as soon as it is both realized and managed, if set to True. If set to False, the client is responsible for mapping and unmapping the widget.
AutosizeSpecifies whether the column width should be autosized.
Background Color
Specifies selector sent to the row object to retrieve the background color for the cell. The color may also be hardcoded.
Callbacks
Launches the Callback Editor on the edited column.
Character ValidationSpecifies the character validation function to use with values entered into cells within the column.
Disabled SelectorSpecifies selector sent to the row object to determine whether a cell should be disabled.
Editable
Specifies whether the cells in this column are editable.
Etched
Specifies whether this column is to be etched.
Field ValidationSpecifies the field validation function to use with values entered into cells within the column.
Foreground Color
Specifies selector sent to the row object to retrieve the foreground color for the cell. The color may also be hardcoded.
Get SelectorSpecifies selector sent to the row object to retrieve the data for the cell.
Heading
Specifies the heading object to be displayed at the top of the column.
List SelectorSpecifies selector sent to the row object to retrieve a list of values to populate the drop down list in the cell.
Minimum WidthSpecifies the minimum width of the column in pixels. This minimum applys to autosizing and user resizing operations.
NameSpecifies the name of the column. This name may be used to programatically access the column. Note that this is distint from the heading of the column.
ReorderableSpecifies whether the column is reorderable (can be draged left and right).
Resizable
Specifies whether the column is resizable by the user. If so, the user can drag the right side of the column heading to change the column width
Set Font
Set the font for the edited column.
Set SelectorSpecifies selector sent to the row object to store data entered into the cell.
Show In Use
Specifies whether the column should show the inUse emphasis for each item.
SortableSpecifies whether the column is sortable.
Vertical Alignment
Specifies how the cells and heading in this column should be aligned vertically.
Width
Specifies the width of the column in pixels. This does not includes the width of any emphasis or vertical separator.
Copyright 2005, 2015 Instantiations, Inc. All rights reserved.