blob: 6108606ddc19bf0ae554a6ec2d0de0058af5aad3 [file] [log] [blame]
/*
* Copyright 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.dom.client;
import com.google.gwt.core.client.JavaScriptObject;
/**
* The create* and delete* methods on the table allow authors to construct and
* modify tables. [HTML 4.01] specifies that only one of each of the CAPTION,
* THEAD, and TFOOT elements may exist in a table. Therefore, if one exists, and
* the createTHead() or createTFoot() method is called, the method returns the
* existing THead or TFoot element.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#edef-TABLE">W3C HTML Specification</a>
*/
@TagName(TableElement.TAG)
public class TableElement extends Element {
public static final String TAG = "table";
/**
* Assert that the given {@link Element} is compatible with this class and
* automatically typecast it.
*/
public static TableElement as(Element elem) {
assert is(elem);
return (TableElement) elem;
}
/**
* Determines whether the given {@link JavaScriptObject} can be cast to
* this class. A <code>null</code> object will cause this method to
* return <code>false</code>.
*/
public static boolean is(JavaScriptObject o) {
if (Element.is(o)) {
return is((Element) o);
}
return false;
}
/**
* Determine whether the given {@link Node} can be cast to this class.
* A <code>null</code> node will cause this method to return
* <code>false</code>.
*/
public static boolean is(Node node) {
if (Element.is(node)) {
return is((Element) node);
}
return false;
}
/**
* Determine whether the given {@link Element} can be cast to this class.
* A <code>null</code> node will cause this method to return
* <code>false</code>.
*/
public static boolean is(Element elem) {
return elem != null && elem.hasTagName(TAG);
}
protected TableElement() {
}
/**
* Create a new table caption object or return an existing one.
*
* @return A CAPTION element.
*/
public final native TableCaptionElement createCaption() /*-{
return this.createCaption();
}-*/;
/**
* Create a table footer row or return an existing one.
*
* @return A footer element (TFOOT)
*/
public final native TableSectionElement createTFoot() /*-{
return this.createTFoot();
}-*/;
/**
* Create a table header row or return an existing one.
*
* @return A new table header element (THEAD)
*/
public final native TableSectionElement createTHead() /*-{
return this.createTHead();
}-*/;
/**
* Delete the table caption, if one exists.
*/
public final native void deleteCaption() /*-{
this.deleteCaption();
}-*/;
/**
* Delete a table row.
*
* @param index The index of the row to be deleted. This index starts from 0
* and is relative to the logical order (not document order) of all
* the rows contained inside the table. If the index is -1 the last
* row in the table is deleted
*/
public final native void deleteRow(int index) /*-{
this.deleteRow(index);
}-*/;
/**
* Delete the header from the table, if one exists.
*/
public final native void deleteTFoot() /*-{
this.deleteTFoot();
}-*/;
/**
* Delete the header from the table, if one exists.
*/
public final native void deleteTHead() /*-{
this.deleteTHead();
}-*/;
/**
* The width of the border around the table.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-border-TABLE">W3C HTML Specification</a>
*/
public final native int getBorder() /*-{
return this.border;
}-*/;
/**
* The table's CAPTION, or null if none exists.
*/
public final native TableCaptionElement getCaption() /*-{
return this.caption;
}-*/;
/**
* Specifies the horizontal and vertical space between cell content and cell
* borders.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-cellpadding">W3C HTML Specification</a>
*/
public final native int getCellPadding() /*-{
return this.cellPadding;
}-*/;
/**
* Specifies the horizontal and vertical separation between cells.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-cellspacing">W3C HTML Specification</a>
*/
public final native int getCellSpacing() /*-{
return this.cellSpacing;
}-*/;
/**
* Specifies which external table borders to render.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-frame">W3C HTML Specification</a>
*/
public final native String getFrame() /*-{
return this.frame;
}-*/;
/**
* Returns a collection of all the rows in the table, including all in THEAD,
* TFOOT, all TBODY elements.
*/
public final native NodeList<TableRowElement> getRows() /*-{
return this.rows;
}-*/;
/**
* Specifies which internal table borders to render.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-rules">W3C HTML Specification</a>
*/
public final native String getRules() /*-{
return this.rules;
}-*/;
/**
* Returns a collection of the table bodies (including implicit ones).
*/
public final native NodeList<TableSectionElement> getTBodies() /*-{
return this.tBodies;
}-*/;
/**
* The table's TFOOT, or null if none exists.
*/
public final native TableSectionElement getTFoot() /*-{
return this.tFoot;
}-*/;
/**
* The table's THEAD, or null if none exists.
*/
public final native TableSectionElement getTHead() /*-{
return this.tHead;
}-*/;
/**
* Specifies the desired table width.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-width-TABLE">W3C HTML Specification</a>
*/
public final native String getWidth() /*-{
return this.width;
}-*/;
/**
* Insert a new empty row in the table. The new row is inserted immediately
* before and in the same section as the current indexth row in the table. If
* index is -1 or equal to the number of rows, the new row is appended. In
* addition, when the table is empty the row is inserted into a TBODY which is
* created and inserted into the table.
*
* Note: A table row cannot be empty according to [HTML 4.01].
*
* @param index The row number where to insert a new row. This index starts
* from 0 and is relative to the logical order (not document order)
* of all the rows contained inside the table
* @return The newly created row
*/
public final native TableRowElement insertRow(int index) /*-{
return this.insertRow(index);
}-*/;
/**
* The width of the border around the table.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-border-TABLE">W3C HTML Specification</a>
*/
public final native void setBorder(int border) /*-{
this.border = border;
}-*/;
/**
* The table's CAPTION, or null if none exists.
*/
public final native void setCaption(TableCaptionElement caption) /*-{
this.caption = caption;
}-*/;
/**
* Specifies the horizontal and vertical space between cell content and cell
* borders.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-cellpadding">W3C HTML Specification</a>
*/
public final native void setCellPadding(int cellPadding) /*-{
this.cellPadding = cellPadding;
}-*/;
/**
* Specifies the horizontal and vertical separation between cells.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-cellspacing">W3C HTML Specification</a>
*/
public final native void setCellSpacing(int cellSpacing) /*-{
this.cellSpacing = cellSpacing;
}-*/;
/**
* Specifies which external table borders to render.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-frame">W3C HTML Specification</a>
*/
public final native void setFrame(String frame) /*-{
this.frame = frame;
}-*/;
/**
* Specifies which internal table borders to render.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-rules">W3C HTML Specification</a>
*/
public final native void setRules(String rules) /*-{
this.rules = rules;
}-*/;
/**
* The table's TFOOT, or null if none exists.
*/
public final native void setTFoot(TableSectionElement tFoot) /*-{
this.tFoot = tFoot;
}-*/;
/**
* The table's THEAD, or null if none exists.
*/
public final native void setTHead(TableSectionElement tHead) /*-{
this.tHead = tHead;
}-*/;
/**
* Specifies the desired table width.
*
* @see <a href="http://www.w3.org/TR/1999/REC-html401-19991224/struct/tables.html#adef-width-TABLE">W3C HTML Specification</a>
*/
public final native void setWidth(String width) /*-{
this.width = width;
}-*/;
}