]> git.proxmox.com Git - extjs.git/blame - extjs/examples/classic/desktop/app/VideoWindow.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / classic / desktop / app / VideoWindow.js
CommitLineData
6527f429
DM
1/*!\r
2* Copyright(c) 2006-2014 Sencha Inc.\r
3* licensing@sencha.com\r
4* http://www.sencha.com/license\r
5*/\r
6\r
7// From code originally written by David Davis (http://www.sencha.com/blog/html5-video-canvas-and-ext-js/)\r
8\r
9Ext.define('Desktop.VideoWindow', {\r
10 extend: 'Ext.ux.desktop.Module',\r
11\r
12 uses: [\r
13 'Ext.ux.desktop.Video'\r
14 ],\r
15\r
16 id:'video',\r
17 windowId: 'video-window',\r
18\r
19 tipWidth: 160,\r
20 tipHeight: 96,\r
21\r
22 init : function(){\r
23 this.launcher = {\r
24 text: 'About Ext JS',\r
25 iconCls:'video'\r
26 }\r
27 },\r
28\r
29 createWindow : function(){\r
30 var me = this, desktop = me.app.getDesktop(),\r
31 win = desktop.getWindow(me.windowId);\r
32\r
33 if (!win) {\r
34 win = desktop.createWindow({\r
35 id: me.windowId,\r
36 title: 'About Ext JS',\r
37 width: 740,\r
38 height: 480,\r
39 iconCls: 'video',\r
40 animCollapse: false,\r
41 border: false,\r
42\r
43 layout: 'fit',\r
44 items: [\r
45 {\r
46 xtype: 'video',\r
47 id: 'video-player',\r
48 src: [\r
49 // browser will pick the format it likes most:\r
50 { src: 'http://dev.sencha.com/desktopvideo.mp4', type: 'video/mp4' },\r
51 { src: 'http://dev.sencha.com/desktopvideo.ogv', type: 'video/ogg' },\r
52 { src: 'http://dev.sencha.com/desktopvideo.mov', type: 'video/quicktime' }\r
53 ],\r
54 poster: 'http://b.vimeocdn.com/ts/148/397/148397103_640.jpg',\r
55 autobuffer: true,\r
56 autoplay : true,\r
57 controls : true,\r
58 /* default */\r
59 listeners: {\r
60 afterrender: function(video) {\r
61 me.videoEl = video.video.dom;\r
62\r
63 if (video.supported) {\r
64 me.tip = new Ext.tip.ToolTip({\r
65 anchor : 'bottom',\r
66 dismissDelay : 0,\r
67 height : me.tipHeight,\r
68 width : me.tipWidth,\r
69 renderTpl: [\r
70 '<canvas width="', me.tipWidth,\r
71 '" height="', me.tipHeight, '">'\r
72 ],\r
73 renderSelectors: {\r
74 body: 'canvas'\r
75 },\r
76 listeners: {\r
77 afterrender: me.onTooltipRender,\r
78 show: me.renderPreview,\r
79 scope: me\r
80 }\r
81 }); // tip\r
82 }\r
83 }\r
84 }\r
85 }\r
86 ],\r
87 listeners: {\r
88 beforedestroy: function() {\r
89 me.tip = me.ctx = me.videoEl = null;\r
90 }\r
91 }\r
92 });\r
93 }\r
94\r
95 if (me.tip) {\r
96 me.tip.setTarget(win.taskButton.el);\r
97 }\r
98\r
99 return win;\r
100 },\r
101\r
102 onTooltipRender: function (tip) {\r
103 // get the canvas 2d context\r
104 var el = tip.body.dom, me = this;\r
105 me.ctx = el.getContext && el.getContext('2d');\r
106 },\r
107\r
108 renderPreview: function() {\r
109 var me = this;\r
110\r
111 if ((me.tip && !me.tip.isVisible()) || !me.videoEl) {\r
112 return;\r
113 }\r
114\r
115 if (me.ctx) {\r
116 try {\r
117 me.ctx.drawImage(me.videoEl, 0, 0, me.tipWidth, me.tipHeight);\r
118 } catch(e) {}\r
119 }\r
120\r
121 // 20ms to keep the tooltip video smooth\r
122 Ext.Function.defer(me.renderPreview, 20, me);\r
123 }\r
124});\r