X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/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 index 00000000..8366e77d --- /dev/null +++ b/examples/feed-viewer/viewer/FeedViewer.js @@ -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); + } +});