// kate: space-indent on; indent-width 4; replace-tabs on; Ext.namespace('Ext.ux'); Ext.ux.IFrameComponent = Ext.extend(Ext.BoxComponent, { // http://www.extjs.com/forum/showthread.php?p=54416#post54416 onRender : function(ct, position){ this.el = ct.createChild({tag: 'iframe', id: 'iframe-'+ this.id, frameBorder: 0, src: this.url}); } }); Ext.ux.ButtonIframeWindow = function( config ){ Ext.apply( this, config ); Ext.apply( this, { scope: this, enableToggle: true, toggleHandler: function(button, state){ if( !this.wnd ){ this.wnd = new Ext.Window({ title: this.windowTitle || this.text, layout: 'fit', items: new Ext.ux.IFrameComponent({ url: this.url }), width: window.viewsize.width - 200, height: window.viewsize.height - 100, scope: this, buttons: [{ text: gettext('Open in new window'), scope: this, handler: function(){ window.open( this.url ); this.toggle( false ); } }], listeners: { beforeclose: function(){ this.ownerButton.toggle( false, false ); this.ownerButton.wnd = null; } }, }); this.wnd.ownerButton = this; } if( state ){ this.wnd.show(); mypos = this.getPosition(); mysize = this.getSize(); winsize = this.wnd.getSize(); this.wnd.setPosition( (window.viewsize.width - winsize.width) / 2, mypos[1] - winsize.height ); } else this.wnd.hide(); } }); Ext.ux.ButtonIframeWindow.superclass.constructor.call( this ); } Ext.extend( Ext.ux.ButtonIframeWindow, Ext.Button, { } ); Ext.reg( 'buttonIframeWindow', Ext.ux.ButtonIframeWindow );