/*
* @class Ext.util.translatable.ScrollPosition
* @private
*
* Scroll position implementation
*/
Ext.define('Ext.util.translatable.ScrollPosition', {
extend: 'Ext.util.translatable.Abstract',
wrapperWidth: 0,
wrapperHeight: 0,
baseCls: 'x-translatable',
getWrapper: function() {
var wrapper = this.wrapper,
baseCls = this.baseCls,
element = this.getElement(),
container;
if (!wrapper) {
container = element.getParent();
if (!container) {
return null;
}
wrapper = element.wrap({
className: baseCls + '-wrapper'
});
wrapper.insertFirst(Ext.Element.create({
className: baseCls + '-stretcher'
}));
element.addCls(baseCls);
container.addCls(baseCls + '-container');
this.container = container;
this.wrapper = wrapper;
this.refresh();
}
return wrapper;
},
doTranslate: function(translation) {
var wrapper = this.getWrapper(),
wrapperDom;
if (wrapper) {
wrapperDom = wrapper.dom;
if ('x' in translation) {
wrapperDom.scrollLeft = this.wrapperWidth - translation.x;
}
if ('y' in translation) {
wrapperDom.scrollTop = this.wrapperHeight - translation.y;
}
}
return this.callParent(arguments);
},
refresh: function() {
var wrapper = this.getWrapper(),
wrapperDom;
if (wrapper) {
wrapperDom = wrapper.dom;
this.wrapperWidth = wrapperDom.offsetWidth;
this.wrapperHeight = wrapperDom.offsetHeight;
this.callParent(arguments);
}
},
destroy: function() {
var element = this.getElement(),
wrapper = this.getWrapper(),
baseCls = this.baseCls;
if (wrapper) {
this.container.removeCls(baseCls + '-container');
element.unwrap();
element.removeCls(baseCls);
wrapper.destroy();
}
this.callParent(arguments);
}
});