Package docking.widgets.table

# Class DiscoverableTableUtils

java.lang.Object
docking.widgets.table.DiscoverableTableUtils

public class DiscoverableTableUtils extends Object

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DiscoverableTableUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <ROW_TYPE, COLUMN_TYPE, DATA_SOURCE>
  DynamicTableColumn<ROW_TYPE,COLUMN_TYPE,DATA_SOURCE>`
  `adaptColumForModel(GDynamicColumnTableModel<ROW_TYPE,COLUMN_TYPE> model, AbstractDynamicTableColumn<?,?,?> column)`
  Returns a column object that is usable by the given model.
  `static <T, M> Collection<ColumnConstraint<T>>`
  `getColumnConstraints(ColumnTypeMapper<T,M> mapper)`
  Returns a list of all the `ColumnConstraint` that are capable of filtering the destination type of the given mapper.
  `static <T> Collection<ColumnConstraint<T>>`
  `getColumnConstraints(Class<T> columnType)`
  Returns a list of all the `ColumnConstraint` that are capable of filtering the given column type.
  `static <ROW_TYPE> Collection<DynamicTableColumn<ROW_TYPE,?,?>>`
  `getDynamicTableColumns(Class<ROW_TYPE> rowTypeClass)`
  Returns all "discovered" `AbstractDynamicTableColumn` classes that are compatible with the given class, which represents the object for a table's row.

  ### Methods inherited from class java.lang.Object

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

- ## Constructor Details

  - ### DiscoverableTableUtils

    public DiscoverableTableUtils()

- ## Method Details

  - ### adaptColumForModel

    public static <ROW_TYPE, COLUMN_TYPE, DATA_SOURCE> DynamicTableColumn<ROW_TYPE,COLUMN_TYPE,DATA_SOURCE> adaptColumForModel(GDynamicColumnTableModel<ROW_TYPE,COLUMN_TYPE> model, AbstractDynamicTableColumn<?,?,?> column)
    Returns a column object that is usable by the given model.

    Dynamic columns and models work on row types. This method allows clients to use columns with row types that differ from the model's row type, as long as a suitable mapper can be found. If no mapper can be found, then an IllegalArgumentException is thrown. Also, if the given column is of the correct type, then that column is returned.

    Type Parameters:
      `ROW_TYPE` - the model's row type
      `COLUMN_TYPE` - the model's row type
    Parameters:
      `model` - the table model for which a column is needed
      `column` - the column that you want to use with the given model
    Returns:
      a column object that is usable by the given model.
    Throws:
      `IllegalArgumentException` - if this method cannot figure out how to map the given column's row type to the given model's row type.

  - ### getDynamicTableColumns

    public static <ROW_TYPE> Collection<DynamicTableColumn<ROW_TYPE,?,?>> getDynamicTableColumns(Class<ROW_TYPE> rowTypeClass)
    Returns all "discovered" `AbstractDynamicTableColumn` classes that are compatible with the given class, which represents the object for a table's row. For example, many tables use `Address` as the row type. In this case, passing `Address.class` as the parameter to this method will return all `AbstractDynamicTableColumn`s that can provide column data by working with `Address` instances.

    Usage Notes: This class will not only discover `AbstractDynamicTableColumn`s that directly support the given class type, but will also use discovered `TableRowMapper` objects to create adapters that allow the use of table row data that does not exactly match the supported type of discovered `AbstractDynamicTableColumn` classes. For example, suppose that a table's row type is `Address`. This methods will return at least all `AbstractDynamicTableColumn`s that support `Address` data. In order to support extra columns, Ghidra has created a `TableRowMapper` that can convert a `ProgramLocation` into an `Address`. This method will find and use this mapper to return a `MappedTableColumn` instance (which is an `AbstractDynamicTableColumn`). By doing this, any table that has `Address` objects as its row type can now use `AbstractDynamicTableColumn`s that support `ProgramLocations` in addition to `Address` objects. These mappers provide a way for tables that have non-standard Ghidra data as their row type to take advantage of existing dynamic columns for standard Ghidra data (like ProgramLocations and Addresses).

    Parameters:
      `rowTypeClass` - table's row type
    Returns:
      the discovered column

  - ### getColumnConstraints

    public static <T, M> Collection<ColumnConstraint<T>> getColumnConstraints(ColumnTypeMapper<T,M> mapper)
    Returns a list of all the `ColumnConstraint` that are capable of filtering the destination type of the given mapper. The mapper will be used to create a mapped constraint that will be called with an instance of the type `T`.
    Parameters:
      `mapper` - the mapper that will be used to convert
    Returns:
      a list of all the `ColumnConstraint` that are capable of filtering the given column type

  - ### getColumnConstraints

    public static <T> Collection<ColumnConstraint<T>> getColumnConstraints(Class<T> columnType)
    Returns a list of all the `ColumnConstraint` that are capable of filtering the given column type.
    Parameters:
      `columnType` - the class of the data that is return by the table model for specific column.
    Returns:
      a list of all the `ColumnConstraint` that are capable of filtering the given column type.