123 lines
3.6 KiB
JavaScript
123 lines
3.6 KiB
JavaScript
Type.registerNamespace("Sys.Extended.UI.HtmlEditor");
|
|
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel = function(element) {
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel.initializeBase(this, [element]);
|
|
this._onfocus$delegate = Function.createDelegate(this, this._onfocus);
|
|
|
|
if(Sys.Extended.UI.HtmlEditor.isIE && document.compatMode != "BackCompat")
|
|
this._onresize$delegate = Function.createDelegate(this, this._onresize);
|
|
}
|
|
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel.prototype = {
|
|
|
|
_activate: function(value) {
|
|
this._shouldResize = false;
|
|
var element = this.get_element();
|
|
|
|
if(Sys.Extended.UI.HtmlEditor.isIE && Sys.Browser.version > 6 && document.compatMode != "BackCompat" && element.parentNode.clientHeight > 0)
|
|
this._shouldResize = true;
|
|
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel.callBaseMethod(this, "_activate");
|
|
|
|
if(Sys.Extended.UI.HtmlEditor.isIE) {
|
|
element.value = "";
|
|
var panel = this;
|
|
|
|
setTimeout(function() {
|
|
element.value = value;
|
|
}, 0);
|
|
} else {
|
|
element.value = value;
|
|
}
|
|
|
|
$addHandlers(element, {
|
|
focus: this._onfocus$delegate
|
|
});
|
|
|
|
if(this._shouldResize)
|
|
$addHandlers(element, {
|
|
resize: this._onresize$delegate
|
|
});
|
|
|
|
this._activateFinished();
|
|
},
|
|
|
|
_deactivate: function() {
|
|
var element = this.get_element();
|
|
|
|
if(this._shouldResize)
|
|
$common.removeHandlers(element, {
|
|
resize: this._onresize$delegate
|
|
});
|
|
|
|
this._shouldResize = false;
|
|
|
|
$common.removeHandlers(element, {
|
|
focus: this._onfocus$delegate
|
|
});
|
|
|
|
element.value = "";
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel.callBaseMethod(this, "_deactivate");
|
|
},
|
|
|
|
_getContent: function() {
|
|
return this.get_element().value;
|
|
},
|
|
|
|
_setContent: function(value) {
|
|
this.get_element().value = value;
|
|
|
|
if(Sys.Extended.UI.HtmlEditor.isReallyVisible(this.get_element().parentNode)) {
|
|
try { // some browsers fail when invisible
|
|
var textarea = this.get_element();
|
|
textarea.focus();
|
|
setTimeout(function() {
|
|
try {
|
|
Sys.Extended.UI.HtmlEditor.setSelectionRange(textarea, 0, 0);
|
|
} catch(e) { }
|
|
}, 0);
|
|
} catch(e) { }
|
|
}
|
|
},
|
|
|
|
_focus: function() {
|
|
if(Sys.Extended.UI.HtmlEditor.isReallyVisible(this.get_element().parentNode)) {
|
|
try { // some browsers fail when invisible
|
|
var textarea = this.get_element();
|
|
textarea.focus();
|
|
|
|
setTimeout(function() {
|
|
try {
|
|
Sys.Extended.UI.HtmlEditor.setSelectionRange(textarea, 0, 0);
|
|
} catch(e) { }
|
|
}, 0);
|
|
} catch(e) { }
|
|
}
|
|
var panel = this;
|
|
|
|
setTimeout(function() {
|
|
panel._focused();
|
|
}, 0);
|
|
},
|
|
|
|
_onfocus: function(e) {
|
|
this._really_focused();
|
|
var textarea = this.get_element();
|
|
|
|
setTimeout(function() {
|
|
textarea.focus();
|
|
}, 0);
|
|
|
|
return true;
|
|
},
|
|
|
|
_onresize: function(e) {
|
|
var element = this.get_element();
|
|
var clientHeight = element.parentNode.clientHeight;
|
|
|
|
if(clientHeight > 0)
|
|
element.style.height = clientHeight + "px";
|
|
}
|
|
}
|
|
|
|
Sys.Extended.UI.HtmlEditor.HtmlPanel.registerClass("Sys.Extended.UI.HtmlEditor.HtmlPanel", Sys.Extended.UI.HtmlEditor.ModePanel); |