В общем создал свой класс окна, наследник Ext.Window и добавил ему соответствующие листенеры:
CenteredWindow = Ext.extend(Ext.Window, {
initComponent: function(){
Ext.applyIf(this, {
resizable: false,
listeners: {
move: function (w, x, y){
if (x<10 || (x+w.width)>GetWidth() || y<10 || y>GetHeight())
w.setPosition(GetWidth()/2-w.getWidth()/2, GetHeight()/2-w.getHeight()/2);
},
beforeshow: function(){
this.setPosition(GetWidth()/2-this.getWidth()/2, GetHeight()/2-this.getHeight()/2);
}
}
});
CenteredWindow.superclass.initComponent.call(this);
}
});
function GetWidth()
{
var x = 0;
if (self.innerHeight)
{
x = self.innerWidth;
}
else if (document.documentElement && document.documentElement.clientHeight)
{
x = document.documentElement.clientWidth;
}
else if (document.body)
{
x = document.body.clientWidth;
}
return x;
}
function GetHeight()
{
var y = 0;
if (self.innerHeight)
{
y = self.innerHeight;
}
else if (document.documentElement && document.documentElement.clientHeight)
{
y = document.documentElement.clientHeight;
}
else if (document.body)
{
y = document.body.clientHeight;
}
return y;
}