/* * 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_FORM_H #define HTML_FORM_H // -------------------------------------------------------------------------- #include #include #include namespace DOM { class HTMLButtonElementImpl; class HTMLFormElement; class DOMString; /** * Push button. See the * BUTTON element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLButtonElement : public HTMLElement { public: HTMLButtonElement(); HTMLButtonElement(const HTMLButtonElement &other); HTMLButtonElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLButtonElement(HTMLButtonElementImpl *impl); public: HTMLButtonElement & operator = (const HTMLButtonElement &other); HTMLButtonElement & operator = (const Node &other); ~HTMLButtonElement(); /** * Returns the \c FORM element containing this * control. Returns null if this control is not within the context * of a form. * */ HTMLFormElement form() const; /** * A single character access key to give access to the form * control. See the * accesskey attribute definition in HTML 4.0. * */ DOMString accessKey() const; /** * see accessKey */ void setAccessKey( const DOMString & ); /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * Form control or object name when submitted with a form. See the * * name attribute definition in HTML 4.0. * */ DOMString name() const; /** * see name */ void setName( const DOMString & ); /** * Index that represents the element's position in the tabbing * order. See the * tabindex attribute definition in HTML 4.0. * */ long tabIndex() const; /** * see tabIndex */ void setTabIndex( long ); /** * The type of button. See the * type attribute definition in HTML 4.0. * */ DOMString type() const; /** * The current form control value. See the * value attribute definition in HTML 4.0. * */ DOMString value() const; /** * see value */ void setValue( const DOMString & ); /** * Removes keyboard focus from this element. * */ void blur ( ); /** * Gives keyboard focus to this element. * */ void focus ( ); }; // -------------------------------------------------------------------------- class HTMLFieldSetElementImpl; /** * Organizes form controls into logical groups. See the * FIELDSET element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLFieldSetElement : public HTMLElement { public: HTMLFieldSetElement(); HTMLFieldSetElement(const HTMLFieldSetElement &other); HTMLFieldSetElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLFieldSetElement(HTMLFieldSetElementImpl *impl); public: HTMLFieldSetElement & operator = (const HTMLFieldSetElement &other); HTMLFieldSetElement & operator = (const Node &other); ~HTMLFieldSetElement(); /** * ### KDE 4.0: remove. */ HTMLFormElement form() const; }; // -------------------------------------------------------------------------- class HTMLFormElementImpl; /** * The \c FORM element encompasses behavior similar to a * collection and an element. It provides direct access to the * contained input elements as well as the attributes of the form * element. See the * FORM element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLFormElement : public HTMLElement { friend class HTMLButtonElement; friend class HTMLFieldSetElement; friend class HTMLInputElement; friend class HTMLLabelElement; friend class HTMLLegendElement; friend class HTMLSelectElement; friend class HTMLTextAreaElement; friend class HTMLOptionElement; friend class HTMLIsIndexElement; friend class HTMLObjectElement; public: HTMLFormElement(); HTMLFormElement(const HTMLFormElement &other); HTMLFormElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLFormElement(HTMLFormElementImpl *impl); public: HTMLFormElement & operator = (const HTMLFormElement &other); HTMLFormElement & operator = (const Node &other); ~HTMLFormElement(); /** * Returns a collection of all control elements in the form. * */ HTMLCollection elements() const; /** * The number of form controls in the form. * */ long length() const; /** * Names the form. * */ DOMString name() const; /** * see name */ void setName( const DOMString & ); /** * List of character sets supported by the server. See the * accept-charset attribute definition in HTML 4.0. * */ DOMString acceptCharset() const; /** * see acceptCharset */ void setAcceptCharset( const DOMString & ); /** * Server-side form handler. See the * action attribute definition in HTML 4.0. * */ DOMString action() const; /** * see action */ void setAction( const DOMString & ); /** * The content type of the submitted form, generally * "application/x-www-form-urlencoded". See the * enctype attribute definition in HTML 4.0. * */ DOMString enctype() const; /** * see enctype */ void setEnctype( const DOMString & ); /** * HTTP method used to submit form. See the * method attribute definition in HTML 4.0. * */ DOMString method() const; /** * see method */ void setMethod( const DOMString & ); /** * Frame to render the resource in. See the * target attribute definition in HTML 4.0. * */ DOMString target() const; /** * see target */ void setTarget( const DOMString & ); /** * Submits the form. It performs the same action as a submit * button. * */ void submit ( ); /** * Restores a form element's default values. It performs the same * action as a reset button. * */ void reset ( ); }; // -------------------------------------------------------------------------- class HTMLInputElementImpl; /** * Form control. Note. Depending upon the environment the page is * being viewed, the value property may be read-only for the file * upload input type. For the "password" input type, the actual value * returned may be masked to prevent unauthorized use. See the * INPUT element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLInputElement : public HTMLElement { public: HTMLInputElement(); HTMLInputElement(const HTMLInputElement &other); HTMLInputElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLInputElement(HTMLInputElementImpl *impl); public: HTMLInputElement & operator = (const HTMLInputElement &other); HTMLInputElement & operator = (const Node &other); ~HTMLInputElement(); /** * Stores the initial control value (i.e., the initial value of * \c value ). * */ DOMString defaultValue() const; /** * see defaultValue */ void setDefaultValue( const DOMString & ); /** * When \c type has the value "Radio" or "Checkbox", * stores the initial value of the \c checked * attribute. * */ bool defaultChecked() const; /** * see defaultChecked */ void setDefaultChecked( bool ); /** * ### KDE 4.0: remove. */ HTMLFormElement form() const; /** * A comma-separated list of content types that a server * processing this form will handle correctly. See the * accept attribute definition in HTML 4.0. * */ DOMString accept() const; /** * see accept */ void setAccept( const DOMString & ); /** * A single character access key to give access to the form * control. See the * accesskey attribute definition in HTML 4.0. * */ DOMString accessKey() const; /** * see accessKey */ void setAccessKey( const DOMString & ); /** * Aligns this object (vertically or horizontally) with respect to * its surrounding text. 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 & ); /** * Alternate text for user agents not rendering the normal content * of this element. See the * alt attribute definition in HTML 4.0. * */ DOMString alt() const; /** * see alt */ void setAlt( const DOMString & ); /** * Describes whether a radio or check box is checked, when * \c type has the value "Radio" or "Checkbox". The value is * true if explicitly set. Represents the current state of the * checkbox or radio button. See the * checked attribute definition in HTML 4.0. * */ bool checked() const; /** * see checked */ void setChecked( bool ); /** * Describes whether a radio box is indeterminate */ bool indeterminate() const; /** * see indeterminate */ void setIndeterminate( bool ); /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * Maximum number of characters for text fields, when \c type * has the value "Text" or "Password". See the * maxlength attribute definition in HTML 4.0. * */ long maxLength() const; /** * see maxLength */ void setMaxLength( long ); /** * Form control or object name when submitted with a form. See the * * name attribute definition in HTML 4.0. * */ DOMString name() const; /** * see name */ void setName( const DOMString & ); /** * This control is read-only. When \c type has the * value "text" or "password" only. See the * readonly attribute definition in HTML 4.0. * */ bool readOnly() const; // ### remove in 4.0 /** * see readOnly */ void setReadOnly( bool ); /** * @deprecated */ DOMString size() const KDE_DEPRECATED; /** * @deprecated */ void setSize( const DOMString & ) KDE_DEPRECATED; /** * Size information. The precise meaning is specific to each type * of field. See the * size attribute definition in HTML 4.0. * */ long getSize() const; /** * see getSize */ void setSize( long ); /** * When the \c type attribute has the value "Image", * this attribute specifies the location of the image to be used * to decorate the graphical submit button. See the * src attribute definition in HTML 4.0. * */ DOMString src() const; /** * see src */ void setSrc( const DOMString & ); /** * Index that represents the element's position in the tabbing * order. See the * tabindex attribute definition in HTML 4.0. * */ long tabIndex() const; /** * see tabIndex */ void setTabIndex( long ); /** * The type of control created. See the * type attribute definition in HTML 4.0. * */ DOMString type() const; /** * see type */ void setType(const DOMString&); /** * Use client-side image map. See the * usemap attribute definition in HTML 4.0. * */ DOMString useMap() const; /** * see useMap */ void setUseMap( const DOMString & ); /** * The current form control value. Used for radio buttons and * check boxes. See the * value attribute definition in HTML 4.0. * */ DOMString value() const; /** * see value */ void setValue( const DOMString & ); /** * Removes keyboard focus from this element. * */ void blur ( ); /** * Gives keyboard focus to this element. * */ void focus ( ); /** * Select the contents of the text area. For \c INPUT * elements whose \c type attribute has one of the * following values: "Text", "File", or "Password". * */ void select ( ); /** * Simulate a mouse-click. For \c INPUT elements whose * \c type attribute has one of the following values: * "Button", "Checkbox", "Radio", "Reset", or "Submit". */ void click ( ); /** * Returns the character offset of beginning of selection, or if none, * the cursor position. * This operation is only supported if the type of this element is text; * otherwise -1 is returned. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ long selectionStart(); /** * Move the beginning of the selection to the given offset in text * This call has no effect if the type of this input element isn't text * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionStart(long offset); /** * Returns the character offset of end of selection, or if none, * the cursor position. * This operation is only supported if the type of this element is text; * otherwise -1 is returned. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ long selectionEnd(); /** * Move the end of the selection (and the cursor) to the given offset in text * This call has no effect if the type of this input element isn't text * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionEnd(long offset); /** * Makes the position span from start to end, and positions the cursor after the selection. * This call has no effect if the type of this input element isn't text or if it is not rendered. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionRange(long start, long end); }; // -------------------------------------------------------------------------- class HTMLLabelElementImpl; /** * Form field label text. See the * LABEL element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLLabelElement : public HTMLElement { public: HTMLLabelElement(); HTMLLabelElement(const HTMLLabelElement &other); HTMLLabelElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLLabelElement(HTMLLabelElementImpl *impl); public: HTMLLabelElement & operator = (const HTMLLabelElement &other); HTMLLabelElement & operator = (const Node &other); ~HTMLLabelElement(); /** * A single character access key to give access to the form * control. See the * accesskey attribute definition in HTML 4.0. * */ DOMString accessKey() const; /** * see accessKey */ void setAccessKey( const DOMString & ); /** * This attribute links this label with another form control by * \c id attribute. See the * for attribute definition in HTML 4.0. * */ DOMString htmlFor() const; /** * see htmlFor */ void setHtmlFor( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLLegendElementImpl; /** * Provides a caption for a \c FIELDSET grouping. See the * * LEGEND element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLLegendElement : public HTMLElement { public: HTMLLegendElement(); HTMLLegendElement(const HTMLLegendElement &other); HTMLLegendElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLLegendElement(HTMLLegendElementImpl *impl); public: HTMLLegendElement & operator = (const HTMLLegendElement &other); HTMLLegendElement & operator = (const Node &other); ~HTMLLegendElement(); /** * ### KDE 4.0: remove */ HTMLFormElement form() const; /** * A single character access key to give access to the form * control. See the * accesskey attribute definition in HTML 4.0. * */ DOMString accessKey() const; /** * see accessKey */ void setAccessKey( const DOMString & ); /** * Text tqalignment relative to \c FIELDSET . 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 HTMLOptGroupElementImpl; /** * Group options together in logical subdivisions. See the * OPTGROUP element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLOptGroupElement : public HTMLElement { public: HTMLOptGroupElement(); HTMLOptGroupElement(const HTMLOptGroupElement &other); HTMLOptGroupElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLOptGroupElement(HTMLOptGroupElementImpl *impl); public: HTMLOptGroupElement & operator = (const HTMLOptGroupElement &other); HTMLOptGroupElement & operator = (const Node &other); ~HTMLOptGroupElement(); /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * Assigns a label to this option group. See the * label attribute definition in HTML 4.0. * */ DOMString label() const; /** * see label */ void setLabel( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLSelectElementImpl; /** * The select element allows the selection of an option. The contained * options can be directly accessed through the select element as a * collection. See the * SELECT element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLSelectElement : public HTMLElement { public: HTMLSelectElement(); HTMLSelectElement(const HTMLSelectElement &other); HTMLSelectElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLSelectElement(HTMLSelectElementImpl *impl); public: HTMLSelectElement & operator = (const HTMLSelectElement &other); HTMLSelectElement & operator = (const Node &other); ~HTMLSelectElement(); /** * The type of control created. * */ DOMString type() const; /** * The ordinal index of the selected option. The value -1 is * returned if no element is selected. If multiple options are * selected, the index of the first selected option is returned. * */ long selectedIndex() const; /** * see selectedIndex */ void setSelectedIndex( long ); /** * The current form control value. * */ DOMString value() const; /** * see value */ void setValue( const DOMString & ); /** * The number of options in this \c SELECT . * */ long length() const; /** * ### KDE 4.0: remove. */ HTMLFormElement form() const; /** * The collection of \c OPTION elements contained by * this element. * */ HTMLCollection options() const; /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * If true, multiple \c OPTION elements may be * selected in this \c SELECT . See the * multiple attribute definition in HTML 4.0. * */ bool multiple() const; /** * see multiple */ void setMultiple( bool ); /** * Form control or object name when submitted with a form. See the * * name attribute definition in HTML 4.0. * */ DOMString name() const; /** * see name */ void setName( const DOMString & ); /** * Number of visible rows. See the * size attribute definition in HTML 4.0. * */ long size() const; /** * see size */ void setSize( long ); /** * Index that represents the element's position in the tabbing * order. See the * tabindex attribute definition in HTML 4.0. * */ long tabIndex() const; /** * see tabIndex */ void setTabIndex( long ); /** * Add a new element to the collection of \c OPTION * elements for this \c SELECT . * * @param element The element to add. * * @param before The element to insert before, or 0 for the * tail of the list. * */ void add ( const HTMLElement &element, const HTMLElement &before ); /** * Remove an element from the collection of \c OPTION * elements for this \c SELECT . Does nothing if no * element has the given index. * * @param index The index of the item to remove. * */ void remove ( long index ); /** * Removes keyboard focus from this element. * */ void blur ( ); /** * Gives keyboard focus to this element. * */ void focus ( ); }; // -------------------------------------------------------------------------- class HTMLTextAreaElementImpl; /** * Multi-line text field. See the * TEXTAREA element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLTextAreaElement : public HTMLElement { public: HTMLTextAreaElement(); HTMLTextAreaElement(const HTMLTextAreaElement &other); HTMLTextAreaElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLTextAreaElement(HTMLTextAreaElementImpl *impl); public: HTMLTextAreaElement & operator = (const HTMLTextAreaElement &other); HTMLTextAreaElement & operator = (const Node &other); ~HTMLTextAreaElement(); /** * Stores the initial control value (i.e., the initial value of * \c value ). * */ DOMString defaultValue() const; /** * see defaultValue */ void setDefaultValue( const DOMString & ); /** * ### KDE 4.0: remove. */ HTMLFormElement form() const; /** * A single character access key to give access to the form * control. See the * accesskey attribute definition in HTML 4.0. * */ DOMString accessKey() const; /** * see accessKey */ void setAccessKey( const DOMString & ); /** * Width of control (in characters). See the * cols attribute definition in HTML 4.0. * */ long cols() const; /** * see cols */ void setCols( long ); /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * Form control or object name when submitted with a form. See the * * name attribute definition in HTML 4.0. * */ DOMString name() const; /** * see name */ void setName( const DOMString & ); /** * This control is read-only. See the * readonly attribute definition in HTML 4.0. * */ bool readOnly() const; /** * see readOnly */ void setReadOnly( bool ); /** * Number of text rows. See the * rows attribute definition in HTML 4.0. * */ long rows() const; /** * see rows */ void setRows( long ); /** * Index that represents the element's position in the tabbing * order. See the * tabindex attribute definition in HTML 4.0. * */ long tabIndex() const; /** * see tabIndex */ void setTabIndex( long ); /** * The type of this form control. * */ DOMString type() const; /** * The current textual content of the multi-line text field. If * the entirety of the data can not fit into a single wstring, the * implementation may truncate the data. * */ DOMString value() const; /** * see value */ void setValue( const DOMString & ); /** * Removes keyboard focus from this element. */ void blur ( ); /** * Gives keyboard focus to this element. */ void focus ( ); /** * Select the contents of the \c TEXTAREA . */ void select ( ); /** * Returns the character offset of beginning of selection, or if none, * the cursor position. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ long selectionStart(); /** * Move the beginning of the selection to the given offset in text * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionStart(long offset); /** * Returns the character offset of end of selection, or if none, * the cursor position. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ long selectionEnd(); /** * Move the end of the selection (and the cursor) to the given offset in text * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionEnd(long offset); /** * Selects the text from start to end, and positions the cursor after the selection. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ void setSelectionRange(long start, long end); /** * Returns the length of the text. * NOTE: this method is not part of the DOM, but a Mozilla extension * @since 3.5.2 */ long textLength(); }; // -------------------------------------------------------------------------- class HTMLOptionElementImpl; /** * A selectable choice. See the * OPTION element definition in HTML 4.0. * */ class KHTML_EXPORT HTMLOptionElement : public HTMLElement { public: HTMLOptionElement(); HTMLOptionElement(const HTMLOptionElement &other); HTMLOptionElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLOptionElement(HTMLOptionElementImpl *impl); public: HTMLOptionElement & operator = (const HTMLOptionElement &other); HTMLOptionElement & operator = (const Node &other); ~HTMLOptionElement(); /** * ### KDE 4.0: remove */ HTMLFormElement form() const; /** * Stores the initial value of the \c selected * attribute. * */ bool defaultSelected() const; /** * see defaultSelected */ void setDefaultSelected( bool ); /** * The text contained within the option element. * */ DOMString text() const; /** * The index of this \c OPTION in its parent * \c SELECT . * */ long index() const; /** * see index * * This function is obsolete - the index property is actually supposed to be read-only * (http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) */ void setIndex( long ); /** * The control is unavailable in this context. See the * disabled attribute definition in HTML 4.0. * */ bool disabled() const; /** * see disabled */ void setDisabled( bool ); /** * Option label for use in hierarchical menus. See the * label attribute definition in HTML 4.0. * */ DOMString label() const; /** * see label */ void setLabel( const DOMString & ); /** * Means that this option is initially selected. See the * selected attribute definition in HTML 4.0. * */ bool selected() const; /** * see selected */ void setSelected( bool ); /** * The current form control value. See the * value attribute definition in HTML 4.0. * */ DOMString value() const; /** * see value */ void setValue( const DOMString & ); }; // -------------------------------------------------------------------------- class HTMLIsIndexElementImpl; class HTMLFormElement; /** * This element is used for single-line text input. See the * ISINDEX element definition in HTML 4.0. This element is * deprecated in HTML 4.0. * */ class KHTML_EXPORT HTMLIsIndexElement : public HTMLElement { public: HTMLIsIndexElement(); HTMLIsIndexElement(const HTMLIsIndexElement &other); HTMLIsIndexElement(const Node &other) : HTMLElement() {(*this)=other;} protected: HTMLIsIndexElement(HTMLIsIndexElementImpl *impl); public: HTMLIsIndexElement & operator = (const HTMLIsIndexElement &other); HTMLIsIndexElement & operator = (const Node &other); ~HTMLIsIndexElement(); /** * ### KDE 4.0: remove */ HTMLFormElement form() const; /** * The prompt message. See the * prompt attribute definition in HTML 4.0. This attribute is * deprecated in HTML 4.0. * */ DOMString prompt() const; /** * see prompt */ void setPrompt( const DOMString & ); }; } //namespace #endif