Upgrade to ExtJS 3.1.0 - Released 12/16/2009
[extjs.git] / examples / ux / GroupTabPanel.js
index a4e074e..060fc81 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * Ext JS Library 3.0.0
+ * Ext JS Library 3.1.0
  * Copyright(c) 2006-2009 Ext JS, LLC
  * licensing@extjs.com
  * http://www.extjs.com/license
@@ -52,7 +52,6 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
         \r
     onRender: function(ct, position){\r
         Ext.TabPanel.superclass.onRender.call(this, ct, position);\r
-\r
         if(this.plain){\r
             var pos = this.tabPosition == 'top' ? 'header' : 'footer';\r
             this[pos].addClass('x-tab-panel-'+pos+'-plain');\r
@@ -70,7 +69,7 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
                this.bwrap.addClass('x-grouptabs-bwrap');\r
         this.body.addClass('x-tab-panel-body-'+this.tabPosition + ' x-grouptabs-panel-body');\r
 \r
-        if (!this.itemTpl) {\r
+        if (!this.groupTpl) {\r
             var tt = new Ext.Template(\r
                 '<li class="{cls}" id="{id}">', \r
                 '<a class="x-grouptabs-expand" onclick="return false;"></a>', \r
@@ -80,9 +79,8 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
             );\r
             tt.disableFormats = true;\r
             tt.compile();\r
-            Ext.ux.GroupTabPanel.prototype.itemTpl = tt;\r
+            Ext.ux.GroupTabPanel.prototype.groupTpl = tt;\r
         }\r
-\r
         this.items.each(this.initGroup, this);\r
     },\r
     \r
@@ -108,8 +106,8 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
         \r
     // private\r
     findTargets: function(e){\r
-        var item = null;\r
-        var itemEl = e.getTarget('li', this.strip);\r
+        var item = null,\r
+            itemEl = e.getTarget('li', this.strip);\r
         if (itemEl) {\r
             item = this.findById(itemEl.id.split(this.idDelimiter)[1]);\r
             if (item.disabled) {\r
@@ -153,6 +151,7 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
             groupEl = this.getGroupEl(groupEl);\r
         }\r
         Ext.fly(groupEl).addClass('x-grouptabs-expanded');\r
+               this.syncTabJoint();\r
     },\r
     \r
     toggleGroup: function(groupEl){\r
@@ -162,7 +161,15 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
         Ext.fly(groupEl).toggleClass('x-grouptabs-expanded');\r
                this.syncTabJoint();\r
     },    \r
-    \r
+\r
+    collapseGroup: function(groupEl){\r
+        if(groupEl.isXType) {\r
+            groupEl = this.getGroupEl(groupEl);\r
+        }\r
+        Ext.fly(groupEl).removeClass('x-grouptabs-expanded');\r
+               this.syncTabJoint();\r
+    },\r
+        \r
     syncTabJoint: function(groupEl){\r
         if (!this.tabJoint) {\r
             return;\r
@@ -202,19 +209,19 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
     },\r
     \r
     initGroup: function(group, index){\r
-        var before = this.strip.dom.childNodes[index];        \r
-        var p = this.getTemplateArgs(group);\r
+        var before = this.strip.dom.childNodes[index],   \r
+            p = this.getTemplateArgs(group);\r
         if (index === 0) {\r
             p.cls += ' x-tab-first';\r
         }\r
         p.cls += ' x-grouptabs-main';\r
         p.text = group.getMainItem().title;\r
         \r
-        var el = before ? this.itemTpl.insertBefore(before, p) : this.itemTpl.append(this.strip, p);\r
-        \r
-        var tl = this.createCorner(el, 'top-' + this.tabPosition);\r
-        var bl = this.createCorner(el, 'bottom-' + this.tabPosition);\r
+        var el = before ? this.groupTpl.insertBefore(before, p) : this.groupTpl.append(this.strip, p),\r
+            tl = this.createCorner(el, 'top-' + this.tabPosition),\r
+            bl = this.createCorner(el, 'bottom-' + this.tabPosition);\r
 \r
+        group.tabEl = el;\r
         if (group.expanded) {\r
             this.expandGroup(el);\r
         }\r
@@ -226,26 +233,28 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
             tl.setTop('-5px');\r
         }\r
 \r
-        this.mon(group, 'changemainitem', this.onGroupChangeMainItem, this);\r
-        this.mon(group, 'beforetabchange', this.onGroupBeforeTabChange, this);\r
+        this.mon(group, {\r
+            scope: this,\r
+            changemainitem: this.onGroupChangeMainItem,\r
+            beforetabchange: this.onGroupBeforeTabChange\r
+        });\r
     },\r
     \r
     setActiveGroup : function(group) {\r
         group = this.getComponent(group);\r
-        if(!group || this.fireEvent('beforegroupchange', this, group, this.activeGroup) === false){\r
-            return;\r
+        if(!group){\r
+            return false;\r
         }\r
         if(!this.rendered){\r
             this.activeGroup = group;\r
-            return;\r
+            return true;\r
         }\r
-        if(this.activeGroup != group){\r
+        if(this.activeGroup != group && this.fireEvent('beforegroupchange', this, group, this.activeGroup) !== false){\r
             if(this.activeGroup){\r
                 var oldEl = this.getGroupEl(this.activeGroup);\r
                 if(oldEl){\r
                     Ext.fly(oldEl).removeClass('x-grouptabs-strip-active');\r
                 }\r
-                this.activeGroup.fireEvent('deactivate', this.activeTab);\r
             }\r
 \r
             var groupEl = this.getGroupEl(group);\r
@@ -257,18 +266,20 @@ Ext.ux.GroupTabPanel = Ext.extend(Ext.TabPanel, {
             this.layout.setActiveItem(group);\r
             this.syncTabJoint(groupEl);\r
 \r
-            group.fireEvent('activate', group);\r
             this.fireEvent('groupchange', this, group);\r
-        }        \r
+            return true;\r
+        }\r
+        return false; \r
     },\r
     \r
     onGroupBeforeTabChange: function(group, newTab, oldTab){\r
         if(group !== this.activeGroup || newTab !== oldTab) {\r
             this.strip.select('.x-grouptabs-sub > li.x-grouptabs-strip-active', true).removeClass('x-grouptabs-strip-active');\r
         } \r
-        \r
         this.expandGroup(this.getGroupEl(group));\r
-        this.setActiveGroup(group);\r
+        if(group !== this.activeGroup) {\r
+            return this.setActiveGroup(group);\r
+        }        \r
     },\r
     \r
     getFrameHeight: function(){\r