The ATK interface implemented for UI components which contain tabular or row/column information.
#AtkTable should be implemented by components which present
elements ordered via rows and columns. It may also be used to
present tree-structured information if the nodes of the trees can
be said to contain multiple "columns". Individual elements of an
#AtkTable are typically referred to as "cells". Those cells should
implement the interface #AtkTableCell, but #Atk doesn't require
them to be direct children of the current #AtkTable. They can be
grand-children, grand-grand-children etc. #AtkTable provides the
API needed to get a individual cell based on the row and column
numbers.
Children of #AtkTable are frequently "lightweight" objects, that
is, they may not have backing widgets in the host UI toolkit. They
are therefore often transient.
Since tables are often very complex, #AtkTable includes provision
for offering simplified summary information, as well as row and
column headers and captions. Headers and captions are #AtkObjects
which may implement other interfaces (#AtkText, #AtkImage, etc.) as
appropriate. #AtkTable summaries may themselves be (simplified)
#AtkTables, etc.
Note for implementors: in the past, #AtkTable required that all the
cells should be direct children of #AtkTable, and provided some
index based methods to request the cells. The practice showed that
that forcing made #AtkTable implementation complex, and hard to
expose other kind of children, like rows or captions. Right now,
index-based methods are deprecated.
The ATK interface implemented for UI components which contain tabular or row/column information.
#AtkTable should be implemented by components which present elements ordered via rows and columns. It may also be used to present tree-structured information if the nodes of the trees can be said to contain multiple "columns". Individual elements of an #AtkTable are typically referred to as "cells". Those cells should implement the interface #AtkTableCell, but #Atk doesn't require them to be direct children of the current #AtkTable. They can be grand-children, grand-grand-children etc. #AtkTable provides the API needed to get a individual cell based on the row and column numbers.
Children of #AtkTable are frequently "lightweight" objects, that is, they may not have backing widgets in the host UI toolkit. They are therefore often transient.
Since tables are often very complex, #AtkTable includes provision for offering simplified summary information, as well as row and column headers and captions. Headers and captions are #AtkObjects which may implement other interfaces (#AtkText, #AtkImage, etc.) as appropriate. #AtkTable summaries may themselves be (simplified) #AtkTables, etc.
Note for implementors: in the past, #AtkTable required that all the cells should be direct children of #AtkTable, and provided some index based methods to request the cells. The practice showed that that forcing made #AtkTable implementation complex, and hard to expose other kind of children, like rows or captions. Right now, index-based methods are deprecated.