GWT 2.7.0

com.google.gwt.user.client.ui
Class HTMLTable

java.lang.Object
  extended by com.google.gwt.user.client.ui.UIObject
      extended by com.google.gwt.user.client.ui.Widget
          extended by com.google.gwt.user.client.ui.Panel
              extended by com.google.gwt.user.client.ui.HTMLTable
All Implemented Interfaces:
HasAllDragAndDropHandlers, HasClickHandlers, HasDoubleClickHandlers, HasDragEndHandlers, HasDragEnterHandlers, HasDragHandlers, HasDragLeaveHandlers, HasDragOverHandlers, HasDragStartHandlers, HasDropHandlers, HasAttachHandlers, HasHandlers, EventListener, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IsWidget, SourcesTableEvents, java.lang.Iterable<Widget>
Direct Known Subclasses:
FlexTable, Grid

public abstract class HTMLTable
extends Panel
implements SourcesTableEvents, HasAllDragAndDropHandlers, HasClickHandlers, HasDoubleClickHandlers

HTMLTable contains the common table algorithms for Grid and FlexTable.


Nested Class Summary
 class HTMLTable.Cell
          Return value for getCellForEvent(com.google.gwt.event.dom.client.ClickEvent).
 class HTMLTable.CellFormatter
          This class contains methods used to format a table's cells.
 class HTMLTable.ColumnFormatter
          This class contains methods used to format a table's columns.
 class HTMLTable.RowFormatter
          This class contains methods used to format a table's rows.
 
Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject
UIObject.DebugIdImpl, UIObject.DebugIdImplEnabled
 
Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.HasWidgets
HasWidgets.ForIsWidget
 
Field Summary
 
Fields inherited from class com.google.gwt.user.client.ui.Widget
eventsToSink
 
Fields inherited from class com.google.gwt.user.client.ui.UIObject
DEBUG_ID_PREFIX, MISSING_ELEMENT_ERROR, SETELEMENT_TWICE_ERROR
 
Constructor Summary
HTMLTable()
          Create a new empty HTML Table.
 
Method Summary
(package private)  void addCells(Element tbody, int row, int num)
           
 HandlerRegistration addClickHandler(ClickHandler handler)
          Adds a ClickEvent handler.
 HandlerRegistration addDoubleClickHandler(DoubleClickHandler handler)
          Adds a DoubleClickEvent handler.
 HandlerRegistration addDragEndHandler(DragEndHandler handler)
          Adds a DragEndEvent handler.
 HandlerRegistration addDragEnterHandler(DragEnterHandler handler)
          Adds a DragEnterEvent handler.
 HandlerRegistration addDragHandler(DragHandler handler)
          Adds a DragEvent handler.
 HandlerRegistration addDragLeaveHandler(DragLeaveHandler handler)
          Adds a DragLeaveEvent handler.
 HandlerRegistration addDragOverHandler(DragOverHandler handler)
          Adds a DragOverEvent handler.
 HandlerRegistration addDragStartHandler(DragStartHandler handler)
          Adds a DragStartEvent handler.
 HandlerRegistration addDropHandler(DropHandler handler)
          Adds a DropEvent handler.
 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)
protected  void checkCellBounds(int row, int column)
          Bounds checks that the cell exists at the specified location.
protected  void checkRowBounds(int row)
          Checks that the row is within the correct bounds.
 void clear()
          Removes all widgets from this table, but does not remove other HTML or text contents of cells.
 void clear(boolean clearInnerHTML)
          Removes all widgets from this table, optionally clearing the inner HTML of each cell.
 boolean clearCell(int row, int column)
          Clears the cell at the given row and column.
protected  Element createCell()
          Creates a new cell.
protected  Element getBodyElement()
          Gets the table's TBODY element.
abstract  int getCellCount(int row)
          Gets the number of cells in a given row.
 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.
 HTMLTable.CellFormatter getCellFormatter()
          Gets the HTMLTable.CellFormatter associated with this table.
 int getCellPadding()
          Gets the amount of padding that is added around all cells.
 int getCellSpacing()
          Gets the amount of spacing that is added around all cells.
 HTMLTable.ColumnFormatter getColumnFormatter()
          Gets the column formatter.
protected  int getDOMCellCount(Element tableBody, int row)
          Directly ask the underlying DOM what the cell count on the given row is.
protected  int getDOMCellCount(Element tableBody, int row)
          Deprecated. Call and override getDOMCellCount(Element, int) instead.
