]> git.immae.eu Git - perso/Immae/Projets/packagist/ludivine-ckeditor-component.git/blame - sources/plugins/panelbutton/plugin.js
Add audio, color and fonts
[perso/Immae/Projets/packagist/ludivine-ckeditor-component.git] / sources / plugins / panelbutton / plugin.js
CommitLineData
eaa92715
IB
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
6CKEDITOR.plugins.add( 'panelbutton', {\r
7 requires: 'button',\r
8 onLoad: function() {\r
9 function clickFn( editor ) {\r
10 var _ = this._;\r
11\r
12 if ( _.state == CKEDITOR.TRISTATE_DISABLED )\r
13 return;\r
14\r
15 this.createPanel( editor );\r
16\r
17 if ( _.on ) {\r
18 _.panel.hide();\r
19 return;\r
20 }\r
21\r
22 _.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );\r
23 }\r
24\r
25 /**\r
26 * @class\r
27 * @extends CKEDITOR.ui.button\r
28 * @todo class and methods\r
29 */\r
30 CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass( {\r
31 base: CKEDITOR.ui.button,\r
32\r
33 /**\r
34 * Creates a panelButton class instance.\r
35 *\r
36 * @constructor\r
37 */\r
38 $: function( definition ) {\r
39 // We don't want the panel definition in this object.\r
40 var panelDefinition = definition.panel || {};\r
41 delete definition.panel;\r
42\r
43 this.base( definition );\r
44\r
45 this.document = ( panelDefinition.parent && panelDefinition.parent.getDocument() ) || CKEDITOR.document;\r
46\r
47 panelDefinition.block = {\r
48 attributes: panelDefinition.attributes\r
49 };\r
50 panelDefinition.toolbarRelated = true;\r
51\r
52 this.hasArrow = true;\r
53\r
54 this.click = clickFn;\r
55\r
56 this._ = {\r
57 panelDefinition: panelDefinition\r
58 };\r
59 },\r
60\r
61 statics: {\r
62 handler: {\r
63 create: function( definition ) {\r
64 return new CKEDITOR.ui.panelButton( definition );\r
65 }\r
66 }\r
67 },\r
68\r
69 proto: {\r
70 createPanel: function( editor ) {\r
71 var _ = this._;\r
72\r
73 if ( _.panel )\r
74 return;\r
75\r
76 var panelDefinition = this._.panelDefinition,\r
77 panelBlockDefinition = this._.panelDefinition.block,\r
78 panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),\r
79 panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),\r
80 block = panel.addBlock( _.id, panelBlockDefinition ),\r
81 me = this;\r
82\r
83 panel.onShow = function() {\r
84 if ( me.className )\r
85 this.element.addClass( me.className + '_panel' );\r
86\r
87 me.setState( CKEDITOR.TRISTATE_ON );\r
88\r
89 _.on = 1;\r
90\r
91 me.editorFocus && editor.focus();\r
92\r
93 if ( me.onOpen )\r
94 me.onOpen();\r
95 };\r
96\r
97 panel.onHide = function( preventOnClose ) {\r
98 if ( me.className )\r
99 this.element.getFirst().removeClass( me.className + '_panel' );\r
100\r
101 me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );\r
102\r
103 _.on = 0;\r
104\r
105 if ( !preventOnClose && me.onClose )\r
106 me.onClose();\r
107 };\r
108\r
109 panel.onEscape = function() {\r
110 panel.hide( 1 );\r
111 me.document.getById( _.id ).focus();\r
112 };\r
113\r
114 if ( this.onBlock )\r
115 this.onBlock( panel, block );\r
116\r
117 block.onHide = function() {\r
118 _.on = 0;\r
119 me.setState( CKEDITOR.TRISTATE_OFF );\r
120 };\r
121 }\r
122 }\r
123 } );\r
124\r
125 },\r
126 beforeInit: function( editor ) {\r
127 editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler );\r
128 }\r
129} );\r
130\r
131/**\r
132 * Button UI element.\r
133 *\r
134 * @readonly\r
135 * @property {String} [='panelbutton']\r
136 * @member CKEDITOR\r
137 */\r
138CKEDITOR.UI_PANELBUTTON = 'panelbutton';\r