source: sandbox/2.3-MailArchiver/filemanager/tp/ckeditor/_source/core/focusmanager.js @ 6779

Revision 6779, 3.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1/*
2Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.html or http://ckeditor.com/license
4*/
5
6/**
7 * @fileOverview Defines the {@link CKEDITOR.focusManager} class, which is used
8 *              to handle the focus on editor instances..
9 */
10
11/**
12 * Manages the focus activity in an editor instance. This class is to be used
13 * mainly by UI elements coders when adding interface elements to CKEditor.
14 * @constructor
15 * @param {CKEDITOR.editor} editor The editor instance.
16 * @example
17 */
18CKEDITOR.focusManager = function( editor )
19{
20        if ( editor.focusManager )
21                return editor.focusManager;
22
23        /**
24         * Indicates that the editor instance has focus.
25         * @type Boolean
26         * @example
27         * alert( CKEDITOR.instances.editor1.focusManager.hasFocus );  // e.g "true"
28         */
29        this.hasFocus = false;
30
31        /**
32         * Object used to hold private stuff.
33         * @private
34         */
35        this._ =
36        {
37                editor : editor
38        };
39
40        return this;
41};
42
43CKEDITOR.focusManager.prototype =
44{
45        /**
46         * Indicates that the editor instance has the focus.
47         *
48         * This function is not used to set the focus in the editor. Use
49         * {@link CKEDITOR.editor#focus} for it instead.
50         * @example
51         * var editor = CKEDITOR.instances.editor1;
52         * <b>editor.focusManager.focus()</b>;
53         */
54        focus : function()
55        {
56                if ( this._.timer )
57                        clearTimeout( this._.timer );
58
59                if ( !this.hasFocus )
60                {
61                        // If another editor has the current focus, we first "blur" it. In
62                        // this way the events happen in a more logical sequence, like:
63                        //              "focus 1" > "blur 1" > "focus 2"
64                        // ... instead of:
65                        //              "focus 1" > "focus 2" > "blur 1"
66                        if ( CKEDITOR.currentInstance )
67                                CKEDITOR.currentInstance.focusManager.forceBlur();
68
69                        var editor = this._.editor;
70
71                        editor.container.getFirst().addClass( 'cke_focus' );
72
73                        this.hasFocus = true;
74                        editor.fire( 'focus' );
75                }
76        },
77
78        /**
79         * Indicates that the editor instance has lost the focus. Note that this
80         * functions acts asynchronously with a delay of 100ms to avoid subsequent
81         * blur/focus effects. If you want the "blur" to happen immediately, use
82         * the {@link #forceBlur} function instead.
83         * @example
84         * var editor = CKEDITOR.instances.editor1;
85         * <b>editor.focusManager.blur()</b>;
86         */
87        blur : function()
88        {
89                var focusManager = this;
90
91                if ( focusManager._.timer )
92                        clearTimeout( focusManager._.timer );
93
94                focusManager._.timer = setTimeout(
95                        function()
96                        {
97                                delete focusManager._.timer;
98                                focusManager.forceBlur();
99                        }
100                        , 100 );
101        },
102
103        /**
104         * Indicates that the editor instance has lost the focus. Unlike
105         * {@link #blur}, this function is synchronous, marking the instance as
106         * "blured" immediately.
107         * @example
108         * var editor = CKEDITOR.instances.editor1;
109         * <b>editor.focusManager.forceBlur()</b>;
110         */
111        forceBlur : function()
112        {
113                if ( this.hasFocus )
114                {
115                        var editor = this._.editor;
116
117                        editor.container.getFirst().removeClass( 'cke_focus' );
118
119                        this.hasFocus = false;
120                        editor.fire( 'blur' );
121                }
122        }
123};
Note: See TracBrowser for help on using the repository browser.