protected  int getDOMCellCount(int row)
          Directly ask the underlying DOM what the cell count on the given row is.
protected  int getDOMRowCount()
          Directly ask the underlying DOM what the row count is.
protected  int getDOMRowCount(Element tbody)
           
protected  int getDOMRowCount(Element tbody)
          Deprecated. Call and override getDOMRowCount(Element) instead.
protected  Element getEventTargetCell(Event event)
          Determines the TD associated with the specified event.
 java.lang.String getHTML(int row, int column)
          Gets the HTML contents of the specified cell.
abstract  int getRowCount()
          Gets the number of rows present in this table.
 HTMLTable.RowFormatter getRowFormatter()
          Gets the RowFormatter associated with this table.
 java.lang.String getText(int row, int column)
          Gets the text within the specified cell.
 Widget getWidget(int row, int column)
          Gets the widget in the specified cell.
protected  void insertCell(int row, int column)
          Inserts a new cell into the specified row.
protected  void insertCells(int row, int column, int count)
          Inserts a number of cells before the specified cell.
protected  int insertRow(int beforeRow)
          Inserts a new row into the table.
protected  boolean internalClearCell(Element td, boolean clearInnerHTML)
          Does actual clearing, used by clearCell and cleanCell.
protected  boolean internalClearCell(Element td, boolean clearInnerHTML)
          Deprecated. Call and override internalClearCell(Element, boolean) instead.
 boolean isCellPresent(int row, int column)
          Determines whether the specified cell exists.
 java.util.Iterator<Widget> iterator()
          Returns an iterator containing all the widgets in this table.
protected  void onEnsureDebugId(java.lang.String baseID)
          Affected Elements: -(row)#-(cell)# = the cell at the given row and cell index.
protected abstract  void prepareCell(int row, int column)
          Subclasses must implement this method.
protected  void prepareColumn(int column)
          Subclasses can implement this method.
protected abstract  void prepareRow(int row)
          Subclasses must implement this method.
 boolean remove(Widget widget)
          Remove the specified widget from the table.
protected  void removeCell(int row, int column)
          Removes the specified cell from the table.
protected  void removeRow(int row)
          Removes the specified row from the table.
 void removeTableListener(TableListener listener)
          Deprecated. Use the HandlerRegistration.removeHandler() method on the object returned by an add*Handler method instead
 void setBorderWidth(int width)
          Sets the width of the table's border.
protected  void setCellFormatter(HTMLTable.CellFormatter cellFormatter)
          Sets the table's CellFormatter.
 void setCellPadding(int padding)
          Sets the amount of padding to be added around all cells.
 void setCellSpacing(int spacing)
          Sets the amount of spacing to be added around all cells.
protected  void setColumnFormatter(HTMLTable.ColumnFormatter formatter)
           
 void setHTML(int row, int column, SafeHtml html)
          Sets the HTML contents of the specified cell.
 void setHTML(int row, int column, java.lang.String html)
          Sets the HTML contents of the specified cell.
protected  void setRowFormatter(HTMLTable.RowFormatter rowFormatter)
          Sets the table's RowFormatter.
 void setText(int row, int column, java.lang.String text)
          Sets the text within the specified cell.
 void setWidget(int row, int column, IsWidget widget)
          Overloaded version for IsWidget.
 void setWidget(int row, int column, Widget widget)
          Sets the widget within the specified cell.
 
Methods inherited from class com.google.gwt.user.client.ui.Panel
add, add, adopt, doAttachChildren, doDetachChildren, orphan, remove
 
Methods inherited from class com.google.gwt.user.client.ui.Widget
addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, ensureHandlers, fireEvent, getHandlerCount, getHandlerManager, getLayoutData, getParent, isAttached, isOrWasAttached, onAttach, onBrowserEvent, onDetach, onLoad, onUnload, removeFromParent, replaceElement, setLayoutData, setParent, sinkEvents, unsinkEvents
 
Methods inherited from class com.google.gwt.user.client.ui.UIObject
addStyleDependentName, addStyleName, ensureDebugId, ensureDebugId, ensureDebugId, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, getTitle, isVisible, isVisible, removeStyleDependentName, removeStyleName, resolvePotentialElement, setElement, setElement, setHeight, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, setVisible, setWidth, sinkBitlessEvent, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.google.gwt.event.shared.HasHandlers
fireEvent
 

Constructor Detail

HTMLTable

public HTMLTable()
Create a new empty HTML Table.

Method Detail

addClickHandler

