Subversion Repositories Applications.papyrus

Rev

Rev 1422 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        Copyright (c) 2004-2006, The Dojo Foundation
        All Rights Reserved.

        Licensed under the Academic Free License version 2.1 or above OR the
        modified BSD license. For more information on Dojo licensing, see:

                http://dojotoolkit.org/community/licensing.shtml
*/



dojo.require("dojo.widget.*");
dojo.require("dojo.widget.HtmlWidget");
dojo.require("dojo.widget.RichText");
dojo.provide("dojo.widget.TreeEditor");
dojo.widget.defineWidget("dojo.widget.TreeEditor", dojo.widget.HtmlWidget, {singleLineMode:false, saveOnBlur:true, sync:false, selectOnOpen:true, controller:null, node:null, richTextParams:{styleSheets:"src/widget/templates/TreeEditor.css"}, getContents:function () {
        return this.richText.getEditorContent();
}, open:function (node) {
        if (!this.richText) {
                this.richText = dojo.widget.createWidget("RichText", this.richTextParams, node.labelNode);
                dojo.event.connect("around", this.richText, "onKeyDown", this, "richText_onKeyDown");
                dojo.event.connect(this.richText, "onBlur", this, "richText_onBlur");
                var self = this;
                dojo.event.connect(this.richText, "onLoad", function () {
                        if (self.selectOnOpen) {
                                self.richText.execCommand("selectall");
                        }
                });
        } else {
                this.richText.open(node.labelNode);
        }
        this.node = node;
}, close:function (save) {
        this.richText.close(save);
        this.node = null;
}, isClosed:function () {
        return !this.richText || this.richText.isClosed;
}, execCommand:function () {
        this.richText.execCommand.apply(this.richText, arguments);
}, richText_onKeyDown:function (invocation) {
        var e = invocation.args[0];
        if ((!e) && (this.object)) {
                e = dojo.event.browser.fixEvent(this.editor.window.event);
        }
        switch (e.keyCode) {
          case e.KEY_ESCAPE:
                this.finish(false);
                dojo.event.browser.stopEvent(e);
                break;
          case e.KEY_ENTER:
                if (e.ctrlKey && !this.singleLineMode) {
                        this.execCommand("inserthtml", "<br/>");
                } else {
                        this.finish(true);
                }
                dojo.event.browser.stopEvent(e);
                break;
          default:
                return invocation.proceed();
        }
}, richText_onBlur:function () {
        this.finish(this.saveOnBlur);
}, finish:function (save) {
        return this.controller.editLabelFinish(save, this.sync);
}});