source: sandbox/2.3-MailArchiver/filemanager/tp/ckeditor/_source/plugins/panelbutton/plugin.js @ 6779

Revision 6779, 2.7 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
6CKEDITOR.plugins.add( 'panelbutton',
7{
8        requires : [ 'button' ],
9        beforeInit : function( editor )
10        {
11                editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler );
12        }
13});
14
15/**
16 * Button UI element.
17 * @constant
18 * @example
19 */
20CKEDITOR.UI_PANELBUTTON = 4;
21
22(function()
23{
24        var clickFn = function( editor )
25        {
26                var _ = this._;
27
28                if ( _.state == CKEDITOR.TRISTATE_DISABLED )
29                        return;
30
31                this.createPanel( editor );
32
33                if ( _.on )
34                {
35                        _.panel.hide();
36                        return;
37                }
38
39                _.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 );
40        };
41
42
43        CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass(
44        {
45                base : CKEDITOR.ui.button,
46
47                $ : function( definition )
48                {
49                        // We don't want the panel definition in this object.
50                        var panelDefinition = definition.panel;
51                        delete definition.panel;
52
53                        this.base( definition );
54
55                        this.document = ( panelDefinition
56                                                                && panelDefinition.parent
57                                                                && panelDefinition.parent.getDocument() )
58                                                        || CKEDITOR.document;
59
60                        this.hasArrow = true;
61
62                        this.click = clickFn;
63
64                        this._ =
65                        {
66                                panelDefinition : panelDefinition
67                        };
68                },
69
70                statics :
71                {
72                        handler :
73                        {
74                                create : function( definition )
75                                {
76                                        return new CKEDITOR.ui.panelButton( definition );
77                                }
78                        }
79                },
80
81                proto :
82                {
83                        createPanel : function( editor )
84                        {
85                                var _ = this._;
86
87                                if ( _.panel )
88                                        return;
89
90                                var panelDefinition = this._.panelDefinition || {},
91                                        panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),
92                                        panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),
93                                        me = this;
94
95                                panel.onShow = function()
96                                        {
97                                                if ( me.className )
98                                                        this.element.getFirst().addClass( me.className + '_panel' );
99
100                                                _.oldState = me._.state;
101                                                me.setState( CKEDITOR.TRISTATE_ON );
102
103                                                _.on = 1;
104
105                                                if ( me.onOpen )
106                                                        me.onOpen();
107                                        };
108
109                                panel.onHide = function()
110                                        {
111                                                if ( me.className )
112                                                        this.element.getFirst().removeClass( me.className + '_panel' );
113
114                                                me.setState( _.oldState );
115
116                                                _.on = 0;
117
118                                                if ( me.onClose )
119                                                        me.onClose();
120                                        };
121
122                                panel.onEscape = function()
123                                        {
124                                                panel.hide();
125                                                me.document.getById( _.id ).focus();
126                                        };
127
128                                if ( this.onBlock )
129                                        this.onBlock( panel, _.id );
130
131                                panel.getBlock( _.id ).onHide = function()
132                                                {
133                                                                _.on = 0;
134                                                                me.setState( CKEDITOR.TRISTATE_OFF );
135                                                };
136                        }
137                }
138        });
139
140})();
Note: See TracBrowser for help on using the repository browser.