summaryrefslogtreecommitdiffstats
path: root/dom/chrome-webidl/XULTreeElement.webidl
blob: df9dc6a0f9e242d7a26cdc675e0f844c3e4c6c41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/.
 */

interface MozTreeView;

dictionary TreeCellInfo {
    long row = 0;
    TreeColumn? col = null;
    DOMString childElt = "";
};

[ChromeOnly,
 Exposed=Window]
interface XULTreeElement : XULElement
{
  [HTMLConstructor] constructor();

  /**
   * Obtain the columns.
   */
  readonly attribute TreeColumns? columns;

  /**
   * The view that backs the tree and that supplies it with its data.
   * It is dynamically settable, either using a view attribute on the
   * tree tag or by setting this attribute to a new value.
   */
  [SetterThrows, NeedsCallerType]
  attribute MozTreeView? view;

  /**
   * Whether or not we are currently focused.
   */
  attribute boolean focused;

  /**
   * Obtain the treebody content node
   */
  readonly attribute Element? treeBody;

  /**
   * Obtain the height of a row.
   */
  readonly attribute long rowHeight;

  /**
   * Obtain the width of a row.
   */
  readonly attribute long rowWidth;

  /**
   * Get the pixel position of the horizontal scrollbar.
   */
  readonly attribute long horizontalPosition;

  /**
   * Get the index of the first visible row.
   */
  long getFirstVisibleRow();

  /**
   * Get the index of the last visible row.
   */
  long getLastVisibleRow();

  /**
   * Gets the number of possible visible rows.
   */
  long getPageLength();

  /**
   * Ensures that a row at a given index is visible.
   */
  undefined ensureRowIsVisible(long index);

  /**
   * Ensures that a given cell in the tree is visible.
   */
  [Throws]
  undefined ensureCellIsVisible(long row, TreeColumn? col);

  /**
   * Scrolls such that the row at index is at the top of the visible view.
   */
  undefined scrollToRow(long index);

  /**
   * Scroll the tree up or down by numLines lines. Positive
   * values move down in the tree. Prevents scrolling off the
   * end of the tree.
   */
  undefined scrollByLines(long numLines);

  /**
   * Scroll the tree up or down by numPages pages. A page
   * is considered to be the amount displayed by the tree.
   * Positive values move down in the tree. Prevents scrolling
   * off the end of the tree.
   */
  undefined scrollByPages(long numPages);

  /**
   * Invalidation methods for fine-grained painting control.
   */
  undefined invalidate();
  undefined invalidateColumn(TreeColumn? col);
  undefined invalidateRow(long index);
  undefined invalidateCell(long row, TreeColumn? col);
  undefined invalidateRange(long startIndex, long endIndex);

  /**
   * A hit test that can tell you what row the mouse is over.
   * returns -1 for invalid mouse coordinates.
   *
   * The coordinate system is the client coordinate system for the
   * document this tree lives in, and the units are CSS pixels.
   */
  long getRowAt(long x, long y);

  /**
   * A hit test that can tell you what cell the mouse is over.
   * TreeCellInfo.row is the row index hit,  returns -1 for invalid mouse
   * coordinates.  TreeCellInfo.col is the column hit.
   * TreeCellInfo.childElt is the pseudoelement hit: this can have values of
   * "cell", "twisty", "image", and "text".
   *
   * The coordinate system is the client coordinate system for the
   * document this tree lives in, and the units are CSS pixels.
   */
  [Throws]
  TreeCellInfo getCellAt(long x, long y);

  /**
   * Find the coordinates of an element within a specific cell.
   */
  [Throws]
  DOMRect? getCoordsForCellItem(long row, TreeColumn col, DOMString element);

  /**
   * Determine if the text of a cell is being cropped or not.
   */
  [Throws]
  boolean isCellCropped(long row, TreeColumn? col);

  /**
   * The view is responsible for calling these notification methods when
   * rows are added or removed.  Index is the position at which the new
   * rows were added or at which rows were removed.  For
   * non-contiguous additions/removals, this method should be called multiple times.
   */
  undefined rowCountChanged(long index, long count);

  /**
   * Notify the tree that the view is about to perform a batch
   * update, that is, add, remove or invalidate several rows at once.
   * This must be followed by calling endUpdateBatch(), otherwise the tree
   * will get out of sync.
   */
  undefined beginUpdateBatch();

  /**
   * Notify the tree that the view has completed a batch update.
   */
  undefined endUpdateBatch();

  /**
   * Called on a theme switch to flush out the tree's style and image caches.
   */
  undefined clearStyleAndImageCaches();

  /**
   * Remove an image source from the image cache to allow its invalidation.
   */
  [Throws]
  undefined removeImageCacheEntry(long row, TreeColumn col);
};