128 lines
4.2 KiB
JavaScript
128 lines
4.2 KiB
JavaScript
/*
|
|
Copyright (C) NAVER corp.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/*[
|
|
* SE_FIT_IFRAME
|
|
*
|
|
* 스마트에디터 사이즈에 맞게 iframe사이즈를 조절한다.
|
|
*
|
|
* none
|
|
*
|
|
---------------------------------------------------------------------------]*/
|
|
/**
|
|
* @pluginDesc 에디터를 싸고 있는 iframe 사이즈 조절을 담당하는 플러그인
|
|
*/
|
|
nhn.husky.SE_OuterIFrameControl = $Class({
|
|
name : "SE_OuterIFrameControl",
|
|
oResizeGrip : null,
|
|
|
|
$init : function(oAppContainer){
|
|
// page up, page down, home, end, left, up, right, down
|
|
this.aHeightChangeKeyMap = [-100, 100, 500, -500, -1, -10, 1, 10];
|
|
|
|
this._assignHTMLObjects(oAppContainer);
|
|
|
|
//키보드 이벤트
|
|
this.$FnKeyDown = $Fn(this._keydown, this);
|
|
if(this.oResizeGrip){
|
|
this.$FnKeyDown.attach(this.oResizeGrip, "keydown");
|
|
}
|
|
|
|
//마우스 이벤트
|
|
if(!!jindo.$Agent().navigator().ie){
|
|
this.$FnMouseDown = $Fn(this._mousedown, this);
|
|
this.$FnMouseMove = $Fn(this._mousemove, this);
|
|
this.$FnMouseMove_Parent = $Fn(this._mousemove_parent, this);
|
|
this.$FnMouseUp = $Fn(this._mouseup, this);
|
|
|
|
if(this.oResizeGrip){
|
|
this.$FnMouseDown.attach(this.oResizeGrip, "mousedown");
|
|
}
|
|
}
|
|
},
|
|
|
|
_assignHTMLObjects : function(oAppContainer){
|
|
oAppContainer = jindo.$(oAppContainer) || document;
|
|
|
|
this.oResizeGrip = cssquery.getSingle(".husky_seditor_editingArea_verticalResizer", oAppContainer);
|
|
|
|
this.elIFrame = window.frameElement;
|
|
this.welIFrame = $Element(this.elIFrame);
|
|
},
|
|
|
|
$ON_MSG_APP_READY : function(){
|
|
this.oApp.exec("SE_FIT_IFRAME", []);
|
|
},
|
|
|
|
$ON_MSG_EDITING_AREA_SIZE_CHANGED : function(){
|
|
this.oApp.exec("SE_FIT_IFRAME", []);
|
|
},
|
|
|
|
$ON_SE_FIT_IFRAME : function(){
|
|
this.elIFrame.style.height = document.body.offsetHeight+"px";
|
|
},
|
|
|
|
$AFTER_RESIZE_EDITING_AREA_BY : function(ipWidthChange, ipHeightChange){
|
|
this.oApp.exec("SE_FIT_IFRAME", []);
|
|
},
|
|
|
|
_keydown : function(oEvent){
|
|
var oKeyInfo = oEvent.key();
|
|
|
|
// 33, 34: page up/down, 35,36: end/home, 37,38,39,40: left, up, right, down
|
|
if(oKeyInfo.keyCode >= 33 && oKeyInfo.keyCode <= 40){
|
|
this.oApp.exec("MSG_EDITING_AREA_RESIZE_STARTED", []);
|
|
this.oApp.exec("RESIZE_EDITING_AREA_BY", [0, this.aHeightChangeKeyMap[oKeyInfo.keyCode-33]]);
|
|
this.oApp.exec("MSG_EDITING_AREA_RESIZE_ENDED", []);
|
|
|
|
oEvent.stop();
|
|
}
|
|
},
|
|
|
|
_mousedown : function(oEvent){
|
|
this.iStartHeight = oEvent.pos().clientY;
|
|
this.iStartHeightOffset = oEvent.pos().layerY;
|
|
|
|
this.$FnMouseMove.attach(document, "mousemove");
|
|
this.$FnMouseMove_Parent.attach(parent.document, "mousemove");
|
|
|
|
this.$FnMouseUp.attach(document, "mouseup");
|
|
this.$FnMouseUp.attach(parent.document, "mouseup");
|
|
|
|
this.iStartHeight = oEvent.pos().clientY;
|
|
this.oApp.exec("MSG_EDITING_AREA_RESIZE_STARTED", [this.$FnMouseDown, this.$FnMouseMove, this.$FnMouseUp]);
|
|
},
|
|
|
|
_mousemove : function(oEvent){
|
|
var iHeightChange = oEvent.pos().clientY - this.iStartHeight;
|
|
this.oApp.exec("RESIZE_EDITING_AREA_BY", [0, iHeightChange]);
|
|
},
|
|
|
|
_mousemove_parent : function(oEvent){
|
|
var iHeightChange = oEvent.pos().pageY - (this.welIFrame.offset().top + this.iStartHeight);
|
|
this.oApp.exec("RESIZE_EDITING_AREA_BY", [0, iHeightChange]);
|
|
},
|
|
|
|
_mouseup : function(oEvent){
|
|
this.$FnMouseMove.detach(document, "mousemove");
|
|
this.$FnMouseMove_Parent.detach(parent.document, "mousemove");
|
|
this.$FnMouseUp.detach(document, "mouseup");
|
|
this.$FnMouseUp.detach(parent.document, "mouseup");
|
|
|
|
this.oApp.exec("MSG_EDITING_AREA_RESIZE_ENDED", [this.$FnMouseDown, this.$FnMouseMove, this.$FnMouseUp]);
|
|
}
|
|
}); |