Nation Notes module contributed by Z&H Healthcare.
[openemr.git] / library / custom_template / ckeditor / _source / core / focusmanager.js
blob582a3adb004f7eabee26a7b70eadd808ce7f946b
1 /*
2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.html or http://ckeditor.com/license
4 */
6 /**
7  * @fileOverview Defines the {@link CKEDITOR.focusManager} class, which is used
8  *              to handle the focus on editor instances..
9  */
11 /**
12  * Creates a focusManager class instance.
13  * @class Manages the focus activity in an editor instance. This class is to be
14  * used mainly by UI elements coders when adding interface elements that need
15  * to set the focus state of the editor.
16  * @param {CKEDITOR.editor} editor The editor instance.
17  * @example
18  * var focusManager = <b>new CKEDITOR.focusManager( editor )</b>;
19  * focusManager.focus();
20  */
21 CKEDITOR.focusManager = function( editor )
23         if ( editor.focusManager )
24                 return editor.focusManager;
26         /**
27          * Indicates that the editor instance has focus.
28          * @type Boolean
29          * @example
30          * alert( CKEDITOR.instances.editor1.focusManager.hasFocus );  // e.g "true"
31          */
32         this.hasFocus = false;
34         /**
35          * Object used to hold private stuff.
36          * @private
37          */
38         this._ =
39         {
40                 editor : editor
41         };
43         return this;
46 CKEDITOR.focusManager.prototype =
48         /**
49          * Used to indicate that the editor instance has the focus.<br />
50          * <br />
51          * Note that this function will not explicitelly set the focus in the
52          * editor (for example, making the caret blinking on it). Use
53          * {@link CKEDITOR.editor#focus} for it instead.
54          * @example
55          * var editor = CKEDITOR.instances.editor1;
56          * <b>editor.focusManager.focus()</b>;
57          */
58         focus : function()
59         {
60                 if ( this._.timer )
61                         clearTimeout( this._.timer );
63                 if ( !this.hasFocus )
64                 {
65                         // If another editor has the current focus, we first "blur" it. In
66                         // this way the events happen in a more logical sequence, like:
67                         //              "focus 1" > "blur 1" > "focus 2"
68                         // ... instead of:
69                         //              "focus 1" > "focus 2" > "blur 1"
70                         if ( CKEDITOR.currentInstance )
71                                 CKEDITOR.currentInstance.focusManager.forceBlur();
73                         var editor = this._.editor;
75                         editor.container.getChild( 1 ).addClass( 'cke_focus' );
77                         this.hasFocus = true;
78                         editor.fire( 'focus' );
79                 }
80         },
82         /**
83          * Used to indicate that the editor instance has lost the focus.<br />
84          * <br />
85          * Note that this functions acts asynchronously with a delay of 100ms to
86          * avoid subsequent blur/focus effects. If you want the "blur" to happen
87          * immediately, use the {@link #forceBlur} function instead.
88          * @example
89          * var editor = CKEDITOR.instances.editor1;
90          * <b>editor.focusManager.blur()</b>;
91          */
92         blur : function()
93         {
94                 var focusManager = this;
96                 if ( focusManager._.timer )
97                         clearTimeout( focusManager._.timer );
99                 focusManager._.timer = setTimeout(
100                         function()
101                         {
102                                 delete focusManager._.timer;
103                                 focusManager.forceBlur();
104                         }
105                         , 100 );
106         },
108         /**
109          * Used to indicate that the editor instance has lost the focus. Unlike
110          * {@link #blur}, this function is synchronous, marking the instance as
111          * "blured" immediately.
112          * @example
113          * var editor = CKEDITOR.instances.editor1;
114          * <b>editor.focusManager.forceBlur()</b>;
115          */
116         forceBlur : function()
117         {
118                 if ( this.hasFocus )
119                 {
120                         var editor = this._.editor;
122                         editor.container.getChild( 1 ).removeClass( 'cke_focus' );
124                         this.hasFocus = false;
125                         editor.fire( 'blur' );
126                 }
127         }
131  * Fired when the editor instance receives the input focus.
132  * @name CKEDITOR.editor#focus
133  * @event
134  * @param {CKEDITOR.editor} editor The editor instance.
135  * @example
136  * editor.on( 'focus', function( e )
137  *     {
138  *         alert( 'The editor named ' + e.editor.name + ' is now focused' );
139  *     });
140  */
143  * Fired when the editor instance loses the input focus.
144  * @name CKEDITOR.editor#blur
145  * @event
146  * @param {CKEDITOR.editor} editor The editor instance.
147  * @example
148  * editor.on( 'blur', function( e )
149  *     {
150  *         alert( 'The editor named ' + e.editor.name + ' lost the focus' );
151  *     });
152  */