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   class HTMLElement : public DOMElement {
00057   public:
00058     HTMLElement(ExecState *exec, const DOM::HTMLElement& e) : DOMElement(exec, e) { }
00059     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00060     Value getValueProperty(ExecState *exec, int token) const;
00061     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00062     void putValueProperty(ExecState *exec, int token, const Value& value, int);
00063     virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00064     virtual UString toString(ExecState *exec) const;
00065     virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const;
00066     virtual const ClassInfo* classInfo() const;
00067     static const ClassInfo info;
00068 
00069     static const ClassInfo html_info, head_info, link_info, title_info,
00070       meta_info, base_info, isIndex_info, style_info, body_info, form_info,
00071       select_info, optGroup_info, option_info, input_info, textArea_info,
00072       button_info, label_info, fieldSet_info, legend_info, ul_info, ol_info,
00073       dl_info, dir_info, menu_info, li_info, div_info, p_info, heading_info,
00074       blockQuote_info, q_info, pre_info, br_info, baseFont_info, font_info,
00075       hr_info, mod_info, a_info, img_info, object_info, param_info,
00076       applet_info, map_info, area_info, script_info, table_info,
00077       caption_info, col_info, tablesection_info, tr_info,
00078       tablecell_info, frameSet_info, frame_info, iFrame_info, marquee_info, layer_info;
00079 
00080     enum { HtmlVersion, HeadProfile, LinkHref, LinkRel, LinkMedia,
00081            LinkCharset, LinkDisabled, LinkHrefLang, LinkRev, LinkTarget, LinkType,
00082            LinkSheet, TitleText, MetaName, MetaHttpEquiv, MetaContent, MetaScheme,
00083            BaseHref, BaseTarget, IsIndexForm, IsIndexPrompt, StyleDisabled,
00084            StyleSheet, StyleType, StyleMedia, BodyBackground, BodyVLink, BodyText,
00085            BodyLink, BodyALink, BodyBgColor,  BodyScrollLeft, BodyScrollTop,
00086            BodyScrollHeight, BodyScrollWidth, BodyOnLoad,
00087            FormAction, FormEncType, FormElements, FormLength, FormAcceptCharset,
00088            FormReset, FormTarget, FormName, FormMethod, FormSubmit, SelectAdd,
00089            SelectTabIndex, SelectValue, SelectSelectedIndex, SelectLength,
00090            SelectRemove, SelectForm, SelectBlur, SelectType, SelectOptions,
00091            SelectDisabled, SelectMultiple, SelectName, SelectSize, SelectFocus,
00092            OptGroupDisabled, OptGroupLabel, OptionIndex, OptionSelected,
00093            OptionForm, OptionText, OptionDefaultSelected, OptionDisabled,
00094            OptionLabel, OptionValue, InputBlur, InputReadOnly, InputAccept,
00095            InputSize, InputDefaultValue, InputTabIndex, InputValue, InputType,
00096            InputFocus, InputMaxLength, InputDefaultChecked, InputDisabled,
00097            InputChecked, InputForm, InputAccessKey, InputAlign, InputAlt,
00098            InputName, InputSrc, InputUseMap, InputSelect, InputClick,
00099            TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect,
00100            TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType,
00101            TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue,
00102            TextAreaBlur, TextAreaFocus, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName,
00103            ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor,
00104            LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey,
00105            LegendAlign, UListType, UListCompact, OListStart, OListCompact,
00106            OListType, DListCompact, DirectoryCompact, MenuCompact, LIType,
00107            LIValue, DivAlign, ParagraphAlign, HeadingAlign, BlockQuoteCite,
00108            QuoteCite, PreWidth, BRClear, BaseFontColor, BaseFontSize,
00109            BaseFontFace, FontColor, FontSize, FontFace, HRWidth, HRNoShade,
00110            HRAlign, HRSize, ModCite, ModDateTime, AnchorShape, AnchorRel,
00111            AnchorAccessKey, AnchorCoords, AnchorHref, AnchorProtocol, AnchorHost,
00112            AnchorCharset, AnchorHrefLang, AnchorHostname, AnchorType, AnchorFocus,
00113            AnchorPort, AnchorPathName, AnchorHash, AnchorSearch, AnchorName,
00114            AnchorRev, AnchorTabIndex, AnchorTarget, AnchorText, AnchorBlur, AnchorClick, 
00115            ImageName, ImageAlign, ImageHspace, ImageVspace, ImageUseMap, ImageAlt,
00116            ImageLowSrc, ImageWidth, ImageIsMap, ImageBorder, ImageHeight,
00117            ImageLongDesc, ImageSrc, ImageX, ImageY, ImageComplete, ObjectHspace, ObjectHeight, ObjectAlign,
00118            ObjectBorder, ObjectCode, ObjectType, ObjectVspace, ObjectArchive,
00119            ObjectDeclare, ObjectForm, ObjectCodeBase, ObjectCodeType, ObjectData,
00120            ObjectName, ObjectStandby, ObjectTabIndex, ObjectUseMap, ObjectWidth, ObjectContentDocument,
00121            ParamName, ParamType, ParamValueType, ParamValue, AppletArchive,
00122            AppletAlt, AppletCode, AppletWidth, AppletAlign, AppletCodeBase,
00123            AppletName, AppletHeight, AppletHspace, AppletObject, AppletVspace,
00124            MapAreas, MapName, AreaHash, AreaHref, AreaTarget, AreaPort, AreaShape,
00125            AreaCoords, AreaAlt, AreaAccessKey, AreaNoHref, AreaHost, AreaProtocol,
00126            AreaHostName, AreaPathName, AreaSearch, AreaTabIndex, ScriptEvent,
00127            ScriptType, ScriptHtmlFor, ScriptText, ScriptSrc, ScriptCharset,
00128            ScriptDefer, TableSummary, TableTBodies, TableTHead, TableCellPadding,
00129            TableDeleteCaption, TableCreateCaption, TableCaption, TableWidth,
00130            TableCreateTFoot, TableAlign, TableTFoot, TableDeleteRow,
00131            TableCellSpacing, TableRows, TableBgColor, TableBorder, TableFrame,
00132            TableRules, TableCreateTHead, TableDeleteTHead, TableDeleteTFoot,
00133            TableInsertRow, TableCaptionAlign, TableColCh, TableColChOff,
00134            TableColAlign, TableColSpan, TableColVAlign, TableColWidth,
00135            TableSectionCh, TableSectionDeleteRow, TableSectionChOff,
00136            TableSectionRows, TableSectionAlign, TableSectionVAlign,
00137            TableSectionInsertRow, TableRowSectionRowIndex, TableRowRowIndex,
00138            TableRowChOff, TableRowCells, TableRowVAlign, TableRowCh,
00139            TableRowAlign, TableRowBgColor, TableRowDeleteCell, TableRowInsertCell,
00140            TableCellColSpan, TableCellNoWrap, TableCellAbbr, TableCellHeight,
00141            TableCellWidth, TableCellCellIndex, TableCellChOff, TableCellBgColor,
00142            TableCellCh, TableCellVAlign, TableCellRowSpan, TableCellHeaders,
00143            TableCellAlign, TableCellAxis, TableCellScope, FrameSetCols,
00144            FrameSetRows, FrameSrc, FrameLocation, FrameFrameBorder, FrameScrolling,
00145            FrameMarginWidth, FrameLongDesc, FrameMarginHeight, FrameName,
00146            FrameContentDocument, FrameContentWindow,
00147            FrameNoResize, IFrameLongDesc, IFrameAlign,
00148            IFrameFrameBorder, IFrameSrc, IFrameName, IFrameHeight,
00149            IFrameMarginHeight, IFrameMarginWidth, IFrameScrolling, IFrameWidth,
00150            IFrameContentDocument, IFrameContentWindow,
00151            MarqueeStart, MarqueeStop,
00152            LayerTop, LayerLeft, LayerVisibility, LayerBgColor, LayerClip, LayerDocument, LayerLayers,
00153            ElementInnerHTML, ElementTitle, ElementId, ElementDir, ElementLang,
00154            ElementClassName, ElementInnerText, ElementDocument, ElementChildren, ElementAll };
00155 
00156     DOM::HTMLElement toElement() const { return static_cast<DOM::HTMLElement>(node); }
00157   };
00158 
00159 
00160   class HTMLElementFunction : public DOMFunction {
00161   public:
00162     HTMLElementFunction(ExecState *exec, int i, int len);
00163     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00164   private:
00165     int id;
00166   };
00167 
00168   class HTMLCollection : public DOMObject {
00169   public:
00170     HTMLCollection(ExecState *exec, const DOM::HTMLCollection& c);
00171     ~HTMLCollection();
00172     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00173     virtual Value call(ExecState *exec, Object &thisObj, const List&args);
00174     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
00175     virtual bool implementsCall() const { return true; }
00176     virtual bool toBoolean(ExecState *) const;
00177     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
00178     enum { Item, NamedItem, Tags };
00179     Value getNamedItems(ExecState *exec, const Identifier &propertyName) const;
00180     virtual const ClassInfo* classInfo() const { return &info; }
00181     static const ClassInfo info;
00182     DOM::HTMLCollection toCollection() const { return collection; }
00183     virtual void hide() { hidden = true; }
00184   protected:
00185     DOM::HTMLCollection collection;
00186     bool hidden;
00187   };
00188 
00189   class HTMLSelectCollection : public HTMLCollection {
00190   public:
00191     HTMLSelectCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e)
00192       : HTMLCollection(exec, c), element(e) { }
00193     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00194     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00195   private:
00196     DOM::HTMLSelectElement element;
00197   };
00198 
00200 
00201   class OptionConstructorImp : public ObjectImp {
00202   public:
00203     OptionConstructorImp(ExecState *exec, const DOM::Document &d);
00204     virtual bool implementsConstruct() const;
00205     virtual Object construct(ExecState *exec, const List &args);
00206   private:
00207     DOM::Document doc;
00208   };
00209 
00211 
00212   class ImageConstructorImp : public ObjectImp {
00213   public:
00214     ImageConstructorImp(ExecState *exec, const DOM::Document &d);
00215     virtual bool implementsConstruct() const;
00216     virtual Object construct(ExecState *exec, const List &args);
00217   private:
00218     DOM::Document doc;
00219   };
00220 
00221   Value getHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, bool hide=false);
00222   Value getSelectHTMLCollection(ExecState *exec, const DOM::HTMLCollection& c, const DOM::HTMLSelectElement& e);
00223 } // namespace
00224 
00225 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys