]> git.donarmstrong.com Git - dactyl.git/blob - common/tests/functional/shared-modules/widgets.js
Initial import of 1.0~b6
[dactyl.git] / common / tests / functional / shared-modules / widgets.js
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 MozMill Test code.
15  *
16  * The Initial Developer of the Original Code is Mozilla Foundation.
17  * Portions created by the Initial Developer are Copyright (C) 2009
18  * the Initial Developer. All Rights Reserved.
19  *
20  * Contributor(s):
21  *   Henrik Skupin <hskupin@mozilla.com>
22  *
23  * Alternatively, the contents of this file may be used under the terms of
24  * either the GNU General Public License Version 2 or later (the "GPL"), or
25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26  * in which case the provisions of the GPL or the LGPL are applicable instead
27  * of those above. If you wish to allow use of your version of this file only
28  * under the terms of either the GPL or the LGPL, and not to allow others to
29  * use your version of this file under the terms of the MPL, indicate your
30  * decision by deleting the provisions above and replace them with the notice
31  * and other provisions required by the GPL or the LGPL. If you do not delete
32  * the provisions above, a recipient may use your version of this file under
33  * the terms of any one of the MPL, the GPL or the LGPL.
34  *
35  * ***** END LICENSE BLOCK ***** */
36
37 /**
38  * @fileoverview
39  * The WidgetsAPI adds support for handling objects like trees.
40  */
41
42 var EventUtils = {};
43 Components.utils.import('resource://mozmill/stdlib/EventUtils.js', EventUtils);
44
45 const gTimeout = 5000;
46
47 /**
48  * Click the specified tree cell
49  *
50  * @param {MozMillController} controller
51  *        MozMillController of the browser window to operate on
52  * @param {tree} tree
53  *        Tree to operate on
54  * @param {number } rowIndex
55  *        Index of the row
56  * @param {number} columnIndex
57  *        Index of the column
58  * @param {object} eventDetails
59  *        Details about the mouse event
60  */
61 function clickTreeCell(controller, tree, rowIndex, columnIndex, eventDetails)
62 {
63   tree = tree.getNode();
64
65   var selection = tree.view.selection;
66   selection.select(rowIndex);
67   tree.treeBoxObject.ensureRowIsVisible(rowIndex);
68
69   // get cell coordinates
70   var x = {}, y = {}, width = {}, height = {};
71   var column = tree.columns[columnIndex];
72   tree.treeBoxObject.getCoordsForCellItem(rowIndex, column, "text",
73                                            x, y, width, height);
74
75   controller.sleep(0);
76   EventUtils.synthesizeMouse(tree.body, x.value + 4, y.value + 4,
77                              eventDetails, tree.ownerDocument.defaultView);
78   controller.sleep(0);
79 }
80
81 // Export of functions
82 exports.clickTreeCell = clickTreeCell;