1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is mozilla.org code.
15 *
16 * The Initial Developer of the Original Code is Jan Varga.
17 * Portions created by the Initial Developer are Copyright (C) 2003
18 * the Initial Developer. All Rights Reserved.
19 *
20 * Contributor(s):
21 *
22 * Alternatively, the contents of this file may be used under the terms of
23 * either of the GNU General Public License Version 2 or later (the "GPL"),
24 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25 * in which case the provisions of the GPL or the LGPL are applicable instead
26 * of those above. If you wish to allow use of your version of this file only
27 * under the terms of either the GPL or the LGPL, and not to allow others to
28 * use your version of this file under the terms of the MPL, indicate your
29 * decision by deleting the provisions above and replace them with the notice
30 * and other provisions required by the GPL or the LGPL. If you do not delete
31 * the provisions above, a recipient may use your version of this file under
32 * the terms of any one of the MPL, the GPL or the LGPL.
33 *
34 * ***** END LICENSE BLOCK ***** */
35
36 #include "nsISupports.idl"
37
38 interface nsITreeColumns;
39 interface nsIDOMElement;
40 interface nsIAtom;
41
42 [scriptable, uuid(ae835ecf-6b32-4660-9b43-8a270df56e02)]
43 interface nsITreeColumn : nsISupports
44 {
45 readonly attribute nsIDOMElement element;
46
47 readonly attribute nsITreeColumns columns;
48
49 readonly attribute long x;
50 readonly attribute long width;
51
52 readonly attribute AString id;
53 [noscript] void getIdConst([shared] out wstring idConst);
54 [noscript] readonly attribute nsIAtom atom;
55
56 readonly attribute long index;
57
58 readonly attribute boolean primary;
59 readonly attribute boolean cycler;
60 readonly attribute boolean editable;
61 readonly attribute boolean selectable;
62
63 const short TYPE_TEXT = 1;
64 const short TYPE_CHECKBOX = 2;
65 const short TYPE_PROGRESSMETER = 3;
66 readonly attribute short type;
67
68 nsITreeColumn getNext();
69 nsITreeColumn getPrevious();
70
71 void invalidate();
72 };
73
74 interface nsITreeBoxObject;
75
76 [scriptable, uuid(f8a8d6b4-6788-438d-9009-7142798767ab)]
77 interface nsITreeColumns : nsISupports
78 {
79 /**
80 * The tree widget for these columns.
81 */
82 readonly attribute nsITreeBoxObject tree;
83
84 /**
85 * The number of columns.
86 */
87 readonly attribute long count;
88
89 /**
90 * An alias for count (for the benefit of scripts which treat this as an
91 * array).
92 */
93 readonly attribute long length;
94
95 /**
96 * Get the first/last column.
97 */
98 nsITreeColumn getFirstColumn();
99 nsITreeColumn getLastColumn();
100
101 /**
102 * Attribute based column getters.
103 */
104 nsITreeColumn getPrimaryColumn();
105 nsITreeColumn getSortedColumn();
106 nsITreeColumn getKeyColumn();
107
108 /**
109 * Get the column for the given element.
110 */
111 nsITreeColumn getColumnFor(in nsIDOMElement element);
112
113 /**
114 * Parametric column getters.
115 */
116 nsITreeColumn getNamedColumn(in AString id);
117 nsITreeColumn getColumnAt(in long index);
118
119 /**
120 * This method is called whenever a treecol is added or removed and
121 * the column cache needs to be rebuilt.
122 */
123 void invalidateColumns();
124
125 void restoreNaturalOrder();
126 };