hendricd
9 Mar 2008, 6:16 AM
The following Container plugin, provides a flexible masking agent for any Ext.Container (Viewport, Panel, TreePanel, Toolbar, etc) .
Ext.namespace('Ext.ux.plugins');
Ext.ux.plugins.ContainerMask = function(opt) {
var options = opt||{};
return {
init: function(c) {
Ext.applyIf(c,{
showMask : function(msg, msgClass, maskClass){
var el;
if(this.rendered && (el = this[options.el] || Ext.get(options.el) || this.getEl?this.getEl():null)){
el.mask.call(el,msg || options.msg, msgClass || options.msgClass, maskClass || options.maskClass);
}
},
hideMask : function(){
var el;
if(this.rendered && (el = this[options.el] || Ext.get(options.el) || this.getEl?this.getEl():null)){
el.unmask.call(el);
}
}
});
if(options.masked){
c.on('render', c.showMask.createDelegate(c,[null]) ,c, {delay:10, single:true}) ;
}
}
};
};Optional Plugin config options:
msg: the default mask message to be displayed when shown.
msgClass: CSS className applied to the message
maskClass: CSS className applied to the mask
masked: if true, the mask is shown during initial Container rendering
el: element to use as the masking element. Can be a property name (ie: 'bwrap'), or even a specific element elsewhere on the page. Defaults to main container element.Usage:
Ext.onReady(function(){
var tabs = new Ext.TabPanel({ //any container tho
title: 'Test',
plugins: [new Ext.ux.plugins.ContainerMask ({msg:'Don\'t Touch!', masked:true })],
renderTo: document.body
});
tabs.hideMask(); //you must control on/off
tabs.showMask('Hold on...');
});
Ext.namespace('Ext.ux.plugins');
Ext.ux.plugins.ContainerMask = function(opt) {
var options = opt||{};
return {
init: function(c) {
Ext.applyIf(c,{
showMask : function(msg, msgClass, maskClass){
var el;
if(this.rendered && (el = this[options.el] || Ext.get(options.el) || this.getEl?this.getEl():null)){
el.mask.call(el,msg || options.msg, msgClass || options.msgClass, maskClass || options.maskClass);
}
},
hideMask : function(){
var el;
if(this.rendered && (el = this[options.el] || Ext.get(options.el) || this.getEl?this.getEl():null)){
el.unmask.call(el);
}
}
});
if(options.masked){
c.on('render', c.showMask.createDelegate(c,[null]) ,c, {delay:10, single:true}) ;
}
}
};
};Optional Plugin config options:
msg: the default mask message to be displayed when shown.
msgClass: CSS className applied to the message
maskClass: CSS className applied to the mask
masked: if true, the mask is shown during initial Container rendering
el: element to use as the masking element. Can be a property name (ie: 'bwrap'), or even a specific element elsewhere on the page. Defaults to main container element.Usage:
Ext.onReady(function(){
var tabs = new Ext.TabPanel({ //any container tho
title: 'Test',
plugins: [new Ext.ux.plugins.ContainerMask ({msg:'Don\'t Touch!', masked:true })],
renderTo: document.body
});
tabs.hideMask(); //you must control on/off
tabs.showMask('Hold on...');
});