public HandlerRegistration addClickHandler(ClickHandler handler)
Description copied from interface: HasClickHandlers
Adds a ClickEvent handler.

Specified by:
addClickHandler in interface HasClickHandlers
Parameters:
handler - the click handler
Returns:
HandlerRegistration used to remove this handler

addDoubleClickHandler

public HandlerRegistration addDoubleClickHandler(DoubleClickHandler handler)
Description copied from interface: HasDoubleClickHandlers
Adds a DoubleClickEvent handler.

Specified by:
addDoubleClickHandler in interface HasDoubleClickHandlers
Parameters:
handler - the double click handler
Returns:
HandlerRegistration used to remove this handler

addDragEndHandler

public HandlerRegistration addDragEndHandler(DragEndHandler handler)
Description copied from interface: HasDragEndHandlers
Adds a DragEndEvent handler.

Specified by:
addDragEndHandler in interface HasDragEndHandlers
Parameters:
handler - the drag end handler
Returns:
HandlerRegistration used to remove this handler

addDragEnterHandler

public HandlerRegistration addDragEnterHandler(DragEnterHandler handler)
Description copied from interface: HasDragEnterHandlers
Adds a DragEnterEvent handler.

Specified by:
addDragEnterHandler in interface HasDragEnterHandlers
Parameters:
handler - the drag end handler
Returns:
HandlerRegistration used to remove this handler

addDragHandler

public HandlerRegistration addDragHandler(DragHandler handler)
Description copied from interface: HasDragHandlers
Adds a DragEvent handler.

Specified by:
addDragHandler in interface HasDragHandlers
Parameters:
handler - the drag handler
Returns:
HandlerRegistration used to remove this handler

addDragLeaveHandler

public HandlerRegistration addDragLeaveHandler(DragLeaveHandler handler)
Description copied from interface: HasDragLeaveHandlers
Adds a DragLeaveEvent handler.

Specified by:
addDragLeaveHandler in interface HasDragLeaveHandlers
Parameters:
handler - the drag leave handler
Returns:
HandlerRegistration used to remove this handler

addDragOverHandler

public HandlerRegistration addDragOverHandler(DragOverHandler handler)
Description copied from interface: HasDragOverHandlers
Adds a DragOverEvent handler.

Specified by:
addDragOverHandler in interface HasDragOverHandlers
Parameters:
handler - the drag over handler
Returns:
HandlerRegistration used to remove this handler

addDragStartHandler

public HandlerRegistration addDragStartHandler(DragStartHandler handler)
Description copied from interface: HasDragStartHandlers
Adds a DragStartEvent handler.

Specified by:
addDragStartHandler in interface HasDragStartHandlers
Parameters:
handler - the drag start handler
Returns:
HandlerRegistration used to remove this handler

addDropHandler

public HandlerRegistration addDropHandler(DropHandler handler)
Description copied from interface: HasDropHandlers
Adds a DropEvent handler.

Specified by:
addDropHandler in interface HasDropHandlers
Parameters:
handler - the drop handler
Returns:
HandlerRegistration used to remove this handler

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

getCellFormatter

public HTMLTable.CellFormatter getCellFormatter()
Gets the HTMLTable.CellFormatter associated with this table. Use casting to get subclass-specific functionality

Returns:
this table's cell formatter

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.

removeTableListener

@Deprecated
public void removeTableListener(TableListener listener)
Deprecated. Use the HandlerRegistration.removeHandler() method on the object returned by an add*Handler method instead

Removes the specified table listener.

Specified by:
removeTableListener in interface SourcesTableEvents
Parameters:
listener - listener to remove

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

setWidget

public void setWidget(int row,
                      int column,
                      IsWidget widget)
Overloaded version for IsWidget.

See Also:
setWidget(int,int,Widget)

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

@Deprecated
protected int getDOMCellCount(Element tableBody,
                                         int row)
Deprecated. Call and override getDOMCellCount(Element, int) instead.


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)

getDOMRowCount

@Deprecated
protected int getDOMRowCount(Element tbody)
Deprecated. Call and override getDOMRowCount(Element) instead.


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

internalClearCell

@Deprecated
protected boolean internalClearCell(Element td,
                                               boolean clearInnerHTML)
Deprecated. Call and override internalClearCell(Element, boolean) instead.


onEnsureDebugId

protected void onEnsureDebugId(java.lang.String baseID)
Affected Elements:

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

setColumnFormatter

protected void setColumnFormatter(HTMLTable.ColumnFormatter 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)

GWT 2.7.0