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 the Mozilla Foundation.
 17  * Portions created by the Initial Developer are Copyright (C) 2010
 18  * the Initial Developer. All Rights Reserved.
 19  *
 20  * Contributor(s):
 21  *   Henrik Skupin <hskupin@mozilla.com>
 22  *   Geo Mealer <gmealer@mozilla.com>
 23  *
 24  * Alternatively, the contents of this file may be used under the terms of
 25  * either the GNU General Public License Version 2 or later (the "GPL"), or
 26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 27  * in which case the provisions of the GPL or the LGPL are applicable instead
 28  * of those above. If you wish to allow use of your version of this file only
 29  * under the terms of either the GPL or the LGPL, and not to allow others to
 30  * use your version of this file under the terms of the MPL, indicate your
 31  * decision by deleting the provisions above and replace them with the notice
 32  * and other provisions required by the GPL or the LGPL. If you do not delete
 33  * the provisions above, a recipient may use your version of this file under
 34  * the terms of any one of the MPL, the GPL or the LGPL.
 35  *
 36  * ***** END LICENSE BLOCK ***** */
 37 
 38 var Inheritance = require("../external/inheritance");
 39 var Widgets = require("widgets");
 40 var DomUtils = require("../dom_utils");
 41 
 42 var TabBar = Inheritance.Class.extend(Widgets.XulRegion, {
 43   initialize: function TabBar_initialize(owner) {
 44     this.parent("tag", "#TabsToolbar", owner);
 45     
 46     this.tabs = new Tabs("tag", "#tabbrowser-tabs", this);
 47   } 
 48 });
 49 
 50 var Tabs = Inheritance.Class.extend(Widgets.XulElement, {
 51   get items() {
 52     var collector = new DomUtils.nodeCollector(this.node);
 53     collector.queryNodes(".tabbrowser-tab");
 54     
 55     var tabElements = [];
 56     collector.nodes.forEach(function (node) {
 57       tabElements.push(new Tab("node", node, this));
 58     }, this);
 59     
 60     return tabElements;
 61   }
 62   
 63   // Intentionally leaving off length/at for the moment. Reason is that the
 64   // above process is slow enough that the best practice will be to just grab
 65   // all the rows into a separate var and deal with them from there. Using
 66   // length/at will cause a requery every time (and should, tabs are dynamic).
 67 });
 68 
 69 var Tab = Inheritance.Class.extend(Widgets.XulElement, {
 70   /// XXX: stub
 71 });
 72 
 73 exports.TabBar = TabBar;