ExtJS以平铺方式打开新窗口

neo*_*ser 7 javascript extjs

我正在使用ExtJS并运行类似桌面的应用程序.困扰我的一件事是当打开一个新窗口(绑定在视口的中心区域内)时,它总是在视口的左上角打开.

如果打开多个窗口,我希望它们能够平铺,这样它们就不会只是坐在彼此的顶部......

有任何想法吗?

(我最初的想法是在窗口中循环WindowMgr并检查当前是否有一个在0,0.如果是,请检查100,100等,直到有一个是免费的.)

希望这是有道理的!

owl*_*ess 5

我的确如你所描述的那样:

Ext.Window.prototype._autoTile = function() {
    var x = 10,
        y = 10;

    Ext.WindowMgr.each(function( win ) {
        if ( win === this )  return;

        var pos = win.getPosition();

        if ( pos[0] > (x - 15)
            && pos[0] < (x + 15)
            && pos[1] > (y - 15)
            && pos[1] < (y + 15)
        ) {
            x += 15;
            y += 15;
        }
    }, this);

    this.setPagePosition(x, y);
};

Ext.Window.prototype.initComponent =
    Ext.Window.prototype.initComponent.createSequence(function() {
        if ( this.autoTile ) {
            this.on('show', this._autoTile, this, {single: true});
        }
    });

var win = new Ext.Window({
    width: 300,
    height: 300,
    autoTile: true
});

win.show();
Run Code Online (Sandbox Code Playgroud)

这种实现方式足以满足我的需求,但是可以通过检查重新定位的窗口是否突破视口边界等方式变得更加复杂.