michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef mozilla_a11y_XULTabAccessible_h__ michael@0: #define mozilla_a11y_XULTabAccessible_h__ michael@0: michael@0: // NOTE: alphabetically ordered michael@0: #include "XULMenuAccessible.h" michael@0: #include "XULSelectControlAccessible.h" michael@0: michael@0: namespace mozilla { michael@0: namespace a11y { michael@0: michael@0: /** michael@0: * An individual tab, xul:tab element. michael@0: */ michael@0: class XULTabAccessible : public AccessibleWrap michael@0: { michael@0: public: michael@0: enum { eAction_Switch = 0 }; michael@0: michael@0: XULTabAccessible(nsIContent* aContent, DocAccessible* aDoc); michael@0: michael@0: // nsIAccessible michael@0: NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName); michael@0: NS_IMETHOD DoAction(uint8_t index); michael@0: michael@0: // Accessible michael@0: virtual a11y::role NativeRole(); michael@0: virtual uint64_t NativeState(); michael@0: virtual uint64_t NativeInteractiveState() const; michael@0: virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE; michael@0: michael@0: // ActionAccessible michael@0: virtual uint8_t ActionCount(); michael@0: }; michael@0: michael@0: michael@0: /** michael@0: * A container of tab objects, xul:tabs element. michael@0: */ michael@0: class XULTabsAccessible : public XULSelectControlAccessible michael@0: { michael@0: public: michael@0: XULTabsAccessible(nsIContent* aContent, DocAccessible* aDoc); michael@0: michael@0: // Accessible michael@0: virtual void Value(nsString& aValue); michael@0: virtual a11y::role NativeRole(); michael@0: michael@0: // ActionAccessible michael@0: virtual uint8_t ActionCount(); michael@0: michael@0: protected: michael@0: // Accessible michael@0: virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE; michael@0: }; michael@0: michael@0: michael@0: /** michael@0: * A container of tab panels, xul:tabpanels element. michael@0: */ michael@0: class XULTabpanelsAccessible : public AccessibleWrap michael@0: { michael@0: public: michael@0: XULTabpanelsAccessible(nsIContent* aContent, DocAccessible* aDoc) : michael@0: AccessibleWrap(aContent, aDoc) michael@0: { mType = eXULTabpanelsType; } michael@0: michael@0: // Accessible michael@0: virtual a11y::role NativeRole(); michael@0: }; michael@0: michael@0: michael@0: /** michael@0: * A tabpanel object, child elements of xul:tabpanels element. michael@0: * michael@0: * XXX: we need to move the class logic into generic class since michael@0: * for example we do not create instance of this class for XUL textbox used as michael@0: * a tabpanel. michael@0: */ michael@0: class XULTabpanelAccessible : public AccessibleWrap michael@0: { michael@0: public: michael@0: XULTabpanelAccessible(nsIContent* aContent, DocAccessible* aDoc); michael@0: michael@0: // Accessible michael@0: virtual a11y::role NativeRole(); michael@0: virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE; michael@0: }; michael@0: michael@0: } // namespace a11y michael@0: } // namespace mozilla michael@0: michael@0: #endif michael@0: