/**
* Layout class for {@link Ext.form.field.HtmlEditor} fields. Sizes textarea and iframe elements.
* @private
*/
Ext.define('Ext.layout.component.field.HtmlEditor', {
extend: 'Ext.layout.component.field.FieldContainer',
alias: ['layout.htmleditor'],
type: 'htmleditor',
naturalHeight: 150,
naturalWidth: 300,
beginLayout: function(ownerContext) {
var owner = this.owner,
dom;
// In gecko, it can cause the browser to hang if we're running a layout with
// a heap of data in the textarea (think several images with data urls).
// So clear the value at the start, then re-insert it once we're done
if (Ext.isGecko) {
dom = owner.textareaEl.dom;
this.lastValue = dom.value;
dom.value = '';
}
this.callParent(arguments);
ownerContext.toolbarContext = ownerContext.context.getCmp(owner.toolbar);
ownerContext.inputCmpContext = ownerContext.context.getCmp(owner.inputCmp);
ownerContext.bodyCellContext = ownerContext.getEl('bodyEl');
ownerContext.textAreaContext = ownerContext.getEl('textareaEl');
ownerContext.iframeContext = ownerContext.getEl('iframeEl');
},
beginLayoutCycle: function(ownerContext) {
var me = this,
widthModel = ownerContext.widthModel,
heightModel = ownerContext.heightModel,
owner = me.owner,
iframeEl = owner.iframeEl,
textareaEl = owner.textareaEl,
height = (heightModel.natural || heightModel.shrinkWrap) ? me.naturalHeight : '';
me.callParent(arguments);
if (widthModel.shrinkWrap) {
iframeEl.setStyle('width', '');
textareaEl.setStyle('width', '');
}
else if (widthModel.natural) {
ownerContext.bodyCellContext.setWidth(me.naturalWidth);
}
iframeEl.setStyle('height', height);
textareaEl.setStyle('height', height);
},
finishedLayout: function() {
var owner = this.owner;
this.callParent(arguments);
if (Ext.isGecko) {
owner.textareaEl.dom.value = this.lastValue;
}
}
});