Class HTMLTable

    • Constructor Detail

      • HTMLTable

        public HTMLTable()
        Create a new empty HTML Table.
    • Method Detail

      • addTableListener

        @Deprecated
        public void addTableListener​(TableListener listener)
        Deprecated.
        add a click handler instead and use getCellForEvent(ClickEvent) to get the cell information (remember to check for a null return value)
        Adds a listener to the current table.
        Specified by:
        addTableListener in interface SourcesTableEvents
        Parameters:
        listener - listener to add
      • clear

        public void clear()
        Removes all widgets from this table, but does not remove other HTML or text contents of cells.
        Specified by:
        clear in interface HasWidgets
        Overrides:
        clear in class Panel
      • clear

        public void clear​(boolean clearInnerHTML)
        Removes all widgets from this table, optionally clearing the inner HTML of each cell. Note that this method does not remove any cells or rows.
        Parameters:
        clearInnerHTML - should the cell's inner html be cleared?
      • clearCell

        public boolean clearCell​(int row,
                                 int column)
        Clears the cell at the given row and column. If it contains a Widget, it will be removed from the table. If not, its contents will simply be cleared.
        Parameters:
        row - the widget's row
        column - the widget's column
        Returns:
        true if a widget was removed
        Throws:
        java.lang.IndexOutOfBoundsException
      • getCellCount

        public abstract int getCellCount​(int row)
        Gets the number of cells in a given row.
        Parameters:
        row - the row whose cells are to be counted
        Returns:
        the number of cells present in the row
      • getCellForEvent

        public HTMLTable.Cell getCellForEvent​(ClickEvent event)
        Given a click event, return the Cell that was clicked, or null if the event did not hit this table. The cell can also be null if the click event does not occur on a specific cell.
        Parameters:
        event - A click event of indeterminate origin
        Returns:
        The appropriate cell, or null
      • getCellPadding

        public int getCellPadding()
        Gets the amount of padding that is added around all cells.
        Returns:
        the cell padding, in pixels
      • getCellSpacing

        public int getCellSpacing()
        Gets the amount of spacing that is added around all cells.
        Returns:
        the cell spacing, in pixels
      • getColumnFormatter

        public HTMLTable.ColumnFormatter getColumnFormatter()
        Gets the column formatter.
        Returns:
        the column formatter
      • getHTML

        public java.lang.String getHTML​(int row,
                                        int column)
        Gets the HTML contents of the specified cell.
        Parameters:
        row - the cell's row
        column - the cell's column
        Returns:
        the cell's HTML contents
        Throws:
        java.lang.IndexOutOfBoundsException
      • getRowCount

        public abstract int getRowCount()
        Gets the number of rows present in this table.
        Returns:
        the table's row count
      • getRowFormatter

        public HTMLTable.RowFormatter getRowFormatter()
        Gets the RowFormatter associated with this table.
        Returns:
        the table's row formatter
      • getText

        public java.lang.String getText​(int row,
                                        int column)
        Gets the text within the specified cell.
        Parameters:
        row - the cell's row
        column - the cell's column
        Returns:
        the cell's text contents
        Throws:
        java.lang.IndexOutOfBoundsException
      • getWidget

        public Widget getWidget​(int row,
                                int column)
        Gets the widget in the specified cell.
        Parameters:
        row - the cell's row
        column - the cell's column
        Returns:
        the widget in the specified cell, or null if none is present
        Throws:
        java.lang.IndexOutOfBoundsException
      • isCellPresent

        public boolean isCellPresent​(int row,
                                     int column)
        Determines whether the specified cell exists.
        Parameters:
        row - the cell's row
        column - the cell's column
        Returns:
        true if the specified cell exists
      • iterator

        public java.util.Iterator<Widget> iterator()
        Returns an iterator containing all the widgets in this table.
        Specified by:
        iterator in interface HasWidgets
        Specified by:
        iterator in interface java.lang.Iterable<Widget>
        Returns:
        the iterator
      • remove

        public boolean remove​(Widget widget)
        Remove the specified widget from the table.
        Specified by:
        remove in interface HasWidgets
        Specified by:
        remove in class Panel
        Parameters:
        widget - widget to remove
        Returns:
        was the widget removed from the table.
      • setBorderWidth

        public void setBorderWidth​(int width)
        Sets the width of the table's border. This border is displayed around all cells in the table.
        Parameters:
        width - the width of the border, in pixels
      • setCellPadding

        public void setCellPadding​(int padding)
        Sets the amount of padding to be added around all cells.
        Parameters:
        padding - the cell padding, in pixels
      • setCellSpacing

        public void setCellSpacing​(int spacing)
        Sets the amount of spacing to be added around all cells.
        Parameters:
        spacing - the cell spacing, in pixels
      • setHTML

        public void setHTML​(int row,
                            int column,
                            java.lang.String html)
        Sets the HTML contents of the specified cell.
        Parameters:
        row - the cell's row
        column - the cell's column
        html - the cell's HTML contents
        Throws:
        java.lang.IndexOutOfBoundsException
      • setHTML

        public void setHTML​(int row,
                            int column,
                            SafeHtml html)
        Sets the HTML contents of the specified cell.
        Parameters:
        row - the cell's row
        column - the cell's column
        html - the cell's safe html contents
        Throws:
        java.lang.IndexOutOfBoundsException
      • setText

        public void setText​(int row,
                            int column,
                            java.lang.String text)
        Sets the text within the specified cell.
        Parameters:
        row - the cell's row
        column - cell's column
        text - the cell's text contents
        Throws:
        java.lang.IndexOutOfBoundsException
      • setWidget

        public void setWidget​(int row,
                              int column,
                              Widget widget)
        Sets the widget within the specified cell.

        Inherited implementations may either throw IndexOutOfBounds exception if the cell does not exist, or allocate a new cell to store the content.

        FlexTable will automatically allocate the cell at the correct location and then set the widget. Grid will set the widget if and only if the cell is within the Grid's bounding box.

        Parameters:
        widget - The widget to be added, or null to clear the cell
        row - the cell's row
        column - the cell's column
        Throws:
        java.lang.IndexOutOfBoundsException
      • checkCellBounds

        protected void checkCellBounds​(int row,
                                       int column)
        Bounds checks that the cell exists at the specified location.
        Parameters:
        row - cell's row
        column - cell's column
        Throws:
        java.lang.IndexOutOfBoundsException
      • checkRowBounds

        protected void checkRowBounds​(int row)
        Checks that the row is within the correct bounds.
        Parameters:
        row - row index to check
        Throws:
        java.lang.IndexOutOfBoundsException
      • createCell

        protected Element createCell()
        Creates a new cell. Override this method if the cell should have initial contents.
        Returns:
        the newly created TD
      • getBodyElement

        protected Element getBodyElement()
        Gets the table's TBODY element.
        Returns:
        the TBODY element
      • getDOMCellCount

        protected int getDOMCellCount​(Element tableBody,
                                      int row)
        Directly ask the underlying DOM what the cell count on the given row is.
        Parameters:
        tableBody - the element
        row - the row
        Returns:
        number of columns in the row
      • getDOMCellCount

        protected int getDOMCellCount​(int row)
        Directly ask the underlying DOM what the cell count on the given row is.
        Parameters:
        row - the row
        Returns:
        number of columns in the row
      • getDOMRowCount

        protected int getDOMRowCount()
        Directly ask the underlying DOM what the row count is.
        Returns:
        Returns the number of rows in the table
      • getDOMRowCount

        protected int getDOMRowCount​(Element tbody)
      • getEventTargetCell

        protected Element getEventTargetCell​(Event event)
        Determines the TD associated with the specified event.
        Parameters:
        event - the event to be queried
        Returns:
        the TD associated with the event, or null if none is found.
      • insertCell

        protected void insertCell​(int row,
                                  int column)
        Inserts a new cell into the specified row.
        Parameters:
        row - the row into which the new cell will be inserted
        column - the column before which the cell will be inserted
        Throws:
        java.lang.IndexOutOfBoundsException
      • insertCells

        protected void insertCells​(int row,
                                   int column,
                                   int count)
        Inserts a number of cells before the specified cell.
        Parameters:
        row - the row into which the new cells will be inserted
        column - the column before which the new cells will be inserted
        count - number of cells to be inserted
        Throws:
        java.lang.IndexOutOfBoundsException
      • insertRow

        protected int insertRow​(int beforeRow)
        Inserts a new row into the table.
        Parameters:
        beforeRow - the index before which the new row will be inserted
        Returns:
        the index of the newly-created row
        Throws:
        java.lang.IndexOutOfBoundsException
      • internalClearCell

        protected boolean internalClearCell​(Element td,
                                            boolean clearInnerHTML)
        Does actual clearing, used by clearCell and cleanCell. All HTMLTable methods should use internalClearCell rather than clearCell, as clearCell may be overridden in subclasses to format an empty cell.
        Parameters:
        td - element to clear
        clearInnerHTML - should the cell's inner html be cleared?
        Returns:
        returns whether a widget was cleared
      • onEnsureDebugId

        protected void onEnsureDebugId​(java.lang.String baseID)
        Affected Elements:
        • -(row)#-(cell)# = the cell at the given row and cell index.
        Overrides:
        onEnsureDebugId in class UIObject
        Parameters:
        baseID - the base ID used by the main element
        See Also:
        UIObject.onEnsureDebugId(String)
      • prepareCell

        protected abstract void prepareCell​(int row,
                                            int column)
        Subclasses must implement this method. It allows them to decide what to do just before a cell is accessed. If the cell already exists, this method must do nothing. Otherwise, a subclass must either ensure that the cell exists or throw an IndexOutOfBoundsException.
        Parameters:
        row - the cell's row
        column - the cell's column
      • prepareColumn

        protected void prepareColumn​(int column)
        Subclasses can implement this method. It allows them to decide what to do just before a column is accessed. For classes, such as FlexTable, that do not have a concept of a global column length can ignore this method.
        Parameters:
        column - the cell's column
        Throws:
        java.lang.IndexOutOfBoundsException
      • prepareRow

        protected abstract void prepareRow​(int row)
        Subclasses must implement this method. If the row already exists, this method must do nothing. Otherwise, a subclass must either ensure that the row exists or throw an IndexOutOfBoundsException.
        Parameters:
        row - the cell's row
      • removeCell

        protected void removeCell​(int row,
                                  int column)
        Removes the specified cell from the table.
        Parameters:
        row - the row of the cell to remove
        column - the column of cell to remove
        Throws:
        java.lang.IndexOutOfBoundsException
      • removeRow

        protected void removeRow​(int row)
        Removes the specified row from the table.
        Parameters:
        row - the index of the row to be removed
        Throws:
        java.lang.IndexOutOfBoundsException
      • setCellFormatter

        protected void setCellFormatter​(HTMLTable.CellFormatter cellFormatter)
        Sets the table's CellFormatter.
        Parameters:
        cellFormatter - the table's cell formatter
      • setRowFormatter

        protected void setRowFormatter​(HTMLTable.RowFormatter rowFormatter)
        Sets the table's RowFormatter.
        Parameters:
        rowFormatter - the table's row formatter
      • addCells

        void addCells​(Element tbody,
                      int row,
                      int num)