accessible/src/xul/XULListboxAccessible.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/accessible/src/xul/XULListboxAccessible.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,189 @@
     1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +#ifndef mozilla_a11y_XULListboxAccessible_h__
    1.10 +#define mozilla_a11y_XULListboxAccessible_h__
    1.11 +
    1.12 +#include "BaseAccessibles.h"
    1.13 +#include "nsIAccessibleTable.h"
    1.14 +#include "TableAccessible.h"
    1.15 +#include "TableCellAccessible.h"
    1.16 +#include "xpcAccessibleTable.h"
    1.17 +#include "xpcAccessibleTableCell.h"
    1.18 +#include "XULMenuAccessible.h"
    1.19 +#include "XULSelectControlAccessible.h"
    1.20 +
    1.21 +class nsIWeakReference;
    1.22 +
    1.23 +namespace mozilla {
    1.24 +namespace a11y {
    1.25 +
    1.26 +/**
    1.27 + * XULColumAccessible are accessible for list and tree columns elements
    1.28 + * (xul:treecols and xul:listcols).
    1.29 + */
    1.30 +class XULColumAccessible : public AccessibleWrap
    1.31 +{
    1.32 +public:
    1.33 +  XULColumAccessible(nsIContent* aContent, DocAccessible* aDoc);
    1.34 +
    1.35 +  // Accessible
    1.36 +  virtual a11y::role NativeRole();
    1.37 +  virtual uint64_t NativeState();
    1.38 +};
    1.39 +
    1.40 +/**
    1.41 + * XULColumnItemAccessible are accessibles for list and tree column elements
    1.42 + * (xul:listcol and xul:treecol).
    1.43 + */
    1.44 +class XULColumnItemAccessible : public LeafAccessible
    1.45 +{
    1.46 +public:
    1.47 +  XULColumnItemAccessible(nsIContent* aContent, DocAccessible* aDoc);
    1.48 +
    1.49 +  // nsIAccessible
    1.50 +  NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
    1.51 +  NS_IMETHOD DoAction(uint8_t aIndex);
    1.52 +
    1.53 +  // Accessible
    1.54 +  virtual a11y::role NativeRole();
    1.55 +  virtual uint64_t NativeState();
    1.56 +
    1.57 +  // ActionAccessible
    1.58 +  virtual uint8_t ActionCount();
    1.59 +
    1.60 +  enum { eAction_Click = 0 };
    1.61 +};
    1.62 +
    1.63 +/*
    1.64 + * A class the represents the XUL Listbox widget.
    1.65 + */
    1.66 +class XULListboxAccessible : public XULSelectControlAccessible,
    1.67 +                             public xpcAccessibleTable,
    1.68 +                             public nsIAccessibleTable,
    1.69 +                             public TableAccessible
    1.70 +{
    1.71 +public:
    1.72 +  XULListboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
    1.73 +  virtual ~XULListboxAccessible() {}
    1.74 +
    1.75 +  NS_DECL_ISUPPORTS_INHERITED
    1.76 +
    1.77 +  // nsIAccessibleTable
    1.78 +  NS_FORWARD_NSIACCESSIBLETABLE(xpcAccessibleTable::)
    1.79 +
    1.80 +  // TableAccessible
    1.81 +  virtual uint32_t ColCount();
    1.82 +  virtual uint32_t RowCount();
    1.83 +  virtual Accessible* CellAt(uint32_t aRowIndex, uint32_t aColumnIndex);
    1.84 +  virtual bool IsColSelected(uint32_t aColIdx);
    1.85 +  virtual bool IsRowSelected(uint32_t aRowIdx);
    1.86 +  virtual bool IsCellSelected(uint32_t aRowIdx, uint32_t aColIdx);
    1.87 +  virtual uint32_t SelectedCellCount();
    1.88 +  virtual uint32_t SelectedColCount();
    1.89 +  virtual uint32_t SelectedRowCount();
    1.90 +  virtual void SelectedCells(nsTArray<Accessible*>* aCells);
    1.91 +  virtual void SelectedCellIndices(nsTArray<uint32_t>* aCells);
    1.92 +  virtual void SelectedColIndices(nsTArray<uint32_t>* aCols);
    1.93 +  virtual void SelectedRowIndices(nsTArray<uint32_t>* aRows);
    1.94 +  virtual void SelectRow(uint32_t aRowIdx);
    1.95 +  virtual void UnselectRow(uint32_t aRowIdx);
    1.96 +  virtual Accessible* AsAccessible() { return this; }
    1.97 +
    1.98 +  // Accessible
    1.99 +  virtual void Shutdown();
   1.100 +  virtual void Value(nsString& aValue);
   1.101 +  virtual TableAccessible* AsTable() { return this; }
   1.102 +  virtual a11y::role NativeRole();
   1.103 +  virtual uint64_t NativeState();
   1.104 +
   1.105 +  // Widgets
   1.106 +  virtual bool IsWidget() const;
   1.107 +  virtual bool IsActiveWidget() const;
   1.108 +  virtual bool AreItemsOperable() const;
   1.109 +
   1.110 +  virtual Accessible* ContainerWidget() const;
   1.111 +
   1.112 +protected:
   1.113 +  bool IsMulticolumn();
   1.114 +};
   1.115 +
   1.116 +/**
   1.117 +  * Listitems -- used in listboxes
   1.118 +  */
   1.119 +class XULListitemAccessible : public XULMenuitemAccessible
   1.120 +{
   1.121 +public:
   1.122 +  enum { eAction_Click = 0 };
   1.123 +
   1.124 +  NS_DECL_ISUPPORTS_INHERITED
   1.125 +
   1.126 +  XULListitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
   1.127 +  virtual ~XULListitemAccessible() {}
   1.128 +
   1.129 +  // nsIAccessible
   1.130 +  NS_IMETHOD GetActionName(uint8_t index, nsAString& aName);
   1.131 +  // Don't use XUL menuitems's description attribute
   1.132 +
   1.133 +  // Accessible
   1.134 +  virtual void Description(nsString& aDesc);
   1.135 +  virtual a11y::role NativeRole();
   1.136 +  virtual uint64_t NativeState();
   1.137 +  virtual uint64_t NativeInteractiveState() const;
   1.138 +  virtual bool CanHaveAnonChildren();
   1.139 +
   1.140 +  // Widgets
   1.141 +  virtual Accessible* ContainerWidget() const;
   1.142 +
   1.143 +protected:
   1.144 +  // Accessible
   1.145 +  virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
   1.146 +
   1.147 +  // XULListitemAccessible
   1.148 +
   1.149 +  /**
   1.150 +   * Return listbox accessible for the listitem.
   1.151 +   */
   1.152 +  Accessible* GetListAccessible();
   1.153 +
   1.154 +private:
   1.155 +  bool mIsCheckbox;
   1.156 +};
   1.157 +
   1.158 +/**
   1.159 + * Class represents xul:listcell.
   1.160 + */
   1.161 +class XULListCellAccessible : public HyperTextAccessibleWrap,
   1.162 +                              public nsIAccessibleTableCell,
   1.163 +                              public TableCellAccessible,
   1.164 +                              public xpcAccessibleTableCell
   1.165 +{
   1.166 +public:
   1.167 +  XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
   1.168 +
   1.169 +  // nsISupports
   1.170 +  NS_DECL_ISUPPORTS_INHERITED
   1.171 +
   1.172 +  // nsIAccessibleTableCell
   1.173 +  NS_FORWARD_NSIACCESSIBLETABLECELL(xpcAccessibleTableCell::)
   1.174 +
   1.175 +  // Accessible
   1.176 +  virtual TableCellAccessible* AsTableCell() { return this; }
   1.177 +  virtual void Shutdown();
   1.178 +  virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
   1.179 +  virtual a11y::role NativeRole();
   1.180 +
   1.181 +  // TableCellAccessible
   1.182 +  virtual TableAccessible* Table() const MOZ_OVERRIDE;
   1.183 +  virtual uint32_t ColIdx() const MOZ_OVERRIDE;
   1.184 +  virtual uint32_t RowIdx() const MOZ_OVERRIDE;
   1.185 +  virtual void ColHeaderCells(nsTArray<Accessible*>* aHeaderCells) MOZ_OVERRIDE;
   1.186 +  virtual bool Selected() MOZ_OVERRIDE;
   1.187 +};
   1.188 +
   1.189 +} // namespace a11y
   1.190 +} // namespace mozilla
   1.191 +
   1.192 +#endif

mercurial