The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.5KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library.
  4. Copyright (c) 2022 - Raw Material Software Limited
  5. JUCE is an open source library subject to commercial or open-source
  6. licensing.
  7. By using JUCE, you agree to the terms of both the JUCE 7 End-User License
  8. Agreement and JUCE Privacy Policy.
  9. End User License Agreement: www.juce.com/juce-7-licence
  10. Privacy Policy: www.juce.com/juce-privacy-policy
  11. Or: You may also use this code under the terms of the GPL v3 (see
  12. www.gnu.org/licenses).
  13. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  14. EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  15. DISCLAIMED.
  16. ==============================================================================
  17. */
  18. namespace juce
  19. {
  20. /** An abstract interface which represents a UI element that supports a table interface.
  21. Examples of UI elements which typically support a table interface are lists, tables,
  22. and trees.
  23. @tags{Accessibility}
  24. */
  25. class JUCE_API AccessibilityTableInterface
  26. {
  27. public:
  28. /** Destructor. */
  29. virtual ~AccessibilityTableInterface() = default;
  30. /** Returns the total number of rows in the table. */
  31. virtual int getNumRows() const = 0;
  32. /** Returns the total number of columns in the table. */
  33. virtual int getNumColumns() const = 0;
  34. /** Returns the AccessibilityHandler for one of the cells in the table, or
  35. nullptr if there is no cell at the specified position.
  36. */
  37. virtual const AccessibilityHandler* getCellHandler (int row, int column) const = 0;
  38. /** Returns the AccessibilityHandler for a row in the table, or nullptr if there is
  39. no row at this index.
  40. The row component should have a child component for each column in the table.
  41. */
  42. virtual const AccessibilityHandler* getRowHandler (int row) const = 0;
  43. /** Returns the AccessibilityHandler for the header, or nullptr if there is
  44. no header.
  45. If you supply a header, it must have exactly the same number of children
  46. as there are columns in the table.
  47. */
  48. virtual const AccessibilityHandler* getHeaderHandler() const = 0;
  49. struct Span { int begin, num; };
  50. /** Given the handler of one of the cells in the table, returns the rows covered
  51. by that cell, or null if the cell does not exist in the table.
  52. This function replaces the getRowIndex and getRowSpan
  53. functions from AccessibilityCellInterface. Most of the time, it's easier for the
  54. table itself to keep track of cell locations, than to delegate to the individual
  55. cells.
  56. */
  57. virtual Optional<Span> getRowSpan (const AccessibilityHandler&) const = 0;
  58. /** Given the handler of one of the cells in the table, returns the columns covered
  59. by that cell, or null if the cell does not exist in the table.
  60. This function replaces the getColumnIndex and getColumnSpan
  61. functions from AccessibilityCellInterface. Most of the time, it's easier for the
  62. table itself to keep track of cell locations, than to delegate to the individual
  63. cells.
  64. */
  65. virtual Optional<Span> getColumnSpan (const AccessibilityHandler&) const = 0;
  66. /** Attempts to scroll the table (if necessary) so that the cell with the given handler
  67. is visible.
  68. */
  69. virtual void showCell (const AccessibilityHandler&) const = 0;
  70. };
  71. } // namespace juce