]>
Commit | Line | Data |
---|---|---|
1 | /**\r | |
2 | * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r | |
3 | * For licensing, see LICENSE.md or http://ckeditor.com/license\r | |
4 | */\r | |
5 | \r | |
6 | /* global CKCONSOLE */\r | |
7 | \r | |
8 | 'use strict';\r | |
9 | \r | |
10 | ( function() {\r | |
11 | \r | |
12 | CKCONSOLE.add( 'widget', {\r | |
13 | panels: [\r | |
14 | {\r | |
15 | type: 'box',\r | |
16 | content: '<ul class="ckconsole_list ckconsole_value" data-value="instances"></ul>',\r | |
17 | \r | |
18 | refresh: function( editor ) {\r | |
19 | var instances = obj2Array( editor.widgets.instances );\r | |
20 | \r | |
21 | return {\r | |
22 | header: 'Instances (' + instances.length + ')',\r | |
23 | instances: generateInstancesList( instances )\r | |
24 | };\r | |
25 | },\r | |
26 | \r | |
27 | refreshOn: function( editor, refresh ) {\r | |
28 | editor.widgets.on( 'instanceCreated', function( evt ) {\r | |
29 | refresh();\r | |
30 | \r | |
31 | evt.data.on( 'data', refresh );\r | |
32 | } );\r | |
33 | \r | |
34 | editor.widgets.on( 'instanceDestroyed', refresh );\r | |
35 | }\r | |
36 | },\r | |
37 | \r | |
38 | {\r | |
39 | type: 'box',\r | |
40 | content:\r | |
41 | '<ul class="ckconsole_list">' +\r | |
42 | '<li>focused: <span class="ckconsole_value" data-value="focused"></span></li>' +\r | |
43 | '<li>selected: <span class="ckconsole_value" data-value="selected"></span></li>' +\r | |
44 | '</ul>',\r | |
45 | \r | |
46 | refresh: function( editor ) {\r | |
47 | var focused = editor.widgets.focused,\r | |
48 | selected = editor.widgets.selected,\r | |
49 | selectedIds = [];\r | |
50 | \r | |
51 | for ( var i = 0; i < selected.length; ++i )\r | |
52 | selectedIds.push( selected[ i ].id );\r | |
53 | \r | |
54 | return {\r | |
55 | header: 'Focus & selection',\r | |
56 | focused: focused ? 'id: ' + focused.id : '-',\r | |
57 | selected: selectedIds.length ? 'id: ' + selectedIds.join( ', id: ' ) : '-'\r | |
58 | };\r | |
59 | },\r | |
60 | \r | |
61 | refreshOn: function( editor, refresh ) {\r | |
62 | editor.on( 'selectionCheck', refresh, null, null, 999 );\r | |
63 | }\r | |
64 | },\r | |
65 | \r | |
66 | {\r | |
67 | type: 'log',\r | |
68 | \r | |
69 | on: function( editor, log, logFn ) {\r | |
70 | // Add all listeners with high priorities to log\r | |
71 | // messages in the correct order when one event depends on another.\r | |
72 | // E.g. selectionChange triggers widget selection - if this listener\r | |
73 | // for selectionChange will be executed later than that one, then order\r | |
74 | // will be incorrect.\r | |
75 | \r | |
76 | editor.on( 'selectionChange', function( evt ) {\r | |
77 | var msg = 'selection change',\r | |
78 | sel = evt.data.selection,\r | |
79 | el = sel.getSelectedElement(),\r | |
80 | widget;\r | |
81 | \r | |
82 | if ( el && ( widget = editor.widgets.getByElement( el, true ) ) )\r | |
83 | msg += ' (id: ' + widget.id + ')';\r | |
84 | \r | |
85 | log( msg );\r | |
86 | }, null, null, 1 );\r | |
87 | \r | |
88 | editor.widgets.on( 'instanceDestroyed', function( evt ) {\r | |
89 | log( 'instance destroyed (id: ' + evt.data.id + ')' );\r | |
90 | }, null, null, 1 );\r | |
91 | \r | |
92 | editor.widgets.on( 'instanceCreated', function( evt ) {\r | |
93 | log( 'instance created (id: ' + evt.data.id + ')' );\r | |
94 | }, null, null, 1 );\r | |
95 | \r | |
96 | editor.widgets.on( 'widgetFocused', function( evt ) {\r | |
97 | log( 'widget focused (id: ' + evt.data.widget.id + ')' );\r | |
98 | }, null, null, 1 );\r | |
99 | \r | |
100 | editor.widgets.on( 'widgetBlurred', function( evt ) {\r | |
101 | log( 'widget blurred (id: ' + evt.data.widget.id + ')' );\r | |
102 | }, null, null, 1 );\r | |
103 | \r | |
104 | editor.widgets.on( 'checkWidgets', logFn( 'checking widgets' ), null, null, 1 );\r | |
105 | editor.widgets.on( 'checkSelection', logFn( 'checking selection' ), null, null, 1 );\r | |
106 | }\r | |
107 | }\r | |
108 | ]\r | |
109 | } );\r | |
110 | \r | |
111 | function generateInstancesList( instances ) {\r | |
112 | var html = '',\r | |
113 | instance;\r | |
114 | \r | |
115 | for ( var i = 0; i < instances.length; ++i ) {\r | |
116 | instance = instances[ i ];\r | |
117 | html += itemTpl.output( { id: instance.id, name: instance.name, data: JSON.stringify( instance.data ) } );\r | |
118 | }\r | |
119 | return html;\r | |
120 | }\r | |
121 | \r | |
122 | function obj2Array( obj ) {\r | |
123 | var arr = [];\r | |
124 | for ( var id in obj )\r | |
125 | arr.push( obj[ id ] );\r | |
126 | \r | |
127 | return arr;\r | |
128 | }\r | |
129 | \r | |
130 | var itemTpl = new CKEDITOR.template( '<li>id: <code>{id}</code>, name: <code>{name}</code>, data: <code>{data}</code></li>' );\r | |
131 | } )();\r |