/* * This file is part of the DOM implementation for KDE. * * (C) 1999 Lars Knoll (knoll@kde.org) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * This file includes excerpts from the Document Object Model (DOM) * Level 1 Specification (Recommendation) * http://www.w3.org/TR/REC-DOM-Level-1/ * Copyright © World Wide Web Consortium , (Massachusetts Institute of * Technology , Institut National de Recherche en Informatique et en * Automatique , Keio University ). All Rights Reserved. * */ #ifndef HTML_TABLE_H #define HTML_TABLE_H // -------------------------------------------------------------------------- #include #include namespace DOM { class HTMLTableCaptionElementImpl; class DOMString; /** * Table caption See the * CAPTION element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTableCaptionElement : public HTMLElement { friend class HTMLTableElement; public: HTMLTableCaptionElement(); HTMLTableCaptionElement(const HTMLTableCaptionElement &other); HTMLTableCaptionElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableCaptionElement(HTMLTableCaptionElementImpl *impl); public: HTMLTableCaptionElement & operator = (const HTMLTableCaptionElement &other); HTMLTableCaptionElement & operator = (const Node &other); ~HTMLTableCaptionElement(); /** * Caption alignment with respect to the table. See the * align attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLTableCellElementImpl; /** * The object used to represent the \c TH and \c TD * elements. See the * TD element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTableCellElement : public HTMLElement { friend class HTMLTableElement; public: HTMLTableCellElement(); HTMLTableCellElement(const HTMLTableCellElement &other); HTMLTableCellElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableCellElement(HTMLTableCellElementImpl *impl); public: HTMLTableCellElement & operator = (const HTMLTableCellElement &other); HTMLTableCellElement & operator = (const Node &other); ~HTMLTableCellElement(); /** * The index of this cell in the row. * */ long cellIndex() const; /** * see cellIndex * * This function is obsolete - the cellIndex property is actually supposed to be read-only * (http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) */ void setCellIndex( long ); /** * Abbreviation for header cells. See the * abbr attribute definition in HTML 4.0. * */ DOMString abbr() const; /** * see abbr */ void setAbbr( const DOMString & ); /** * Horizontal alignment of data in cell. See the * align attribute definition in HTML 4.0. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); /** * Names group of related headers. See the * axis attribute definition in HTML 4.0. * */ DOMString axis() const; /** * see axis */ void setAxis( const DOMString & ); /** * Cell background color. See the * bgcolor attribute definition in HTML 4.0. This attribute * is deprecated in HTML 4.0. * */ DOMString bgColor() const; /** * see bgColor */ void setBgColor( const DOMString & ); /** * Alignment character for cells in a column. See the * char attribute definition in HTML 4.0. * */ DOMString ch() const; /** * see ch */ void setCh( const DOMString & ); /** * Offset of alignment character. See the * charoff attribute definition in HTML 4.0. * */ DOMString chOff() const; /** * see chOff */ void setChOff( const DOMString & ); /** * Number of columns spanned by cell. See the * colspan attribute definition in HTML 4.0. * */ long colSpan() const; /** * see colSpan */ void setColSpan( long ); /** * List of \c id attribute values for header cells. * See the * headers attribute definition in HTML 4.0. * */ DOMString headers() const; /** * see headers */ void setHeaders( const DOMString & ); /** * Cell height. See the * height attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ DOMString height() const; /** * see height */ void setHeight( const DOMString & ); /** * Suppress word wrapping. See the * nowrap attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ bool noWrap() const; /** * see noWrap */ void setNoWrap( bool ); /** * Number of rows spanned by cell. See the * rowspan attribute definition in HTML 4.0. * */ long rowSpan() const; /** * see rowSpan */ void setRowSpan( long ); /** * Scope covered by header cells. See the * scope attribute definition in HTML 4.0. * */ DOMString scope() const; /** * see scope */ void setScope( const DOMString & ); /** * Vertical alignment of data in cell. See the * valign attribute definition in HTML 4.0. * */ DOMString vAlign() const; /** * see vAlign */ void setVAlign( const DOMString & ); /** * Cell width. See the * width attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ DOMString width() const; /** * see width */ void setWidth( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLTableColElementImpl; /** * Regroups the \c COL and \c COLGROUP * elements. See the * COL element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTableColElement : public HTMLElement { friend class HTMLTableElement; public: HTMLTableColElement(); HTMLTableColElement(const HTMLTableColElement &other); HTMLTableColElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableColElement(HTMLTableColElementImpl *impl); public: HTMLTableColElement & operator = (const HTMLTableColElement &other); HTMLTableColElement & operator = (const Node &other); ~HTMLTableColElement(); /** * Horizontal alignment of cell data in column. See the * align attribute definition in HTML 4.0. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); /** * Alignment character for cells in a column. See the * char attribute definition in HTML 4.0. * */ DOMString ch() const; /** * see ch */ void setCh( const DOMString & ); /** * Offset of alignment character. See the * charoff attribute definition in HTML 4.0. * */ DOMString chOff() const; /** * see chOff */ void setChOff( const DOMString & ); /** * Indicates the number of columns in a group or affected by a * grouping. See the * span attribute definition in HTML 4.0. * */ long span() const; /** * see span */ void setSpan( long ); /** * Vertical alignment of cell data in column. See the * valign attribute definition in HTML 4.0. * */ DOMString vAlign() const; /** * see vAlign */ void setVAlign( const DOMString & ); /** * Default column width. See the * width attribute definition in HTML 4.0. * */ DOMString width() const; /** * see width */ void setWidth( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLTableElementImpl; class HTMLCollection; class HTMLTableSectionElement; class HTMLTableCaptionElement; class HTMLElement; class DOMString; /** * The create* and delete* methods on the table allow authors to * construct and modify tables. HTML 4.0 specifies that only one of * each of the \c CAPTION , \c THEAD , and * \c 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 * the * TABLE element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTableElement : public HTMLElement { public: HTMLTableElement(); HTMLTableElement(const HTMLTableElement &other); HTMLTableElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableElement(HTMLTableElementImpl *impl); public: HTMLTableElement & operator = (const HTMLTableElement &other); HTMLTableElement & operator = (const Node &other); ~HTMLTableElement(); /** * Returns the table's \c CAPTION , or void if none * exists. * */ HTMLTableCaptionElement caption() const; /** * see caption */ void setCaption( const HTMLTableCaptionElement & ); /** * Returns the table's \c THEAD , or \c null * if none exists. * */ HTMLTableSectionElement tHead() const; /** * see tHead */ void setTHead( const HTMLTableSectionElement & ); /** * Returns the table's \c TFOOT , or \c null * if none exists. * */ HTMLTableSectionElement tFoot() const; /** * see tFoot */ void setTFoot( const HTMLTableSectionElement & ); /** * Returns a collection of all the rows in the table, including * all in \c THEAD , \c TFOOT , all * \c TBODY elements. * */ HTMLCollection rows() const; /** * Returns a collection of the table bodies (including implicit ones). * */ HTMLCollection tBodies() const; /** * Specifies the table's position with respect to the rest of the * document. See the * align attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); /** * Cell background color. See the * bgcolor attribute definition in HTML 4.0. This attribute * is deprecated in HTML 4.0. * */ DOMString bgColor() const; /** * see bgColor */ void setBgColor( const DOMString & ); /** * The width of the border around the table. See the * border attribute definition in HTML 4.0. * */ DOMString border() const; /** * see border */ void setBorder( const DOMString & ); /** * Specifies the horizontal and vertical space between cell * content and cell borders. See the * cellpadding attribute definition in HTML 4.0. * */ DOMString cellPadding() const; /** * see cellPadding */ void setCellPadding( const DOMString & ); /** * Specifies the horizontal and vertical separation between cells. * See the * cellspacing attribute definition in HTML 4.0. * */ DOMString cellSpacing() const; /** * see cellSpacing */ void setCellSpacing( const DOMString & ); /** * Specifies which external table borders to render. See the * frame attribute definition in HTML 4.0. * */ DOMString frame() const; /** * see frame */ void setFrame( const DOMString & ); /** * Specifies which internal table borders to render. See the * rules attribute definition in HTML 4.0. * */ DOMString rules() const; /** * see rules */ void setRules( const DOMString & ); /** * Supplementary description about the purpose or structure of a * table. See the * summary attribute definition in HTML 4.0. * */ DOMString summary() const; /** * see summary */ void setSummary( const DOMString & ); /** * Specifies the desired table width. See the * width attribute definition in HTML 4.0. * */ DOMString width() const; /** * see width */ void setWidth( const DOMString & ); /** * Create a table header row or return an existing one. * * @return A new table header element ( \c THEAD ). * */ HTMLElement createTHead ( ); /** * Delete the header from the table, if one exists. * * @return * */ void deleteTHead ( ); /** * Create a table footer row or return an existing one. * * @return A footer element ( \c TFOOT ). * */ HTMLElement createTFoot ( ); /** * Delete the footer from the table, if one exists. * * @return * */ void deleteTFoot ( ); /** * Create a new table caption object or return an existing one. * * @return A \c CAPTION element. * */ HTMLElement createCaption ( ); /** * Delete the table caption, if one exists. * * @return * */ void deleteCaption ( ); /** * 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.0 Recommendation. * * @param index The row number where to insert a new row. * The 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. * */ HTMLElement insertRow ( long index ); /** * 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. * * @return * */ void deleteRow ( long index ); }; // -------------------------------------------------------------------------- class HTMLTableRowElementImpl; class HTMLCollection; class HTMLElement; class DOMString; /** * A row in a table. See the * TR element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTableRowElement : public HTMLElement { friend class HTMLTableElement; public: HTMLTableRowElement(); HTMLTableRowElement(const HTMLTableRowElement &other); HTMLTableRowElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableRowElement(HTMLTableRowElementImpl *impl); public: HTMLTableRowElement & operator = (const HTMLTableRowElement &other); HTMLTableRowElement & operator = (const Node &other); ~HTMLTableRowElement(); /** * The index of this row, relative to the entire table. * This is in logical order and not in document order. * The rowIndex does take into account sections * (THEAD, TFOOT or TBODY) within the table, * placing THEAD rows first in the index, followed by * TBODY rows, followed by TFOOT rows. */ long rowIndex() const; /** * see rowIndex * * This function is obsolete - the rowIndex property is actually supposed to be read-only * (http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) */ void setRowIndex( long ); /** * The index of this row, relative to the current section ( * \c THEAD , \c TFOOT , or \c TBODY * ). * */ long sectionRowIndex() const; /** * see sectionRowIndex * * This function is obsolete - the sectionRowIndex property is actually supposed to be read-only * (http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) */ void setSectionRowIndex( long ); /** * The collection of cells in this row. * */ HTMLCollection cells() const; /** * see cells * * This function is obsolete - the cells property is actually supposed to be read-only * (http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) */ void setCells( const HTMLCollection & ); /** * Horizontal alignment of data within cells of this row. See the * * align attribute definition in HTML 4.0. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); /** * Background color for rows. See the * bgcolor attribute definition in HTML 4.0. This attribute * is deprecated in HTML 4.0. * */ DOMString bgColor() const; /** * see bgColor */ void setBgColor( const DOMString & ); /** * Alignment character for cells in a column. See the * char attribute definition in HTML 4.0. * */ DOMString ch() const; /** * see ch */ void setCh( const DOMString & ); /** * Offset of alignment character. See the * charoff attribute definition in HTML 4.0. * */ DOMString chOff() const; /** * see chOff */ void setChOff( const DOMString & ); /** * Vertical alignment of data within cells of this row. See the * valign attribute definition in HTML 4.0. * */ DOMString vAlign() const; /** * see vAlign */ void setVAlign( const DOMString & ); /** * Insert an empty \c TD cell into this row. * If index is -1 or equal to the number of cells, the new * cell is appended. * * @param index The place to insert the cell. * * @return The newly created cell. * */ HTMLElement insertCell ( long index ); /** * Delete a cell from the current row. * * @param index The index of the cell to delete, starting from 0. * If the index is -1 the last cell in the row is deleted. * * @return * */ void deleteCell ( long index ); }; // -------------------------------------------------------------------------- class HTMLTableSectionElementImpl; class HTMLCollection; class HTMLElement; class DOMString; /** * The \c THEAD , \c TFOOT , and \c TBODY * elements. * */ class KHTML_EXPORT HTMLTableSectionElement : public HTMLElement { friend class HTMLTableElement; public: HTMLTableSectionElement(); HTMLTableSectionElement(const HTMLTableSectionElement &other); HTMLTableSectionElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTableSectionElement(HTMLTableSectionElementImpl *impl); public: HTMLTableSectionElement & operator = (const HTMLTableSectionElement &other); HTMLTableSectionElement & operator = (const Node &other); ~HTMLTableSectionElement(); /** * Horizontal alignment of data in cells. See the \c align * attribute for HTMLTheadElement for details. * */ DOMString align() const; /** * see align */ void setAlign( const DOMString & ); /** * Alignment character for cells in a column. See the * char attribute definition in HTML 4.0. * */ DOMString ch() const; /** * see ch */ void setCh( const DOMString & ); /** * Offset of alignment character. See the * charoff attribute definition in HTML 4.0. * */ DOMString chOff() const; /** * see chOff */ void setChOff( const DOMString & ); /** * Vertical alignment of data in cells. See the \c valign * attribute for HTMLTheadElement for details. * */ DOMString vAlign() const; /** * see vAlign */ void setVAlign( const DOMString & ); /** * The collection of rows in this table section. * */ HTMLCollection rows() const; /** * Insert a row into this section. * The new row is inserted immediately before the current indexth * row in this section. If index is -1 or equal to the number of rows * in this sectino, the new row is appended. * * @param index The row number where to insert a new row. * * @return The newly created row. * */ HTMLElement insertRow ( long index ); /** * Delete a row from this section. * * @param index The index of the row to be deleted, * or -1 to delete the last row. This index starts from 0 and is relative only * to the rows contained inside this section, not all the rows in the table. * */ void deleteRow ( long index ); }; } //namespace #endif