com.rational.test.ft.domain.java.jfc

Class JTableProxy

  • All Implemented Interfaces:
    com.ibm.rational.test.ft.clearscript.IClearscript, com.rational.test.ft.domain.IChannelObject, com.rational.test.ft.domain.IDataDriven, com.rational.test.ft.domain.IProxyBase, IPropertyFilter, ISetParent, com.rational.test.ft.object.interfaces.IGraphical, com.rational.test.ft.object.interfaces.IGraphicalSubitem, com.rational.test.ft.object.interfaces.ISubitem
    Direct Known Subclasses:
    SiebelTableProxy


    public class JTableProxy
    extends JScrollPaneProxy
    implements com.ibm.rational.test.ft.clearscript.IClearscript
    Proxy class for javax.swing.JTable.
    • TestObject interface:
      GuiSubitemTestObject
    • Supported Test Data Types:
      TypeDesciptionData Class
      contents Table Contents ITestDataTable
      selected Selected Table Cells ITestDataTable


    • Default Recognition Properties:
      PropertyUsage
      .classThe Java full class name of the test object.
      .classIndexThe zero-based index of the class relative to the immediate parent in the object map.
      .priorLabelThe text of a preceding label. Suppressed if there is no preceding label.
      accessibleContext.accessibleNameA programmatically defined name for the component.
      nameThe name property, suppressed if default formatted (default form = className+count).
      toolTipTextThe text from the associated tool tip, omitted if there is no associated tool tip.

    • Supported Subitems:
      SubitemUsage
      Cell Defines the cell to act upon via Row and Column specifications.

    • Constructor Detail

      • JTableProxy

        public JTableProxy(java.lang.Object theObjectInTheSUT)
        This sole constructor for all proxy objects sets the SUT object as a member variable for the proxy. All interactions with the supplied object are performed through this class.
    • Method Detail

      • getRole

        public java.lang.String getRole()
        Returns TestObjectRole.ROLE_TABLE.
        Overrides:
        getRole in class JScrollPaneProxy
        Returns:
        A brief type name that describes the role this object plays in the UI.
        Since:
        RFT1.0
      • getClearscriptSimpleName

        public java.lang.String getClearscriptSimpleName()
        Returns the clearscriptName for required for Manual Test Automation. Since table won't be having meaningful name, we name the label with column names, if presen. else with cell values of first row.
        Specified by:
        getClearscriptSimpleName in interface com.ibm.rational.test.ft.clearscript.IClearscript
        Returns:
        Table column header values.
      • getSubitem

        public java.lang.Object getSubitem(com.rational.test.ft.script.Subitem subitem)
        Returns an object that represents the specified subitem in the associated test object. SubitemNotFoundException will be thrown if the specified subitem is invalid relative to the associated test object. null may be returned if the subitem does not have an object association that can be returned.
        Specified by:
        getSubitem in interface com.rational.test.ft.object.interfaces.IGraphicalSubitem
        Overrides:
        getSubitem in class JScrollPaneProxy
        Parameters:
        subitem - The subitem to fetch an object for.
        Returns:
        An object representation of the subitem.
      • columnAtPoint

        protected int columnAtPoint(java.awt.Point pt)
        This method returns the column index for the column at the specified Point. The supplied point is the Header relative location and NOT the screen relative location. If the appropriate column can not be determined then a negative one (-1) should be returned to indicate that the column could not be determined.
        Parameters:
        pt - The Header component relative coordinates that should be used to determine the column index.
        Returns:
        The column index at the specified point or -1 if the column can not be determined.
      • rowAtPoint

        protected int rowAtPoint(java.awt.Point pt)
        This method returns the row index for the row at the specified Point. The supplied point is the Table relative location and NOT the screen relative location. If the appropriate row can not be determined then a negative one (-1) should be returned to indicate that the row could not be determined.
        Parameters:
        pt - The Table component relative coordinates that should be used to determine the row index.
        Returns:
        The row index at the specified point or -1 if the row can not be determined.
      • getColumnCount

        protected int getColumnCount()
        This method returns the number of columns in the table header component under evaluation.
        Returns:
        The column count, zero if the count can not be determined.
      • getRowCount

        protected int getRowCount()
        This method returns the number of rows in the table component under evaluation.
        Returns:
        The row count, zero if the count can not be determined.
      • getColumnName

        protected java.lang.String getColumnName(int nColumn)
        This method returns the name of the column at the specified column index. This is typically the title of the column, but may be an icon description or other value that uniquely identifies the column. If the column does not have name then null or "" should be returned. Note, that without a name to identify a column the column index will be used in it's place.
        Parameters:
        nColumn - The column index for which a name should be created.
        Returns:
        The title (or other name) for the column at nColumn index into the table header.
      • getColumnHeader

        protected java.lang.String getColumnHeader(int nColumn)
        This method returns the name of the column at the specified column index. This is typically the title of the column, but may be an icon description or other value that uniquely identifies the column. If the column does not have name then null or "" should be returned. Note, that without a name to identify a column the column index will be used in it's place.
        Parameters:
        nColumn - The column index for which a name should be created.
        Returns:
        The title (or other name) for the column at nColumn index into the table header.
      • getCellRectangle

        protected java.awt.Rectangle getCellRectangle(int nColumn,
                                                      int nRow)
        This method returns the table relative rectangle for the specified cell. This is used to get the cell relative coordinates for drag operations against a table component.
        Parameters:
        nColumn - The column index to get the table rectangle for.
        nRow - The row index to get the table rectangle for.
        Returns:
        The table relative rectangle for nColumn's header. Null should be returned if the rectangle can not be computed.
      • isCellEditable

        protected boolean isCellEditable(int nColumn,
                                         int nRow)
        This method returns TRUE if the specified cell is read/write and FALSE if the cell is read/only.
        Parameters:
        nColumn - The column index to get the cell state for.
        nRow - The row index to get the cell state for.
        Returns:
        true only if the specified cell is read/write.
      • isColumnSelected

        protected boolean isColumnSelected(int columnIndex)
        Returns true if the column at the specified index is selected.
        Parameters:
        columnIndex - the index of the column in the column model
        Returns:
        true if the column at the specified index is selected, where 0 is the first column.
      • isCellSelected

        protected boolean isCellSelected(int rowIndex,
                                         int columnIndex)
        Returns true if the column at the specified index is selected.
        Parameters:
        columnIndex - the index of the column in the column model
        Returns:
        true if the column at the specified index is selected, where 0 is the first column.
      • isRowSelected

        protected boolean isRowSelected(int rowIndex)
        Returns true if the row at the specified index is selected.
        Parameters:
        rowIndex - the index of the row
        Returns:
        true if the row at the specified index is selected, where 0 is the first row.
      • getColumnSelectionAllowed

        protected boolean getColumnSelectionAllowed()
        Returns true<\b> if columns can be selected.
        Returns:
        true<\b> if columns can be selected, otherwise false<\b>
      • getRowSelectionAllowed

        protected boolean getRowSelectionAllowed()
        Returns true<\b> if columns can be selected.
        Returns:
        true<\b> if columns can be selected, otherwise false<\b>
      • getSelectedColumns

        protected int[] getSelectedColumns()
        Returns the indices of all selected columns.
        Returns:
        an array of integers containing the indices of all selected columns, or an empty array if no column is selected
      • getSelectedRows

        protected int[] getSelectedRows()
        Returns the indices of all selected rows.
        Returns:
        an array of integers containing the indices of all selected rows, or an empty array if no row is selected
      • getFirstSelectedRow

        protected int getFirstSelectedRow()
      • clearSelection

        protected void clearSelection()
        Deselects all selected columns and rows.
      • setColumnSelectionInterval

        protected void setColumnSelectionInterval(int index0,
                                                  int index1)
        Selects the columns from index0 to index1, inclusive.
        Parameters:
        index0 - one end of the interval index1 the other end of the interval
      • addColumnSelectionInterval

        protected void addColumnSelectionInterval(int index0,
                                                  int index1)
        Adds the columns from index0 to index1, inclusive, to the current selection.
        Parameters:
        index0 - one end of the interval index1 the other end of the interval
      • setRowSelectionInterval

        protected void setRowSelectionInterval(int index0,
                                               int index1)
        Selects the rows from index0 to index1, inclusive.
        Parameters:
        index0 - one end of the interval index1 the other end of the interval
      • addRowSelectionInterval

        protected void addRowSelectionInterval(int index0,
                                               int index1)
        Adds the rows from index0 to index1, inclusive, to the current selection.
        Parameters:
        index0 - one end of the interval index1 the other end of the interval
      • changeSelection

        protected void changeSelection(int rowIndex,
                                       int columnIndex,
                                       boolean toggle,
                                       boolean extend)
      • getRenderedStringAt

        protected java.lang.String getRenderedStringAt(int nRow,
                                                       int nColumn)
      • getRenderedStringAt

        protected java.lang.String getRenderedStringAt(int nRow,
                                                       int nColumn,
                                                       boolean checkLength)
        This method returns the value in the specified table cell. nColumn+nRow determines which cell to query the value from. If the value in the cell is not a String type value then a String image of the cell contents should be constructed. For instance if the cell contents are int/Integer then the Integer.toString method could be used.
        Parameters:
        nColumn - The column index to get the table cell image for.
        nRow - The row index to get the table cell image for.
        checkLength - The flag to check the lenght
        Returns:
        Image of the contents of the cell at nColumn plus nRow in the Table being evaluated.
      • getValueAt

        protected java.lang.Object getValueAt(int nRow,
                                              int nColumn)
        This method returns the value in the specified table cell. nColumn+nRow determines which cell to query the value from. If the value in the cell is not a String type value then a String image of the cell contents should be constructed. For instance if the cell contents are int/Integer then the Integer.toString method could be used.
        Parameters:
        nColumn - The column index to get the table cell image for.
        nRow - The row index to get the table cell image for.
        Returns:
        Image of the contents of the cell at nColumn plus nRow in the Table being evaluated.
      • getModel

        protected javax.swing.table.TableModel getModel()
      • getObjectStringAt

        protected java.lang.String getObjectStringAt(int nRow,
                                                     int nColumn)
      • getCell

        protected com.rational.test.ft.script.Cell getCell(java.awt.Point pt)
      • getCell

        protected com.rational.test.ft.script.Cell getCell(int columnIndex,
                                                           int rowIndex)
      • getColumn

        protected com.rational.test.ft.script.Column getColumn(java.awt.Point pt)
      • getColumn

        protected com.rational.test.ft.script.Column getColumn(int columnIndex)
      • getRow

        protected com.rational.test.ft.script.Row getRow(java.awt.Point pt)
      • getRow

        protected com.rational.test.ft.script.Row getRow(int rowIndex)
      • getKeyColumns

        public int[] getKeyColumns(int nRow)
        This method returns a list of up to three "key" columns that may be used to determine a row in the table in a unique fashion. Typically we would choose the first three read/only columns in the table and use them if they proved to be unique for this instance of a table. The algorithm chosen may vary, but checking for the editable state of a column before using it as a key field is typically a good choice. Key columns are paired with the value in a row to be uniquely identified. For instance if there is a column titled "Employee ID", pairing this column title with the value in a particular row "8042" could uniquely identify the row as row index 12. Using more than one key increases the chances that the key+value across all the key columns will uniquely identify only one row. If no key columns can be definitively determined then a zero length list should be returned. If more then three key columns are returned then the keys past the third will be ignored.
        Returns:
        A list of up to three column indices to be used to uniquely identify a row in the table. null or a zero length list should be returned if no good key columns can be determined.
      • testKeysForUniqueness

        protected boolean testKeysForUniqueness(int row,
                                                int roCol,
                                                int[] roCols,
                                                java.lang.String[] roValues)
      • setState

        public void setState(com.rational.test.ft.script.Action action)
        This method performs a specific action.
        Specified by:
        setState in interface com.rational.test.ft.object.interfaces.ISubitem
        Overrides:
        setState in class JScrollPaneProxy
        Parameters:
        action - The action that should be performed.
      • setState

        public void setState(com.rational.test.ft.script.Action action,
                             com.rational.test.ft.script.Subitem item)
        This method performs a specific action against the subitem.
        Specified by:
        setState in interface com.rational.test.ft.object.interfaces.ISubitem
        Overrides:
        setState in class JScrollPaneProxy
        Parameters:
        item - The item to act upon.
        action - The action that should be performed.
      • setState

        public void setState(com.rational.test.ft.script.Action action,
                             com.rational.test.ft.script.Subitem start,
                             com.rational.test.ft.script.Subitem end)
        This method performs a specific action against the subitem range defined by the specified indices.
        Specified by:
        setState in interface com.rational.test.ft.object.interfaces.ISubitem
        Overrides:
        setState in class JScrollPaneProxy
        Parameters:
        start - The first item to act upon.
        end - The last item to act upon.
        action - The action that should be performed.
      • processSingleMouseEvent

        public void processSingleMouseEvent(com.rational.test.ft.domain.IMouseActionInfo action)
        Return a MethodSpecification for the specified mouse event. This is the primary record interface for mouse events against a particular control.
        Overrides:
        processSingleMouseEvent in class JavaGuiProxy
        Parameters:
        action - The event cache and other mouse state information for this mouse action.
      • getMethodSpecForPoint

        public com.rational.test.ft.sys.MethodSpecification getMethodSpecForPoint(java.awt.Point pt)
        Return a MethodSpecification for a method that returns a java.awt.Point for the specified coordinates. By default a method specification for IGraphical.getScreenPoint will be returned. However, if a proxy can find
        Overrides:
        getMethodSpecForPoint in class JavaGuiProxy
        Parameters:
        x - The screen relative x coordinate.
        y - The screen relative y coordinate.
        See Also:
        MethodSpecification
      • getTestDataTypes

        public java.util.Hashtable getTestDataTypes()
        Returns a hashtable of data type descriptions of the verification point data available with the associated object. The hashtable keys are String objects that are used as the VP type in the associated test data. The type is a simple value that is different from other type values associated with this object under test. The type keys map to a verbose description of the test data, reasonable for presentation to a user.
        Overrides:
        getTestDataTypes in class JavaProxy
        Returns:
        An hashtable of type/description pairs used to describe the verification data available from this proxy.
        Since:
        RFT1.0
        See Also:
        getTestData(String), ITestData
      • getTestData

        public com.rational.test.ft.vp.ITestData getTestData(java.lang.String testDataType)
        Constructs the specified verification data object. The testDataType parameter is a hashtable key returned by getTestDataTypes().
        Overrides:
        getTestData in class com.rational.test.ft.domain.ProxyTestObject
        Parameters:
        testDataType - A test data type supplied by getTestDataTypes().
        Returns:
        The verification data for the supplied type.
        Since:
        RFT1.0
        See Also:
        getTestDataTypes(), ITestData
      • getTestDataTableAt

        protected java.lang.Object getTestDataTableAt(int row,
                                                      int col,
                                                      java.lang.String type,
                                                      javax.swing.table.TableModel model)
      • updateTestData

        public com.rational.test.ft.vp.ITestData updateTestData(java.lang.String testDataType,
                                                                com.rational.test.ft.vp.ITestData testData)
        Updates the supplied test data object and returns it. The testDataType parameter is a hashtable key returned by getTestDataTypes(). The testData is a previously supplied ITestData object that needs to be updated to reflect the current state of the associated test object.
        Overrides:
        updateTestData in class com.rational.test.ft.domain.ProxyTestObject
        Parameters:
        testDataType - A test data type supplied by getTestDataTypes().
        testData - The test data base object that requires updating.
        Returns:
        The testData passed in with appropriate updates.
        Since:
        RFT1.0
        See Also:
        getTestDataTypes(), ITestData
      • getScreenRectangle

        public java.awt.Rectangle getScreenRectangle(com.rational.test.ft.script.Subitem subitem)
        Returns the rectangle that contains the component being evaluated relative to the top left corner of the screen. This will commonly be two operations (getScreenRectangle for the parent object and then adjusting for the specified subitem) combined into a single operation. The rectangle is exposed so that actions may be directly scripted against a visible subitem. null is returned if the subitem is not showing.
        Specified by:
        getScreenRectangle in interface com.rational.test.ft.object.interfaces.IGraphicalSubitem
        Overrides:
        getScreenRectangle in class JScrollPaneProxy
        Returns:
        The adjusted rectangle surrounding subitem relative to the screen. null is returned if the subitem is not showing.
      • canBeScrolled

        public boolean canBeScrolled()
        Returns true if the object is associated with scrollbar(s). By default, it returns false<\b>.
        Overrides:
        canBeScrolled in class ComponentProxy
        Returns:
        true if the object is associated with scrollbar(s).
      • getDataDrivableCommand

        public com.rational.test.ft.sys.MethodSpecification getDataDrivableCommand()
        This method must be implemented by any proxy that wishes to support data driving. By default a null value is returned.
        Specified by:
        getDataDrivableCommand in interface com.rational.test.ft.domain.IDataDriven
        Overrides:
        getDataDrivableCommand in class com.rational.test.ft.domain.ProxyTestObject
        Since:
        RFT2.0
        See Also:
        ProxyTestObject.getDataDrivableCommands(int)
      • addDataDrivableCommands

        protected void addDataDrivableCommands(com.rational.test.ft.domain.ProxyTestObject proxy,
                                               java.util.Vector commands,
                                               int includeChildren)
        Overrides:
        addDataDrivableCommands in class com.rational.test.ft.domain.ProxyTestObject