]> git.wh0rd.org - tt-rss.git/blame - lib/dijit/_KeyNavContainer.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dijit / _KeyNavContainer.js
CommitLineData
2f01fe57
AD
1/*
2 Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
5*/
6
7
8if(!dojo._hasResource["dijit._KeyNavContainer"]){
9dojo._hasResource["dijit._KeyNavContainer"]=true;
10dojo.provide("dijit._KeyNavContainer");
11dojo.require("dijit._Container");
12dojo.declare("dijit._KeyNavContainer",dijit._Container,{tabIndex:"0",_keyNavCodes:{},connectKeyNavHandlers:function(_1,_2){
13var _3=(this._keyNavCodes={});
14var _4=dojo.hitch(this,this.focusPrev);
15var _5=dojo.hitch(this,this.focusNext);
16dojo.forEach(_1,function(_6){
17_3[_6]=_4;
18});
19dojo.forEach(_2,function(_7){
20_3[_7]=_5;
21});
22this.connect(this.domNode,"onkeypress","_onContainerKeypress");
23this.connect(this.domNode,"onfocus","_onContainerFocus");
24},startupKeyNavChildren:function(){
25dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));
26},addChild:function(_8,_9){
27dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);
28this._startupChild(_8);
29},focus:function(){
30this.focusFirstChild();
31},focusFirstChild:function(){
32var _a=this._getFirstFocusableChild();
33if(_a){
34this.focusChild(_a);
35}
36},focusNext:function(){
37var _b=this._getNextFocusableChild(this.focusedChild,1);
38this.focusChild(_b);
39},focusPrev:function(){
40var _c=this._getNextFocusableChild(this.focusedChild,-1);
41this.focusChild(_c,true);
42},focusChild:function(_d,_e){
43if(this.focusedChild&&_d!==this.focusedChild){
44this._onChildBlur(this.focusedChild);
45}
46_d.focus(_e?"end":"start");
47this.focusedChild=_d;
48},_startupChild:function(_f){
49_f.set("tabIndex","-1");
50this.connect(_f,"_onFocus",function(){
51_f.set("tabIndex",this.tabIndex);
52});
53this.connect(_f,"_onBlur",function(){
54_f.set("tabIndex","-1");
55});
56},_onContainerFocus:function(evt){
57if(evt.target!==this.domNode){
58return;
59}
60this.focusFirstChild();
61dojo.attr(this.domNode,"tabIndex","-1");
62},_onBlur:function(evt){
63if(this.tabIndex){
64dojo.attr(this.domNode,"tabIndex",this.tabIndex);
65}
66this.inherited(arguments);
67},_onContainerKeypress:function(evt){
68if(evt.ctrlKey||evt.altKey){
69return;
70}
71var _10=this._keyNavCodes[evt.charOrCode];
72if(_10){
73_10();
74dojo.stopEvent(evt);
75}
76},_onChildBlur:function(_11){
77},_getFirstFocusableChild:function(){
78return this._getNextFocusableChild(null,1);
79},_getNextFocusableChild:function(_12,dir){
80if(_12){
81_12=this._getSiblingOfChild(_12,dir);
82}
83var _13=this.getChildren();
84for(var i=0;i<_13.length;i++){
85if(!_12){
86_12=_13[(dir>0)?0:(_13.length-1)];
87}
88if(_12.isFocusable()){
89return _12;
90}
91_12=this._getSiblingOfChild(_12,dir);
92}
93return null;
94}});
95}