JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.5.1
[ckeditor.git] / _source / plugins / panelbutton / plugin.js
index 9d84fa2..b51b8a4 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
 For licensing, see LICENSE.html or http://ckeditor.com/license\r
 */\r
 \r
@@ -57,6 +57,11 @@ CKEDITOR.UI_PANELBUTTON = 4;
                                                                && panelDefinition.parent.getDocument() )\r
                                                        || CKEDITOR.document;\r
 \r
+                       panelDefinition.block =\r
+                       {\r
+                               attributes : panelDefinition.attributes\r
+                       };\r
+\r
                        this.hasArrow = true;\r
 \r
                        this.click = clickFn;\r
@@ -88,8 +93,10 @@ CKEDITOR.UI_PANELBUTTON = 4;
                                        return;\r
 \r
                                var panelDefinition = this._.panelDefinition || {},\r
+                                       panelBlockDefinition = this._.panelDefinition.block,\r
                                        panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(),\r
                                        panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ),\r
+                                       block = panel.addBlock( _.id, panelBlockDefinition ),\r
                                        me = this;\r
 \r
                                panel.onShow = function()\r
@@ -97,7 +104,6 @@ CKEDITOR.UI_PANELBUTTON = 4;
                                                if ( me.className )\r
                                                        this.element.getFirst().addClass( me.className + '_panel' );\r
 \r
-                                               _.oldState = me._.state;\r
                                                me.setState( CKEDITOR.TRISTATE_ON );\r
 \r
                                                _.on = 1;\r
@@ -106,16 +112,16 @@ CKEDITOR.UI_PANELBUTTON = 4;
                                                        me.onOpen();\r
                                        };\r
 \r
-                               panel.onHide = function()\r
+                               panel.onHide = function( preventOnClose )\r
                                        {\r
                                                if ( me.className )\r
                                                        this.element.getFirst().removeClass( me.className + '_panel' );\r
 \r
-                                               me.setState( _.oldState );\r
+                                               me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );\r
 \r
                                                _.on = 0;\r
 \r
-                                               if ( me.onClose )\r
+                                               if ( !preventOnClose && me.onClose )\r
                                                        me.onClose();\r
                                        };\r
 \r
@@ -126,13 +132,13 @@ CKEDITOR.UI_PANELBUTTON = 4;
                                        };\r
 \r
                                if ( this.onBlock )\r
-                                       this.onBlock( panel, _.id );\r
+                                       this.onBlock( panel, block );\r
 \r
-                               panel.getBlock( _.id ).onHide = function()\r
-                                               {\r
-                                                               _.on = 0;\r
-                                                               me.setState( CKEDITOR.TRISTATE_OFF );\r
-                                               };\r
+                               block.onHide = function()\r
+                                       {\r
+                                               _.on = 0;\r
+                                               me.setState( CKEDITOR.TRISTATE_OFF );\r
+                                       };\r
                        }\r
                }\r
        });\r