Annotation of kupuMPIWG/common/kupuinit_experimental.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: kupuinit_experimental.js 9879 2005-03-18 12:04:00Z yuppie $
                     12: 
                     13: 
                     14: //----------------------------------------------------------------------------
                     15: // Sample initialization function
                     16: //----------------------------------------------------------------------------
                     17: 
                     18: function initKupu(iframe) {
                     19:     /* Although this is meant to be a sample implementation, it can
                     20:         be used out-of-the box to run the sample pagetemplate or for simple
                     21:         implementations that just don't use some elements. When you want
                     22:         to do some customization, this should probably be overridden. For 
                     23:         larger customization actions you will have to subclass or roll your 
                     24:         own UI object.
                     25:     */
                     26: 
                     27:     // first we create a logger
                     28:     var l = new PlainLogger('kupu-toolbox-debuglog', 5);
                     29:     
                     30:     // now some config values
                     31:     var conf = loadDictFromXML(document, 'kupuconfig');
                     32:     
                     33:     // the we create the document, hand it over the id of the iframe
                     34:     var doc = new KupuDocument(iframe);
                     35:     
                     36:     // now we can create the controller
                     37:     var kupu = new KupuEditor(doc, conf, l);
                     38: 
                     39:     var contextmenu = new ContextMenu();
                     40:     kupu.setContextMenu(contextmenu);
                     41: 
                     42:     // now we can create a UI object which we can use from the UI
                     43:     var ui = new KupuUI('kupu-tb-styles');
                     44: 
                     45:     // the ui must be registered to the editor like a tool so it can be notified
                     46:     // of state changes
                     47:     kupu.registerTool('ui', ui); // XXX Should this be a different method?
                     48: 
                     49:     // add the buttons to the toolbar
                     50:     var savebuttonfunc = function(button, editor) {editor.saveDocument()};
                     51:     var savebutton = new KupuButton('kupu-save-button', savebuttonfunc);
                     52:     kupu.registerTool('savebutton', savebutton);
                     53: 
                     54:     // function that returns a function to execute a button command
                     55:     var execCommand = function(cmd) {
                     56:         return function(button, editor) {
                     57:             editor.execCommand(cmd);
                     58:         };
                     59:     };
                     60: 
                     61:     var boldchecker = ParentWithStyleChecker(new Array('b', 'strong'),
                     62:                                              'fontWeight', 'bold');
                     63:     var boldbutton = new KupuStateButton('kupu-bold-button', 
                     64:                                          execCommand('bold'),
                     65:                                          boldchecker,
                     66:                                          'kupu-bold',
                     67:                                          'kupu-bold-pressed');
                     68:     kupu.registerTool('boldbutton', boldbutton);
                     69: 
                     70:     var italicschecker = ParentWithStyleChecker(new Array('i', 'em'),
                     71:                                                 'fontStyle', 'italic');
                     72:     var italicsbutton = new KupuStateButton('kupu-italic-button', 
                     73:                                            execCommand('italic'),
                     74:                                            italicschecker, 
                     75:                                            'kupu-italic', 
                     76:                                            'kupu-italic-pressed');
                     77:     kupu.registerTool('italicsbutton', italicsbutton);
                     78: 
                     79:     var underlinechecker = ParentWithStyleChecker(new Array('u'),
                     80:                                                 'textDecoration', 'underline');
                     81:     var underlinebutton = new KupuStateButton('kupu-underline-button', 
                     82:                                               execCommand('underline'),
                     83:                                               underlinechecker,
                     84:                                               'kupu-underline', 
                     85:                                               'kupu-underline-pressed');
                     86:     kupu.registerTool('underlinebutton', underlinebutton);
                     87: 
                     88:     var subscriptchecker = ParentWithStyleChecker(new Array('sub'));
                     89:     var subscriptbutton = new KupuStateButton('kupu-subscript-button',
                     90:                                               execCommand('subscript'),
                     91:                                               subscriptchecker,
                     92:                                               'kupu-subscript',
                     93:                                               'kupu-subscript-pressed');
                     94:     kupu.registerTool('subscriptbutton', subscriptbutton);
                     95: 
                     96:     var superscriptchecker = ParentWithStyleChecker(new Array('super', 'sup'));
                     97:     var superscriptbutton = new KupuStateButton('kupu-superscript-button', 
                     98:                                                 execCommand('superscript'),
                     99:                                                 superscriptchecker,
                    100:                                                 'kupu-superscript', 
                    101:                                                 'kupu-superscript-pressed');
                    102:     kupu.registerTool('superscriptbutton', superscriptbutton);
                    103: 
                    104:     var justifyleftbutton = new KupuButton('kupu-justifyleft-button',
                    105:                                            execCommand('justifyleft'));
                    106:     kupu.registerTool('justifyleftbutton', justifyleftbutton);
                    107: 
                    108:     var justifycenterbutton = new KupuButton('kupu-justifycenter-button',
                    109:                                              execCommand('justifycenter'));
                    110:     kupu.registerTool('justifycenterbutton', justifycenterbutton);
                    111: 
                    112:     var justifyrightbutton = new KupuButton('kupu-justifyright-button',
                    113:                                             execCommand('justifyright'));
                    114:     kupu.registerTool('justifyrightbutton', justifyrightbutton);
                    115: 
                    116:     var outdentbutton = new KupuButton('kupu-outdent-button', execCommand('outdent'));
                    117:     kupu.registerTool('outdentbutton', outdentbutton);
                    118: 
                    119:     var indentbutton = new KupuButton('kupu-indent-button', execCommand('indent'));
                    120:     kupu.registerTool('indentbutton', indentbutton);
                    121: 
                    122:     var undobutton = new KupuButton('kupu-undo-button', execCommand('undo'));
                    123:     kupu.registerTool('undobutton', undobutton);
                    124: 
                    125:     var redobutton = new KupuButton('kupu-redo-button', execCommand('redo'));
                    126:     kupu.registerTool('redobutton', redobutton);
                    127: 
                    128:     var removeimagebutton = new KupuRemoveElementButton('kupu-removeimage-button',
                    129:                            'img',
                    130:                            'kupu-removeimage');
                    131:     kupu.registerTool('removeimagebutton', removeimagebutton);
                    132:     var removelinkbutton = new KupuRemoveElementButton('kupu-removelink-button',
                    133:                               'a',
                    134:                               'kupu-removelink');
                    135:     kupu.registerTool('removelinkbutton', removelinkbutton);
                    136: 
                    137:     // add some tools
                    138:     // XXX would it be better to pass along elements instead of ids?
                    139:     var colorchoosertool = new ColorchooserTool('kupu-forecolor-button',
                    140:                                                 'kupu-hilitecolor-button',
                    141:                                                 'kupu-colorchooser');
                    142:     kupu.registerTool('colorchooser', colorchoosertool);
                    143: 
                    144:     var listtool = new ListTool('kupu-list-ul-addbutton',
                    145:                                 'kupu-list-ol-addbutton',
                    146:                                 'kupu-ulstyles', 'kupu-olstyles');
                    147:     kupu.registerTool('listtool', listtool);
                    148: 
                    149:     // since we use the inspector we don't need much else ;)
                    150:     var inspector = new KupuInspector('kupu-inspector-form');
                    151:     kupu.registerTool('inspector', inspector);
                    152:     
                    153:     var linktool = new LinkTool();
                    154:     kupu.registerTool('linktool', linktool);
                    155: 
                    156:     var imagetool = new ImageTool();
                    157:     kupu.registerTool('imagetool', imagetool);
                    158: 
                    159:     var tabletool = new TableTool();
                    160:     kupu.registerTool('tabletool', tabletool);
                    161: 
                    162:     var showpathtool = new ShowPathTool();
                    163:     kupu.registerTool('showpathtool', showpathtool);
                    164:     
                    165:     var viewsourcetool = new ViewSourceTool();
                    166:     kupu.registerTool('viewsourcetool', viewsourcetool);
                    167: 
                    168:     // Drawers...
                    169: 
                    170:     // Function that returns function to open a drawer
                    171:     var opendrawer = function(drawerid) {
                    172:         return function(button, editor) {
                    173:             drawertool.openDrawer(drawerid);
                    174:         };
                    175:     };
                    176: 
                    177:     var imagelibdrawerbutton = new KupuButton('kupu-imagelibdrawer-button',
                    178:                                               opendrawer('imagelibdrawer'));
                    179:     kupu.registerTool('imagelibdrawerbutton', imagelibdrawerbutton);
                    180: 
                    181:     var linklibdrawerbutton = new KupuButton('kupu-linklibdrawer-button',
                    182:                                              opendrawer('linklibdrawer'));
                    183:     kupu.registerTool('linklibdrawerbutton', linklibdrawerbutton);
                    184: 
                    185:     var linkdrawerbutton = new KupuButton('kupu-linkdrawer-button',
                    186:                                           opendrawer('linkdrawer'));
                    187:     kupu.registerTool('linkdrawerbutton', linkdrawerbutton);
                    188: 
                    189:     var tabledrawerbutton = new KupuButton('kupu-tabledrawer-button',
                    190:                                            opendrawer('tabledrawer'));
                    191:     kupu.registerTool('tabledrawerbutton', tabledrawerbutton);
                    192: 
                    193:     // create some drawers, drawers are some sort of popups that appear when a 
                    194:     // toolbar button is clicked
                    195:     var drawertool = new DrawerTool();
                    196:     kupu.registerTool('drawertool', drawertool);
                    197: 
                    198:     var linklibdrawer = new LinkLibrarydrawer(linktool, conf['link_xsl_uri'],
                    199:                                               conf['link_libraries_uri'],
                    200:                                               conf['link_images_uri']);
                    201:     drawertool.registerDrawer('linklibdrawer', linklibdrawer);
                    202: 
                    203:     var imagelibdrawer = new ImageLibrarydrawer(imagetool, conf['image_xsl_uri'],
                    204:                                                 conf['image_libraries_uri'],
                    205:                                                 conf['search_images_uri']);
                    206:     drawertool.registerDrawer('imagelibdrawer', imagelibdrawer);
                    207: 
                    208:     var linkdrawer = new LinkDrawer('kupu-linkdrawer', linktool);
                    209:     drawertool.registerDrawer('linkdrawer', linkdrawer);
                    210: 
                    211:     var tabledrawer = new TableDrawer('kupu-tabledrawer', tabletool);
                    212:     drawertool.registerDrawer('tabledrawer', tabledrawer);
                    213: 
                    214:     // register some cleanup filter
                    215:     // remove tags that aren't in the XHTML DTD
                    216:     var nonxhtmltagfilter = new NonXHTMLTagFilter();
                    217:     kupu.registerFilter(nonxhtmltagfilter);
                    218: 
                    219:     return kupu;
                    220: };

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