Class JXTable.TableAdapter

    • Constructor Summary

      Constructors 
      Constructor Description
      TableAdapter​(JXTable component)
      Constructs a TableDataAdapter for the specified target component.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int convertColumnIndexToModel​(int columnIndex)
      For target components that support multiple columns in their model, along with column reordering in the view, this method transforms the specified columnIndex from view coordinates to model coordinates.
      int convertColumnIndexToView​(int columnIndex)
      For target components that support multiple columns in their model, along with column reordering in the view, this method transforms the specified columnIndex from model coordinates to view coordinates.
      int convertRowIndexToModel​(int rowViewIndex)
      Converts a row index in view coordinates to an index in model coordinates.
      int convertRowIndexToView​(int rowModelIndex)
      Converts a row index in model coordinates to an index in view coordinates.
      java.awt.Rectangle getCellBounds()
      Returns the bounds of the cell identified by this adapter.
      protected javax.swing.table.TableColumn getColumnByModelIndex​(int modelColumn)
      Returns the first contained TableColumn with the given model index, or null if none is found.
      int getColumnCount()
      Returns the number of columns in the target's data model.
      java.lang.Object getColumnIdentifierAt​(int columnIndex)
      Returns logical identifier of the column at columnIndex in model coordinates.
      int getColumnIndex​(java.lang.Object identifier)
      Returns the column index in model coordinates for the logical identifier.
      java.lang.String getColumnName​(int columnIndex)
      Returns the column's display name (= headerValue) of the column at columnIndex in model coordinates.
      int getRowCount()
      Returns the number of rows in the target's data model.
      java.lang.String getStringAt​(int row, int column)
      Returns the String representation of the value of the cell identified by the row specified row and column in model coordinates.
      JXTable getTable()
      Typesafe accessor for the target component.
      java.lang.Object getValueAt​(int row, int column)
      Returns the value of the target component's cell identified by the specified row and column in model coordinates.
      boolean hasFocus()
      Returns true if the cell identified by this adapter currently has focus.
      boolean isCellEditable​(int row, int column)
      Determines whether this cell is editable.
      boolean isEditable()
      Returns true if the cell identified by this adapter is editable, false otherwise.
      boolean isSelected()
      Returns true if the cell identified by this adapter is currently selected.
      boolean isTestable​(int column)
      Returns true if the column should be included in testing.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TableAdapter

        public TableAdapter​(JXTable component)
        Constructs a TableDataAdapter for the specified target component.
        Parameters:
        component - the target component
    • Method Detail

      • getTable

        public JXTable getTable()
        Typesafe accessor for the target component.
        Returns:
        the target component as a JTable
      • getColumnName

        public java.lang.String getColumnName​(int columnIndex)
        Returns the column's display name (= headerValue) of the column at columnIndex in model coordinates. Used f.i. in SearchPanel to fill the field with the column name.

        Note: it's up to the implementation to decide for which columns it returns a name - most will do so for the subset with isTestable = true. This implementation delegates to getColumnIdentifierAt and returns it's toString or null.

        Overrides:
        getColumnName in class ComponentAdapter
        Parameters:
        columnIndex - in model coordinates
        Returns:
        column name or null if not found
      • getColumnByModelIndex

        protected javax.swing.table.TableColumn getColumnByModelIndex​(int modelColumn)
        Returns the first contained TableColumn with the given model index, or null if none is found.
        Parameters:
        modelColumn - the column index in model coordinates, must be valid
        Returns:
        the first contained TableColumn with the given model index, or null if none is found
        Throws:
        IllegalArgumentExcetpion - if model index invalid
      • getColumnIdentifierAt

        public java.lang.Object getColumnIdentifierAt​(int columnIndex)
        Returns logical identifier of the column at columnIndex in model coordinates. Note: it's up to the implementation to decide for which columns it returns an identifier - most will do so for the subset with isTestable = true.

        This implementation returns DEFAULT_COLUMN_IDENTIFIER. PENDING JW: This method replaces the old getColumnIdentifier(int) which returned a String which is overly restrictive. The only way to gently replace this method was to add this with a different name - which makes this name suboptimal. Probably should rename again once the old has died out ;-)

        Overrides:
        getColumnIdentifierAt in class ComponentAdapter
        Parameters:
        columnIndex - in model coordinates, must be valid.
        Returns:
        the identifier of the column at columnIndex or null if it has none.
        See Also:
        ComponentAdapter.getColumnIndex(Object)
      • getColumnIndex

        public int getColumnIndex​(java.lang.Object identifier)
        Returns the column index in model coordinates for the logical identifier.

        This implementation returns 0 if the identifier is the same as the one known identifier returned from getColumnIdentifierAt(0), or -1 otherwise. So subclasses with one column and a customizable identifier need not override. Subclasses which support multiple columns must override this as well to keep the contract as in (assuming that the lookup succeeded):

        
          Object id = getColumnIdentifierAt(index);
          assertEquals(index, getColumnIndex(index);
          // and the reverse 
          int column = getColumnIndex(identifier);
          assertEquals(identifier, getColumnIdentifierAt(column));
         
        Overrides:
        getColumnIndex in class ComponentAdapter
        Parameters:
        identifier - the column's identifier, must not be null
        Returns:
        the index of the column identified by identifier in model coordinates or -1 if no column with the given identifier is found.
        See Also:
        ComponentAdapter.getColumnIdentifierAt(int)
      • getColumnCount

        public int getColumnCount()
        Returns the number of columns in the target's data model.
        Overrides:
        getColumnCount in class ComponentAdapter
        Returns:
        the number of columns in the target's data model.
      • getRowCount

        public int getRowCount()
        Returns the number of rows in the target's data model.
        Overrides:
        getRowCount in class ComponentAdapter
        Returns:
        the number of rows in the target's data model.
      • getValueAt

        public java.lang.Object getValueAt​(int row,
                                           int column)
        Returns the value of the target component's cell identified by the specified row and column in model coordinates.
        Specified by:
        getValueAt in class ComponentAdapter
        Parameters:
        row - in model coordinates
        column - in model coordinates
        Returns:
        the value of the target component's cell identified by the specified row and column
      • isCellEditable

        public boolean isCellEditable​(int row,
                                      int column)
        Determines whether this cell is editable.
        Specified by:
        isCellEditable in class ComponentAdapter
        Parameters:
        row - the row to query in model coordinates
        column - the column to query in model coordinates
        Returns:
        true if the cell is editable, false otherwise
      • isTestable

        public boolean isTestable​(int column)
        Returns true if the column should be included in testing.

        Here: returns true if visible (that is modelToView gives a valid view column coordinate).

        Overrides:
        isTestable in class ComponentAdapter
        Parameters:
        column - the column index in model coordinates
        Returns:
        true if the column should be included in testing
      • getStringAt

        public java.lang.String getStringAt​(int row,
                                            int column)
        Returns the String representation of the value of the cell identified by the row specified row and column in model coordinates.

        This implementation messages the StringValue.TO_STRING with the valueAt, subclasses should re-implement and use the api appropriate for the target component type.

        This is implemented to query the table's StringValueRegistry for an appropriate StringValue and use that for getting the string representation.

        Overrides:
        getStringAt in class ComponentAdapter
        Parameters:
        row - in model coordinates
        column - in model coordinates
        Returns:
        the value of the target component's cell identified by the specified row and column
      • getCellBounds

        public java.awt.Rectangle getCellBounds()
        Returns the bounds of the cell identified by this adapter.

        Overrides:
        getCellBounds in class ComponentAdapter
        Returns:
        the bounds of the cell identified by this adapter
      • isEditable

        public boolean isEditable()
        Returns true if the cell identified by this adapter is editable, false otherwise.
        Specified by:
        isEditable in class ComponentAdapter
        Returns:
        true if the cell is editable, false otherwise
      • isSelected

        public boolean isSelected()
        Returns true if the cell identified by this adapter is currently selected. Otherwise, it returns false.
        Specified by:
        isSelected in class ComponentAdapter
        Returns:
        true if the cell identified by this adapter is currently selected; Otherwise, return false
      • hasFocus

        public boolean hasFocus()
        Returns true if the cell identified by this adapter currently has focus. Otherwise, it returns false.
        Specified by:
        hasFocus in class ComponentAdapter
        Returns:
        true if the cell identified by this adapter currently has focus; Otherwise, return false
      • convertColumnIndexToView

        public int convertColumnIndexToView​(int columnIndex)
        For target components that support multiple columns in their model, along with column reordering in the view, this method transforms the specified columnIndex from model coordinates to view coordinates. For all other types of target components, this method returns the columnIndex unchanged.
        Overrides:
        convertColumnIndexToView in class ComponentAdapter
        Parameters:
        columnIndex - index of a column in model coordinates
        Returns:
        index of the specified column in view coordinates
      • convertColumnIndexToModel

        public int convertColumnIndexToModel​(int columnIndex)
        For target components that support multiple columns in their model, along with column reordering in the view, this method transforms the specified columnIndex from view coordinates to model coordinates. For all other types of target components, this method returns the columnIndex unchanged.
        Overrides:
        convertColumnIndexToModel in class ComponentAdapter
        Parameters:
        columnIndex - index of a column in view coordinates
        Returns:
        index of the specified column in model coordinates
      • convertRowIndexToView

        public int convertRowIndexToView​(int rowModelIndex)
        Converts a row index in model coordinates to an index in view coordinates.
        Overrides:
        convertRowIndexToView in class ComponentAdapter
        Parameters:
        rowModelIndex - index of a row in model coordinates
        Returns:
        index of the specified row in view coordinates
      • convertRowIndexToModel

        public int convertRowIndexToModel​(int rowViewIndex)
        Converts a row index in view coordinates to an index in model coordinates.
        Overrides:
        convertRowIndexToModel in class ComponentAdapter
        Parameters:
        rowViewIndex - index of a row in view coordinates
        Returns:
        index of the specified row in model coordinates