Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / 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
12 Ext.define('FeedViewer.App', {
13     extend: 'Ext.container.Viewport',
14     
15     initComponent: function(){
16         
17         Ext.define('Feed', {
18             extend: 'Ext.data.Model',
19             fields: ['title', 'url']
20         });
21
22         Ext.define('FeedItem', {
23             extend: 'Ext.data.Model',
24             fields: ['title', 'author', {
25                 name: 'pubDate',
26                 type: 'date'
27             }, 'link', 'description', 'content']
28         });
29         
30         Ext.apply(this, {
31             layout: 'border',
32             padding: 5,
33             items: [this.createFeedPanel(), this.createFeedInfo()]
34         });
35         this.callParent(arguments);
36     },
37     
38     /**
39      * Create the list of fields to be shown on the left
40      * @private
41      * @return {FeedViewer.FeedPanel} feedPanel
42      */
43     createFeedPanel: function(){
44         this.feedPanel = Ext.create('widget.feedpanel', {
45             region: 'west',
46             collapsible: true,
47             width: 225,
48             floatable: false,
49             split: true,
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         });
77         return this.feedInfo;
78     },
79     
80     /**
81      * Reacts to a feed being selected
82      * @private
83      */
84     onFeedSelect: function(feed, title, url){
85         this.feedInfo.addFeed(title, url);
86     }
87 });