kjs_html.h

00001 // -*- c-basic-offset: 2 -*-
00002 /*
00003  *  This file is part of the KDE libraries
00004  *  Copyright (C) 1999 Harri Porten (porten@kde.org)
00005  *  Copyright (C) 2003 Apple Computer, Inc.
00006  *
00007  *  This library is free software; you can redistribute it and/or
00008  *  modify it under the terms of the GNU Library General Public
00009  *  License as published by the Free Software Foundation; either
00010  *  version 2 of the License, or (at your option) any later version.
00011  *
00012  *  This library is distributed in the hope that it will be useful,
00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015  *  Library General Public License for more details.
00016  *
00017  *  You should have received a copy of the GNU Library General Public
00018  *  License along with this library; if not, write to the Free Software
00019  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00020  */
00021 
00022 #ifndef _KJS_HTML_H_
00023 #define _KJS_HTML_H_
00024 
00025 #include "dom/html_document.h"
00026 #include "dom/html_base.h"
00027 #include "dom/html_misc.h"
00028 #include "dom/html_form.h"
00029 #include "misc/loader_client.h"
00030 
00031 #include "ecma/kjs_binding.h"
00032 #include "ecma/kjs_dom.h"
00033 #include "xml/dom_nodeimpl.h"  // for NodeImpl::Id
00034 
00035 namespace KJS {
00036 
00037   class HTMLElement;
00038 
00039   class HTMLDocument : public DOMDocument {
00040   public:
00041     HTMLDocument(ExecState *exec, const DOM::HTMLDocument& d);
00042     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00043     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00044     void putValueProperty(ExecState *exec, int token, const Value& value, int /*attr*/);
00045     virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00046     virtual const ClassInfo* classInfo() const { return &info; }
00047     static const ClassInfo info;
00048     enum { Title, Referrer, Domain, URL, Body, Location, Cookie,
00049            Images, Applets, Links, Forms, Layers, Anchors, Scripts, All, Clear, Open, Close,
00050            Write, WriteLn, GetElementsByName, GetSelection, CaptureEvents, ReleaseEvents,
00051            BgColor, FgColor, AlinkColor, LinkColor, VlinkColor, LastModified,
00052            Height, Width, Dir, Frames, CompatMode };
00053     DOM::Document toDocument() const { return static_cast<DOM::Document>( node ); }
00054   };
00055 
00056   DEFINE_PSEUDO_CONSTRUCTOR(HTMLDocumentPseudoCtor)
00057 
00058   class HTMLElement : public DOMElement {
00059   public:
00060     HTMLElement(ExecState *exec, const DOM::HTMLElement& e) : DOMElement(exec, e) { }
00061     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00062     Value getValueProperty(ExecState *exec, int token) const;
00063     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00064     void putValueProperty(ExecState *exec, int token, const Value& value, int);
00065     virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00066     virtual UString toString(ExecState *exec) const;
00067     virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const;
00068     virtual const ClassInfo* classInfo() const;
00069     static const ClassInfo info;
00070 
00071     static const ClassInfo html_info, head_info, link_info, title_info,
00072       meta_info, base_info, isIndex_info, style_info, body_info, form_info,
00073       select_info, optGroup_info, option_info, input_info, textArea_info,
00074       button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info,
00075       dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info,
00076       blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info,
00077       hr_info, mod_info, a_info, img_info, object_info, param_info,
00078       applet_info, map_info, area_info, script_info, table_info,
00079       caption_info, col_info, tablesection_info, tr_info,
00080       tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info;
00081 
00082     enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia,
00083            LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType,
00084            LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme,
00085            BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled,
00086            StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText,
00087            BodyLink, BodyALink, BodyBgColor,  BodyOnLoad,
00088            FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset,
00089            FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd,
00090            SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength,
00091            SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions,
00092            SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus,
00093            OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected,
00094            OptionForm, OptionText, OptionDefaultSelected, OptionDisabled,
00095            OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept,
00096            InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType,
00097            InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled,
00098            InputChecked, InputIndeterminate, InputForm, InputAccessKey, InputAlign, InputAlt,
00099            InputName, InputSrc, InputUseMap, InputSelect, InputClick,
00100            InputSelectionStart, InputSelectionEnd, InputSetSelectionRange,
00101            TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect,
00102            TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType,
00103            TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue,
00104            TextAreaBlur, TextAreaFocus, TextAreaSelectionStart, TextAreaSelectionEnd, TextAreaSetSelectionRange,
00105            TextAreaTextLength, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName,
00106            ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor,
00107            LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey,
00108            LegendAlign, UListType, UListCompact, OListStart, OListCompact,
00109            OListType, DListCompact, DirectoryCompact, MenuCompact, LIType,
00110            LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite,
00111            QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize,
00112            BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade,
00113            HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel,
00114            AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost,
00115            AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus,
00116            AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName,
00117            AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, AnchorClick,
00118            ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt,
00119            ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight,
00120            ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign,
00121            ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive,
00122            ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData,
00123            ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument,
00124            ParamName, ParamType, ParamValueType, ParamValue, AppletArchive,
00125            AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase,
00126            AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace,
00127            MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape,
00128            AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol,
00129            AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent,
00130            ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset,
00131            ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding,
00132            TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth,
00133            TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow,
00134            TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame,
00135            TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot,
00136            TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff,
00137            TableColAlign, TableColSpan, TableColVAlign, TableColWidth,
00138            TableSectionCh, TableSectionDeleteRow, TableSectionChOff,
00139            TableSectionRows, TableSectionAlign, TableSectionVAlign,
00140            TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex,
00141            TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh,
00142            TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell,
00143            TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight,
00144            TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor,
00145            TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders,
00146            TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols,
00147            FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling,
00148            FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName,
00149            FrameContentDocument, FrameContentWindow,
00150            FrameNoResize, FrameWidth, FrameHeight, IFrameLongDesc, IFrameAlign,
00151            IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
00152            IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth,
00153            IFrameContentDocument, IFrameContentWindow,
00154            MarqueeStart, MarqueeStop,
00155            LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers,
00156            ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang,
00157            ElementClassName, ElementInnerText, ElementDocument,
00158        ElementChildren, ElementAll, ElementScrollIntoView };
00159 
00160     DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); }
00161   };
00162 
00163 
00164   class HTMLElementFunction : public DOMFunction {
00165   public:
00166     HTMLElementFunction(ExecState *exec, int i, int len);
00167     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00168   private:
00169     int id;
00170   };
00171 
00172   class HTMLCollection : public DOMObject {
00173   public:
00174     HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c);
00175     ~HTMLCollection();
00176     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00177     virtual Value call(ExecState *exec, Object &thisObj, const List&args);
00178     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00179     virtual bool implementsCall() const { return true; }
00180     virtual bool toBoolean(ExecState *) const;
00181     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
00182     virtual ReferenceList propList(ExecState *exec, bool recursive);
00183     enum { Item, NamedItem, Tags };
00184     Value getNamedItems(ExecState *exec, const Identifier &propertyName) const;
00185     virtual const ClassInfo* classInfo() const { return &info; }
00186     static const ClassInfo info;
00187     DOM::HTMLCollection toCollection() const { return collection; }
00188     virtual void hide() { hidden = true; }
00189   protected:
00190     DOM::HTMLCollection collection;
00191     bool hidden;
00192   };
00193 
00194   class HTMLSelectCollection : public HTMLCollection {
00195   public:
00196     HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e)
00197       : HTMLCollection(exec, c), element(e) { }
00198     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00199     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00200   private:
00201     DOM::HTMLSelectElement element;
00202   };
00203 
00205 
00206   class OptionConstructorImp : public ObjectImp {
00207   public:
00208     OptionConstructorImp(ExecState *exec, const DOM::Document &d);
00209     virtual bool implementsConstruct() const;
00210     virtual Object construct(ExecState *exec, const List &args);
00211   private:
00212     DOM::Document doc;
00213   };
00214 
00216 
00217   class ImageConstructorImp : public ObjectImp {
00218   public:
00219     ImageConstructorImp(ExecState *exec, const DOM::Document &d);
00220     virtual bool implementsConstruct() const;
00221     virtual Object construct(ExecState *exec, const List &args);
00222   private:
00223     DOM::Document doc;
00224   };
00225 
00226   Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false);
00227   Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e);
00228 } // namespace
00229 
00230 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys