commit extjs-2.2.1
[extjs.git] / air / samples / tasks / js / SwitchButton.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 Ext.SwitchButton = Ext.extend(Ext.Component, {\r
10         initComponent : function(){\r
11                 Ext.SwitchButton.superclass.initComponent.call(this);\r
12                 \r
13                 var mc = new Ext.util.MixedCollection();\r
14                 mc.addAll(this.items);\r
15                 this.items = mc;\r
16                 \r
17                 this.addEvents('change');\r
18                 \r
19                 if(this.handler){\r
20                         this.on('change', this.handler, this.scope || this);\r
21                 }\r
22         },\r
23         \r
24         onRender : function(ct, position){\r
25                 \r
26                 var el = document.createElement('table');\r
27                 el.cellSpacing = 0;\r
28                 el.className = 'x-rbtn';\r
29                 el.id = this.id;\r
30                 \r
31                 var row = document.createElement('tr');\r
32                 el.appendChild(row);\r
33                 \r
34                 var count = this.items.length;\r
35                 var last = count - 1;\r
36                 this.activeItem = this.items.get(this.activeItem);\r
37                 \r
38                 for(var i = 0; i < count; i++){\r
39                         var item = this.items.itemAt(i);\r
40                         \r
41                         var cell = row.appendChild(document.createElement('td'));\r
42                         cell.id = this.id + '-rbi-' + i;\r
43                         \r
44                         var cls = i == 0 ? 'x-rbtn-first' : (i == last ? 'x-rbtn-last' : 'x-rbtn-item');\r
45                         item.baseCls = cls;\r
46                         \r
47                         if(this.activeItem == item){\r
48                                 cls += '-active';\r
49                         }\r
50                         cell.className = cls;\r
51                         \r
52                         var button = document.createElement('button');\r
53                         button.innerHTML = '&#160;';\r
54                         button.className = item.iconCls;\r
55                         button.qtip = item.tooltip;\r
56                         \r
57                         cell.appendChild(button);\r
58                         \r
59                         item.cell = cell;\r
60                 }\r
61                 \r
62                 this.el = Ext.get(ct.dom.appendChild(el));\r
63                 \r
64                 this.el.on('click', this.onClick, this);\r
65         },\r
66         \r
67         getActiveItem : function(){\r
68                 return this.activeItem;\r
69         },\r
70         \r
71         setActiveItem : function(item){\r
72                 if(typeof item != 'object' && item !== null){\r
73                         item = this.items.get(item);\r
74                 }\r
75                 var current = this.getActiveItem();\r
76                 if(item != current){\r
77                         if(current){\r
78                                 Ext.fly(current.cell).removeClass(current.baseCls + '-active');\r
79                         }\r
80                         if(item) {\r
81                                 Ext.fly(item.cell).addClass(item.baseCls + '-active');\r
82                         }\r
83                         this.activeItem = item;\r
84                         this.fireEvent('change', this, item);\r
85                 }\r
86                 return item;\r
87         },\r
88         \r
89         onClick : function(e){\r
90                 var target = e.getTarget('td', 2);\r
91                 if(!this.disabled && target){\r
92                         this.setActiveItem(parseInt(target.id.split('-rbi-')[1], 10));\r
93                 }\r
94         }\r
95 });\r
96 \r
97 Ext.reg('switch', Ext.SwitchButton);\r