Annotation of kupuMPIWG/common/kupucnftable.js, revision 1.1.1.1

1.1       dwinter     1: /*****************************************************************************
                      2:  *
                      3:  * Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
                      4:  *
                      5:  * This software is distributed under the terms of the Kupu
                      6:  * License. See LICENSE.txt for license text. For a list of Kupu
                      7:  * Contributors see CREDITS.txt.
                      8:  *
                      9:  *****************************************************************************/
                     10: 
                     11: // $Id: kupubasetools.js 6120 2004-08-22 23:23:42Z roku $
                     12: 
                     13: TableTool.prototype.setTableRowRepeat = function() {
                     14:     var selNode = this.editor.getSelectedNode();
                     15:     var row = this.editor.getNearestParentOfType(selNode, 'tr');
                     16:     if (!row) {
                     17:         this.editor.logMessage(_('Not inside a row!'), 1);
                     18:         return;
                     19:     };
                     20:     row.setAttribute('repeatable', 'repeatable');
                     21:     row.className = 'repeatable';
                     22:     this.editor.logMessage(_('Row repeated'));
                     23:     this.updateState(selNode);
                     24: };
                     25: 
                     26: TableTool.prototype.delTableRowRepeat = function() {
                     27:     var selNode = this.editor.getSelectedNode();
                     28:     var row = this.editor.getNearestParentOfType(selNode, 'tr');
                     29:     if (!row) {
                     30:         this.editor.logMessage(_('Not inside a row!'), 1);
                     31:         return;
                     32:     };
                     33:     row.removeAttribute('repeatable');
                     34:     row.className = '';
                     35:     row.removeAttribute('class');
                     36:     this.editor.logMessage(_('Row repeat turned off'));
                     37:     this.updateState(selNode);
                     38: };
                     39: 
                     40: function CNFTableToolBox(addtabledivid, edittabledivid, newrowsinputid, 
                     41:                     newcolsinputid, makeheaderinputid, classselectid, alignselectid, addtablebuttonid,
                     42:                     addrowbuttonid, delrowbuttonid, setrowrepeatbuttonid, delrowrepeatbuttonid,
                     43:                     addcolbuttonid, delcolbuttonid, fixbuttonid,
                     44:                     fixallbuttonid, toolboxid, plainclass, activeclass) {
                     45: 
                     46:     this.addtablediv = getFromSelector(addtabledivid);
                     47:     this.edittablediv = getFromSelector(edittabledivid);
                     48:     this.newrowsinput = getFromSelector(newrowsinputid);
                     49:     this.newcolsinput = getFromSelector(newcolsinputid);
                     50:     this.makeheaderinput = getFromSelector(makeheaderinputid);
                     51:     this.classselect = getFromSelector(classselectid);
                     52:     this.alignselect = getFromSelector(alignselectid);
                     53:     this.addtablebutton = getFromSelector(addtablebuttonid);
                     54:     this.addrowbutton = getFromSelector(addrowbuttonid);
                     55:     this.delrowbutton = getFromSelector(delrowbuttonid);
                     56:     this.setrowrepeatbutton = getFromSelector(setrowrepeatbuttonid);
                     57:     this.delrowrepeatbutton = getFromSelector(delrowrepeatbuttonid);
                     58:     this.addcolbutton = getFromSelector(addcolbuttonid);
                     59:     this.delcolbutton = getFromSelector(delcolbuttonid);
                     60:     this.fixbutton = getFromSelector(fixbuttonid);
                     61:     this.fixallbutton = getFromSelector(fixallbuttonid);
                     62:     this.toolboxel = getFromSelector(toolboxid);
                     63:     this.plainclass = plainclass;
                     64:     this.activeclass = activeclass;
                     65: 
                     66:     this.initialize = function(tool, editor) {
                     67:         /* attach the event handlers */
                     68:         this.tool = tool;
                     69:         this.editor = editor;
                     70:         // build the select list of table classes if configured
                     71:         if (this.editor.config.table_classes) {
                     72:             var classes = this.editor.config.table_classes['class'];
                     73:             while (this.classselect.hasChildNodes()) {
                     74:                 this.classselect.removeChild(this.classselect.firstChild);
                     75:             };
                     76:             for (var i=0; i < classes.length; i++) {
                     77:                 var classname = classes[i];
                     78:                 var option = document.createElement('option');
                     79:                 var content = document.createTextNode(classname);
                     80:                 option.appendChild(content);
                     81:                 option.setAttribute('value', classname);
                     82:                 this.classselect.appendChild(option);
                     83:             };
                     84:         };
                     85:         addEventHandler(this.addtablebutton, "click", this.addTable, this);
                     86:         addEventHandler(this.addrowbutton, "click", this.tool.addTableRow, this.tool);
                     87:         addEventHandler(this.delrowbutton, "click", this.tool.delTableRow, this.tool);
                     88:         addEventHandler(this.setrowrepeatbutton, "click", this.tool.setTableRowRepeat, this.tool);
                     89:         addEventHandler(this.delrowrepeatbutton, "click", this.tool.delTableRowRepeat, this.tool);
                     90:         addEventHandler(this.addcolbutton, "click", this.tool.addTableColumn, this.tool);
                     91:         addEventHandler(this.delcolbutton, "click", this.tool.delTableColumn, this.tool);
                     92:         addEventHandler(this.alignselect, "change", this.setColumnAlign, this);
                     93:         addEventHandler(this.classselect, "change", this.setTableClass, this);
                     94:         addEventHandler(this.fixbutton, "click", this.tool.fixTable, this.tool);
                     95:         addEventHandler(this.fixallbutton, "click", this.tool.fixAllTables, this.tool);
                     96:         this.addtablediv.style.display = "block";
                     97:         this.edittablediv.style.display = "none";
                     98:         this.editor.logMessage(_('Table tool initialized'));
                     99:     };
                    100: 
                    101:     this.updateState = function(selNode) {
                    102:         /* update the state (add/edit) and update the pulldowns (if required) */
                    103:         var table = this.editor.getNearestParentOfType(selNode, 'table');
                    104:         if (table) {
                    105:             this.addtablediv.style.display = "none";
                    106:             this.edittablediv.style.display = "block";
                    107: 
                    108:             var align = this.tool._getColumnAlign(selNode);
                    109:             selectSelectItem(this.alignselect, align);
                    110:             selectSelectItem(this.classselect, table.className);
                    111:             if (this.toolboxel) {
                    112:                 this.toolboxel.className = this.activeclass;
                    113:             };
                    114:             var row = this.editor.getNearestParentOfType(selNode, 'tr');
                    115:             var isRepeatable = row.getAttribute('repeatable');
                    116:             if (isRepeatable) {
                    117:                 this.setrowrepeatbutton.style.display = 'none';
                    118:                 this.delrowrepeatbutton.style.display = 'inline';
                    119:             } else {
                    120:                 this.setrowrepeatbutton.style.display = 'inline';
                    121:                 this.delrowrepeatbutton.style.display = 'none';
                    122:             };
                    123:         } else {
                    124:             this.edittablediv.style.display = "none";
                    125:             this.addtablediv.style.display = "block";
                    126:             this.alignselect.selectedIndex = 0;
                    127:             this.classselect.selectedIndex = 0;
                    128:             if (this.toolboxel) {
                    129:                 this.toolboxel.className = this.plainclass;
                    130:             };
                    131:         };
                    132:     };
                    133: };
                    134: 
                    135: CNFTableToolBox.prototype = new TableToolBox;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>