///import core
///import uicore
(function() {
var utils = baidu.editor.utils,
uiUtils = baidu.editor.ui.uiUtils,
UIBase = baidu.editor.ui.UIBase;
var TablePicker = (baidu.editor.ui.TablePicker = function(options) {
this.initOptions(options);
this.initTablePicker();
});
TablePicker.prototype = {
defaultNumRows: 10,
defaultNumCols: 10,
maxNumRows: 20,
maxNumCols: 20,
numRows: 10,
numCols: 10,
lengthOfCellSide: 22,
initTablePicker: function() {
this.initUIBase();
},
getHtmlTpl: function() {
var me = this;
return (
'
' +
'
' +
'
' +
'' +
"
" +
'
" +
"
" +
"
"
);
},
_UIBase_render: UIBase.prototype.render,
render: function(holder) {
this._UIBase_render(holder);
this.getDom("label").innerHTML =
"0" +
this.editor.getLang("t_row") +
" x 0" +
this.editor.getLang("t_col");
},
_track: function(numCols, numRows) {
var style = this.getDom("overlay").style;
var sideLen = this.lengthOfCellSide;
style.width = numCols * sideLen + "px";
style.height = numRows * sideLen + "px";
var label = this.getDom("label");
label.innerHTML =
numCols +
this.editor.getLang("t_col") +
" x " +
numRows +
this.editor.getLang("t_row");
this.numCols = numCols;
this.numRows = numRows;
},
_onMouseOver: function(evt, el) {
var rel = evt.relatedTarget || evt.fromElement;
if (!uiUtils.contains(el, rel) && el !== rel) {
this.getDom("label").innerHTML =
"0" +
this.editor.getLang("t_col") +
" x 0" +
this.editor.getLang("t_row");
this.getDom("overlay").style.visibility = "";
}
},
_onMouseOut: function(evt, el) {
var rel = evt.relatedTarget || evt.toElement;
if (!uiUtils.contains(el, rel) && el !== rel) {
this.getDom("label").innerHTML =
"0" +
this.editor.getLang("t_col") +
" x 0" +
this.editor.getLang("t_row");
this.getDom("overlay").style.visibility = "hidden";
}
},
_onMouseMove: function(evt, el) {
var style = this.getDom("overlay").style;
var offset = uiUtils.getEventOffset(evt);
var sideLen = this.lengthOfCellSide;
var numCols = Math.ceil(offset.left / sideLen);
var numRows = Math.ceil(offset.top / sideLen);
this._track(numCols, numRows);
},
_onClick: function() {
this.fireEvent("picktable", this.numCols, this.numRows);
}
};
utils.inherits(TablePicker, UIBase);
})();