ExtJS 4 Desktop 例子中的桌面图标始终在第一列显示,不论有多少个。重写Desktop的部分方法,让其自动适应位置。
Ext.override(Ext.ux.desktop.Desktop, {
createDataView: function () {
var me = this;
return {
xtype: 'dataview',
overItemCls: 'x-view-over',
trackOver: true,
itemSelector: me.shortcutItemSelector,
store: me.shortcuts,
tpl: new Ext.XTemplate(me.shortcutTpl),
listeners: {
'refresh': me.positionItems,
'resize': me.positionItems
}
};
},
positionItems: function() {
var me = this,
height = this.getHeight(),
x = 0,
y = 0;
// get the max width and height of shortcuts
if (!me.itemWidth && !me.itemHeight) {
me.itemHeight = 0;
var h = 0, rh;
this.all.each(function(item) {
var el = Ext.get(item),
box = el.getBox();
me.itemWidth = me.itemWidth || box.right;
me.itemHeight = (rh = box.bottom - h) > me.itemHeight ? rh : me.itemHeight;
h = box.bottom;
});
}
this.all.each(function(item) {
var el = Ext.get(item);
if ((y+me.itemHeight) > height) {
x += me.itemWidth;
y = 0;
}
el.setXY([x, y]);
y += me.itemHeight;
});
}
});