Upgrade to ExtJS 4.0.1 - Released 05/18/2011
[extjs.git] / examples / key-feed-viewer / viewer / FeedViewer.js
1 /**
2  * @class FeedViewer.FeedViewer
3  * @extends Ext.container.Viewport
4  *
5  * The main FeedViewer application
6  * 
7  * @constructor
8  * Create a new Feed Viewer app
9  * @param {Object} config The config object
10  */
11 Ext.define('FeedViewer.App', {
12     extend: 'Ext.container.Viewport',
13
14     initComponent: function(){
15
16         Ext.define('Feed', {
17             extend: 'Ext.data.Model',
18             fields: ['title', 'url']
19         });
20
21         Ext.define('FeedItem', {
22             extend: 'Ext.data.Model',
23             fields: ['title', 'author', {
24                 name: 'pubDate',
25                 type: 'date'
26             }, 'link', 'description', 'content']
27         });
28
29         Ext.apply(this, {
30             layout: 'border',
31             padding: 5,
32             items: [this.createFeedPanel(), this.createFeedInfo()]
33         });
34         this.callParent(arguments);
35     },
36
37     /**
38      * Create the list of fields to be shown on the left
39      * @private
40      * @return {FeedViewer.FeedPanel} feedPanel
41      */
42     createFeedPanel: function(){
43         this.feedPanel = Ext.create('widget.feedpanel', {
44             region: 'west',
45             collapsible: true,
46             width: 225,
47             floatable: false,
48             split: true,
49             minWidth: 175,
50             feeds: [{
51                 title: 'Sencha Blog',
52                 url: 'http://feeds.feedburner.com/extblog'
53             }, {
54                 title: 'Sencha Forums',
55                 url: 'http://sencha.com/forum/external.php?type=RSS2'
56             }, {
57                 title: 'Ajaxian',
58                 url: 'http://feeds.feedburner.com/ajaxian'
59             }],
60             listeners: {
61                 scope: this,
62                 feedselect: this.onFeedSelect
63             }
64         });
65         return this.feedPanel;
66     },
67     
68     /**
69      * Create the feed info container
70      * @private
71      * @return {FeedViewer.FeedInfo} feedInfo
72      */
73     createFeedInfo: function(){
74         this.feedInfo = Ext.create('widget.feedinfo', {
75             region: 'center',
76             minWidth: 300
77         });
78         return this.feedInfo;
79     },
80     
81     /**
82      * Reacts to a feed being selected
83      * @private
84      */
85     onFeedSelect: function(feed, title, url){
86         this.feedInfo.addFeed(title, url);
87     }
88 });