136 lines
6.1 KiB
JavaScript
136 lines
6.1 KiB
JavaScript
/*****************************************************************************
|
|
*
|
|
* Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
|
|
*
|
|
* This software is distributed under the terms of the Kupu
|
|
* License. See LICENSE.txt for license text. For a list of Kupu
|
|
* Contributors see CREDITS.txt.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
// $Id: kupubasetools.js 6120 2004-08-22 23:23:42Z roku $
|
|
|
|
TableTool.prototype.setTableRowRepeat = function() {
|
|
var selNode = this.editor.getSelectedNode();
|
|
var row = this.editor.getNearestParentOfType(selNode, 'tr');
|
|
if (!row) {
|
|
this.editor.logMessage(_('Not inside a row!'), 1);
|
|
return;
|
|
};
|
|
row.setAttribute('repeatable', 'repeatable');
|
|
row.className = 'repeatable';
|
|
this.editor.logMessage(_('Row repeated'));
|
|
this.updateState(selNode);
|
|
};
|
|
|
|
TableTool.prototype.delTableRowRepeat = function() {
|
|
var selNode = this.editor.getSelectedNode();
|
|
var row = this.editor.getNearestParentOfType(selNode, 'tr');
|
|
if (!row) {
|
|
this.editor.logMessage(_('Not inside a row!'), 1);
|
|
return;
|
|
};
|
|
row.removeAttribute('repeatable');
|
|
row.className = '';
|
|
row.removeAttribute('class');
|
|
this.editor.logMessage(_('Row repeat turned off'));
|
|
this.updateState(selNode);
|
|
};
|
|
|
|
function CNFTableToolBox(addtabledivid, edittabledivid, newrowsinputid,
|
|
newcolsinputid, makeheaderinputid, classselectid, alignselectid, addtablebuttonid,
|
|
addrowbuttonid, delrowbuttonid, setrowrepeatbuttonid, delrowrepeatbuttonid,
|
|
addcolbuttonid, delcolbuttonid, fixbuttonid,
|
|
fixallbuttonid, toolboxid, plainclass, activeclass) {
|
|
|
|
this.addtablediv = getFromSelector(addtabledivid);
|
|
this.edittablediv = getFromSelector(edittabledivid);
|
|
this.newrowsinput = getFromSelector(newrowsinputid);
|
|
this.newcolsinput = getFromSelector(newcolsinputid);
|
|
this.makeheaderinput = getFromSelector(makeheaderinputid);
|
|
this.classselect = getFromSelector(classselectid);
|
|
this.alignselect = getFromSelector(alignselectid);
|
|
this.addtablebutton = getFromSelector(addtablebuttonid);
|
|
this.addrowbutton = getFromSelector(addrowbuttonid);
|
|
this.delrowbutton = getFromSelector(delrowbuttonid);
|
|
this.setrowrepeatbutton = getFromSelector(setrowrepeatbuttonid);
|
|
this.delrowrepeatbutton = getFromSelector(delrowrepeatbuttonid);
|
|
this.addcolbutton = getFromSelector(addcolbuttonid);
|
|
this.delcolbutton = getFromSelector(delcolbuttonid);
|
|
this.fixbutton = getFromSelector(fixbuttonid);
|
|
this.fixallbutton = getFromSelector(fixallbuttonid);
|
|
this.toolboxel = getFromSelector(toolboxid);
|
|
this.plainclass = plainclass;
|
|
this.activeclass = activeclass;
|
|
|
|
this.initialize = function(tool, editor) {
|
|
/* attach the event handlers */
|
|
this.tool = tool;
|
|
this.editor = editor;
|
|
// build the select list of table classes if configured
|
|
if (this.editor.config.table_classes) {
|
|
var classes = this.editor.config.table_classes['class'];
|
|
while (this.classselect.hasChildNodes()) {
|
|
this.classselect.removeChild(this.classselect.firstChild);
|
|
};
|
|
for (var i=0; i < classes.length; i++) {
|
|
var classname = classes[i];
|
|
var option = document.createElement('option');
|
|
var content = document.createTextNode(classname);
|
|
option.appendChild(content);
|
|
option.setAttribute('value', classname);
|
|
this.classselect.appendChild(option);
|
|
};
|
|
};
|
|
addEventHandler(this.addtablebutton, "click", this.addTable, this);
|
|
addEventHandler(this.addrowbutton, "click", this.tool.addTableRow, this.tool);
|
|
addEventHandler(this.delrowbutton, "click", this.tool.delTableRow, this.tool);
|
|
addEventHandler(this.setrowrepeatbutton, "click", this.tool.setTableRowRepeat, this.tool);
|
|
addEventHandler(this.delrowrepeatbutton, "click", this.tool.delTableRowRepeat, this.tool);
|
|
addEventHandler(this.addcolbutton, "click", this.tool.addTableColumn, this.tool);
|
|
addEventHandler(this.delcolbutton, "click", this.tool.delTableColumn, this.tool);
|
|
addEventHandler(this.alignselect, "change", this.setColumnAlign, this);
|
|
addEventHandler(this.classselect, "change", this.setTableClass, this);
|
|
addEventHandler(this.fixbutton, "click", this.tool.fixTable, this.tool);
|
|
addEventHandler(this.fixallbutton, "click", this.tool.fixAllTables, this.tool);
|
|
this.addtablediv.style.display = "block";
|
|
this.edittablediv.style.display = "none";
|
|
this.editor.logMessage(_('Table tool initialized'));
|
|
};
|
|
|
|
this.updateState = function(selNode) {
|
|
/* update the state (add/edit) and update the pulldowns (if required) */
|
|
var table = this.editor.getNearestParentOfType(selNode, 'table');
|
|
if (table) {
|
|
this.addtablediv.style.display = "none";
|
|
this.edittablediv.style.display = "block";
|
|
|
|
var align = this.tool._getColumnAlign(selNode);
|
|
selectSelectItem(this.alignselect, align);
|
|
selectSelectItem(this.classselect, table.className);
|
|
if (this.toolboxel) {
|
|
this.toolboxel.className = this.activeclass;
|
|
};
|
|
var row = this.editor.getNearestParentOfType(selNode, 'tr');
|
|
var isRepeatable = row.getAttribute('repeatable');
|
|
if (isRepeatable) {
|
|
this.setrowrepeatbutton.style.display = 'none';
|
|
this.delrowrepeatbutton.style.display = 'inline';
|
|
} else {
|
|
this.setrowrepeatbutton.style.display = 'inline';
|
|
this.delrowrepeatbutton.style.display = 'none';
|
|
};
|
|
} else {
|
|
this.edittablediv.style.display = "none";
|
|
this.addtablediv.style.display = "block";
|
|
this.alignselect.selectedIndex = 0;
|
|
this.classselect.selectedIndex = 0;
|
|
if (this.toolboxel) {
|
|
this.toolboxel.className = this.plainclass;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
CNFTableToolBox.prototype = new TableToolBox;
|