]> git.proxmox.com Git - extjs.git/blame - extjs/examples/classic/feed-viewer/viewer/FeedInfo.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / classic / feed-viewer / viewer / FeedInfo.js
CommitLineData
6527f429
DM
1/**\r
2 * @class FeedViewer.FeedInfo\r
3 * @extends Ext.tab.Panel\r
4 *\r
5 * A container class for showing a series of feed details\r
6 * \r
7 * @constructor\r
8 * Create a new Feed Info\r
9 * @param {Object} config The config object\r
10 */\r
11Ext.define('FeedViewer.FeedInfo', {\r
12 \r
13 extend: 'Ext.tab.Panel',\r
14 alias: 'widget.feedinfo',\r
15 \r
16 maxTabWidth: 230,\r
17 border: false,\r
18\r
19 tabBar: {\r
20 border: true\r
21 },\r
22 \r
23 /**\r
24 * Add a new feed\r
25 * @param {String} title The title of the feed\r
26 * @param {String} url The url of the feed\r
27 */\r
28 addFeed: function(title, url){\r
29 var active = this.items.first();\r
30 if (!active) {\r
31 active = this.add({\r
32 xtype: 'feeddetail',\r
33 title: title,\r
34 url: url,\r
35 closable: false,\r
36 listeners: {\r
37 scope: this,\r
38 opentab: this.onTabOpen,\r
39 openall: this.onOpenAll,\r
40 rowdblclick: this.onRowDblClick\r
41 }\r
42 });\r
43 } else {\r
44 active.loadFeed(url);\r
45 active.tab.setText(title);\r
46 }\r
47 this.setActiveTab(active);\r
48 },\r
49 \r
50 /**\r
51 * Listens for a new tab request\r
52 * @private\r
53 * @param {FeedViewer.FeedPost} post The post\r
54 * @param {Ext.data.Model} rec The model instance\r
55 */\r
56 onTabOpen: function(post, rec) {\r
57 var items = [],\r
58 item,\r
59 title;\r
60 \r
61 if (Ext.isArray(rec)) {\r
62 Ext.each(rec, function(rec) {\r
63 title = rec.get('title');\r
64 if (!this.getTabByTitle(title)) {\r
65 items.push({\r
66 inTab: true,\r
67 xtype: 'feedpost',\r
68 title: title,\r
69 closable: true,\r
70 data: rec.data,\r
71 active: rec\r
72 });\r
73 }\r
74 }, this);\r
75 this.add(items);\r
76 }\r
77 else if (rec) {\r
78 title = rec.get('title');\r
79 item = this.getTabByTitle(title);\r
80 if (!item) {\r
81 item = this.add({\r
82 inTab: true,\r
83 xtype: 'feedpost',\r
84 title: title,\r
85 closable: true,\r
86 data: rec.data,\r
87 active: rec\r
88 });\r
89 }\r
90 this.setActiveTab(item);\r
91 }\r
92 },\r
93\r
94 /**\r
95 * Find a tab by title\r
96 * @param {String} title The title of the tab\r
97 * @return {Ext.Component} The panel matching the title. null if not found.\r
98 */\r
99 getTabByTitle: function(title) {\r
100 var index = this.items.findIndex('title', title);\r
101 return (index < 0) ? null : this.items.getAt(index);\r
102 },\r
103 \r
104 /**\r
105 * Listens for a row dblclick\r
106 * @private\r
107 * @param {FeedViewer.Detail} info The detail\r
108 * @param {Ext.data.Model} rec The model instance\r
109 */\r
110 onRowDblClick: function(info, rec){\r
111 this.onTabOpen(null, rec);\r
112 },\r
113 \r
114 /**\r
115 * Listens for the open all click\r
116 * @private\r
117 * @param {FeedViewer.FeedDetail} detail\r
118 */\r
119 onOpenAll: function(detail) {\r
120 this.onTabOpen(null, detail.getFeedData());\r
121 }\r
122});