Panel container refactor
authorDarren <darren@darrenwhitlen.com>
Sun, 2 Sep 2012 01:32:38 +0000 (02:32 +0100)
committerDarren <darren@darrenwhitlen.com>
Sun, 2 Sep 2012 01:32:38 +0000 (02:32 +0100)
client_backbone/index.html
client_backbone/model.js
client_backbone/model_application.js
client_backbone/view.js

index c5068251e1f62a797b45328779af8be765f54a87..b9acb3b206e0859b775644fae60ceb2ed69ae908 100644 (file)
@@ -82,6 +82,7 @@
     
     $(function () {
         kiwi.app = new kiwi.model.Application({container: $('#kiwi')});
+        kiwi.app.start();
     });
 </script>
 </body>
index db18689d01a26c60b2960db646d8c8ab81510d27..59af6d3af4794024cf6855004096e5a9f87994eb 100644 (file)
@@ -162,6 +162,10 @@ kiwi.model.Member = Backbone.Model.extend({
 \r
 kiwi.model.PanelList = Backbone.Collection.extend({\r
     model: kiwi.model.Panel,\r
+\r
+    // Holds the active panel\r
+    active: null,\r
+\r
     comparator: function (chan) {\r
         return chan.get("name");\r
     },\r
@@ -173,8 +177,9 @@ kiwi.model.PanelList = Backbone.Collection.extend({
         kiwi.gateway.on('change:name', this.view.render, this.view);\r
         this.add(this.server);\r
 \r
-        // Set the default view to the server tab\r
-        kiwi.current_panel = this.server;\r
+        this.bind('active', function (active_panel) {\r
+            this.active = active_panel;\r
+        }, this);\r
 \r
     },\r
     getByName: function (name) {\r
@@ -260,7 +265,8 @@ kiwi.model.Panel = Backbone.Model.extend({
 \r
         this.destroy();\r
 \r
-        if (this.cid === kiwi.current_panel.cid) {\r
+        // If closing the active panel, switch to the server panel\r
+        if (this.cid === kiwi.app.panels.active.cid) {\r
             kiwi.app.panels.server.view.show();\r
         }\r
     },\r
index 2f508e3250507de8fba7e21db87d36cc52810ab0..0743b0bafd9552b367bcb846ad4f35c235dc657f 100644 (file)
@@ -10,7 +10,9 @@ kiwi.model.Application = Backbone.Model.extend(new (function () {
     this.initialize = function () {\r
         // Update `that` with this new Model object\r
         that = this;\r
+    };\r
 \r
+    this.start = function () {\r
         // Set the gateway up\r
         kiwi.gateway = new kiwi.model.Gateway();\r
         this.bindGatewayCommands(kiwi.gateway);\r
@@ -207,7 +209,7 @@ kiwi.model.Application = Backbone.Model.extend(new (function () {
             c.set('topic', event.topic);\r
 \r
             // If this is the active channel, update the topic bar too\r
-            if (c.get('name') === kiwi.current_panel.get('name')) {\r
+            if (c.get('name') === kiwi.app.panels.active.get('name')) {\r
                 that.topicbar.setCurrentTopic(event.topic);\r
             }\r
         });\r
@@ -389,25 +391,25 @@ kiwi.model.Application = Backbone.Model.extend(new (function () {
     };\r
 \r
     this.actionCommand = function (ev) {\r
-        if (kiwi.current_panel === kiwi.app.panels.server) {\r
+        if (kiwi.app.panels.active === kiwi.app.panels.server) {\r
             return;\r
         }\r
 \r
-        var panel = kiwi.current_panel;\r
+        var panel = kiwi.app.panels.active;\r
         panel.addMsg('', '* ' + kiwi.gateway.get('nick') + ' ' + ev.params.join(' '), 'action');\r
         kiwi.gateway.action(panel.get('name'), ev.params.join(' '));\r
     };\r
 \r
     this.partCommand = function (ev) {\r
         if (ev.params.length === 0) {\r
-            kiwi.gateway.part(kiwi.current_panel.get('name'));\r
+            kiwi.gateway.part(kiwi.app.panels.active.get('name'));\r
         } else {\r
             _.each(ev.params, function (channel) {\r
                 kiwi.gateway.part(channel);\r
             });\r
         }\r
         // TODO: More responsive = close tab now, more accurate = leave until part event\r
-        //kiwi.app.panels.remove(kiwi.current_panel);\r
+        //kiwi.app.panels.remove(kiwi.app.panels.active);\r
     };\r
 \r
     this.topicCommand = function (ev) {\r
@@ -419,7 +421,7 @@ kiwi.model.Application = Backbone.Model.extend(new (function () {
             channel_name = ev.params[0];\r
             ev.params.shift();\r
         } else {\r
-            channel_name = kiwi.current_panel.get('name');\r
+            channel_name = kiwi.app.panels.active.get('name');\r
         }\r
 \r
         kiwi.gateway.topic(channel_name, ev.params.join(' '));\r
index e2de6e54496155de6b4709402efd114bb0fdac63..6a17376432170c67538815b54d9b55f77db05877 100644 (file)
@@ -220,16 +220,12 @@ kiwi.view.Panel = Backbone.View.extend({
             this.$container.parent().css('right', '0');\r
         }\r
 \r
-        // TODO: Why is kiwi.app not defined when this is fist called :/\r
-        if (kiwi.app) {\r
-            kiwi.app.topicbar.setCurrentTopic(this.model.get("topic") || "");\r
-        }\r
+        kiwi.app.topicbar.setCurrentTopic(this.model.get("topic") || "");\r
 \r
         this.scrollToBottom();\r
 \r
-        kiwi.current_panel = this.model;\r
-\r
         this.trigger('active', this.model);\r
+        kiwi.app.panels.trigger('active', this.model);\r
     },\r
 \r
 \r
@@ -254,7 +250,7 @@ kiwi.view.Channel = kiwi.view.Panel.extend({
         this.model.addMsg('', '=== Topic for ' + this.model.get('name') + ' is: ' + topic, 'topic');\r
 \r
         // If this is the active channel then update the topic bar\r
-        if (kiwi.current_panel === this) {\r
+        if (kiwi.app.panels.active === this) {\r
             kiwi.app.topicbar.setCurrentTopic(this.model.get("topic"));\r
         }\r
     }\r
@@ -352,8 +348,8 @@ kiwi.view.TopicBar = Backbone.View.extend({
 \r
         if (ev.keyCode !== 13) return;\r
 \r
-        if (kiwi.current_panel.isChannel && kiwi.current_panel.isChannel()) {\r
-            kiwi.gateway.topic(kiwi.current_panel.get('name'), inp_val);\r
+        if (kiwi.app.panels.active.isChannel()) {\r
+            kiwi.gateway.topic(kiwi.app.panels.active.get('name'), inp_val);\r
         }\r
     },\r
 \r
@@ -427,7 +423,7 @@ kiwi.view.ControlBox = Backbone.View.extend({
         } else {\r
             // Default command\r
             command = 'msg';\r
-            params.unshift(kiwi.current_panel.get('name'));\r
+            params.unshift(kiwi.app.panels.active.get('name'));\r
         }\r
 \r
         // Trigger the command events\r