Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / feed-viewer / viewer / FeedViewer.js
diff --git a/examples/feed-viewer/viewer/FeedViewer.js b/examples/feed-viewer/viewer/FeedViewer.js
new file mode 100644 (file)
index 0000000..8366e77
--- /dev/null
@@ -0,0 +1,87 @@
+/**
+ * @class FeedViewer.FeedViewer
+ * @extends Ext.container.Viewport
+ *
+ * The main FeedViewer application
+ * 
+ * @constructor
+ * Create a new Feed Viewer app
+ * @param {Object} config The config object
+ */
+
+Ext.define('FeedViewer.App', {
+    extend: 'Ext.container.Viewport',
+    
+    initComponent: function(){
+        
+        Ext.define('Feed', {
+            extend: 'Ext.data.Model',
+            fields: ['title', 'url']
+        });
+
+        Ext.define('FeedItem', {
+            extend: 'Ext.data.Model',
+            fields: ['title', 'author', {
+                name: 'pubDate',
+                type: 'date'
+            }, 'link', 'description', 'content']
+        });
+        
+        Ext.apply(this, {
+            layout: 'border',
+            padding: 5,
+            items: [this.createFeedPanel(), this.createFeedInfo()]
+        });
+        this.callParent(arguments);
+    },
+    
+    /**
+     * Create the list of fields to be shown on the left
+     * @private
+     * @return {FeedViewer.FeedPanel} feedPanel
+     */
+    createFeedPanel: function(){
+        this.feedPanel = Ext.create('widget.feedpanel', {
+            region: 'west',
+            collapsible: true,
+            width: 225,
+            floatable: false,
+            split: true,
+            feeds: [{
+                title: 'Sencha Blog',
+                url: 'http://feeds.feedburner.com/extblog'
+            }, {
+                title: 'Sencha Forums',
+                url: 'http://sencha.com/forum/external.php?type=RSS2'
+            }, {
+                title: 'Ajaxian',
+                url: 'http://feeds.feedburner.com/ajaxian'
+            }],
+            listeners: {
+                scope: this,
+                feedselect: this.onFeedSelect
+            }
+        });
+        return this.feedPanel;
+    },
+    
+    /**
+     * Create the feed info container
+     * @private
+     * @return {FeedViewer.FeedInfo} feedInfo
+     */
+    createFeedInfo: function(){
+        this.feedInfo = Ext.create('widget.feedinfo', {
+            region: 'center'
+        });
+        return this.feedInfo;
+    },
+    
+    /**
+     * Reacts to a feed being selected
+     * @private
+     */
+    onFeedSelect: function(feed, title, url){
+        this.feedInfo.addFeed(title, url);
+    }
+});