3 * Copyright(c) 2006-2011 Sencha Inc.
5 * http://www.sencha.com/license
8 // From code originally written by David Davis (http://www.sencha.com/blog/html5-video-canvas-and-ext-js/)
10 Ext.define('MyDesktop.VideoWindow', {
11 extend: 'Ext.ux.desktop.Module',
14 'Ext.ux.desktop.Video'
18 windowId: 'video-window',
27 handler : this.createWindow,
32 createWindow : function(){
33 var me = this, desktop = me.app.getDesktop(),
34 win = desktop.getWindow(me.windowId);
37 win = desktop.createWindow({
39 title: 'About Ext JS',
52 // browser will pick the format it likes most:
53 { src: 'http://dev.sencha.com/desktopvideo.mp4', type: 'video/mp4' },
54 { src: 'http://dev.sencha.com/desktopvideo.ogv', type: 'video/ogg' },
55 { src: 'http://dev.sencha.com/desktopvideo.mov', type: 'video/quicktime' }
62 afterrender: function(video) {
63 me.videoEl = video.video.dom;
65 if (video.supported) {
66 me.tip = new Ext.tip.ToolTip({
69 height : me.tipHeight,
72 '<canvas width="', me.tipWidth,
73 '" height="', me.tipHeight, '">'
79 afterrender: me.onTooltipRender,
80 show: me.renderPreview,
90 beforedestroy: function() {
91 me.tip = me.ctx = me.videoEl = null;
100 me.tip.setTarget(win.taskButton.el);
106 onTooltipRender: function (tip) {
107 // get the canvas 2d context
108 var el = tip.body.dom, me = this;
109 me.ctx = el.getContext && el.getContext('2d');
112 renderPreview: function() {
115 if ((me.tip && !me.tip.isVisible()) || !me.videoEl) {
121 me.ctx.drawImage(me.videoEl, 0, 0, me.tipWidth, me.tipHeight);
125 // 20ms to keep the tooltip video smooth
126 Ext.Function.defer(me.renderPreview, 20, me);