X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Fpanelbutton%2Fplugin.js;h=eba97cd3ff4cf29ab8bb1a8d59939dda7a051bd2;hb=f0610347140239143439a511ee2bd48cb784f470;hp=9d84fa2cd4425bce942759ae7461ebf86e1d1795;hpb=941b0a9ba4e673e292510d80a5a86806994b8ea6;p=ckeditor.git diff --git a/_source/plugins/panelbutton/plugin.js b/_source/plugins/panelbutton/plugin.js index 9d84fa2..eba97cd 100644 --- a/_source/plugins/panelbutton/plugin.js +++ b/_source/plugins/panelbutton/plugin.js @@ -1,140 +1,144 @@ /* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.add( 'panelbutton', { requires : [ 'button' ], - beforeInit : function( editor ) + onLoad : function() { - editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler ); - } -}); - -/** - * Button UI element. - * @constant - * @example - */ -CKEDITOR.UI_PANELBUTTON = 4; + function clickFn( editor ) + { + var _ = this._; -(function() -{ - var clickFn = function( editor ) - { - var _ = this._; + if ( _.state == CKEDITOR.TRISTATE_DISABLED ) + return; - if ( _.state == CKEDITOR.TRISTATE_DISABLED ) - return; + this.createPanel( editor ); - this.createPanel( editor ); + if ( _.on ) + { + _.panel.hide(); + return; + } - if ( _.on ) - { - _.panel.hide(); - return; + _.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 ); } - _.panel.showBlock( this._.id, this.document.getById( this._.id ), 4 ); - }; + CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass( + { + base : CKEDITOR.ui.button, + $ : function( definition ) + { + // We don't want the panel definition in this object. + var panelDefinition = definition.panel; + delete definition.panel; - CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass( - { - base : CKEDITOR.ui.button, + this.base( definition ); - $ : function( definition ) - { - // We don't want the panel definition in this object. - var panelDefinition = definition.panel; - delete definition.panel; + this.document = ( panelDefinition + && panelDefinition.parent + && panelDefinition.parent.getDocument() ) + || CKEDITOR.document; - this.base( definition ); - - this.document = ( panelDefinition - && panelDefinition.parent - && panelDefinition.parent.getDocument() ) - || CKEDITOR.document; + panelDefinition.block = + { + attributes : panelDefinition.attributes + }; - this.hasArrow = true; + this.hasArrow = true; - this.click = clickFn; + this.click = clickFn; - this._ = - { - panelDefinition : panelDefinition - }; - }, + this._ = + { + panelDefinition : panelDefinition + }; + }, - statics : - { - handler : + statics : { - create : function( definition ) + handler : { - return new CKEDITOR.ui.panelButton( definition ); + create : function( definition ) + { + return new CKEDITOR.ui.panelButton( definition ); + } } - } - }, + }, - proto : - { - createPanel : function( editor ) + proto : { - var _ = this._; + createPanel : function( editor ) + { + var _ = this._; - if ( _.panel ) - return; + if ( _.panel ) + return; - var panelDefinition = this._.panelDefinition || {}, - panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(), - panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ), - me = this; + var panelDefinition = this._.panelDefinition || {}, + panelBlockDefinition = this._.panelDefinition.block, + panelParentElement = panelDefinition.parent || CKEDITOR.document.getBody(), + panel = this._.panel = new CKEDITOR.ui.floatPanel( editor, panelParentElement, panelDefinition ), + block = panel.addBlock( _.id, panelBlockDefinition ), + me = this; - panel.onShow = function() - { - if ( me.className ) - this.element.getFirst().addClass( me.className + '_panel' ); + panel.onShow = function() + { + if ( me.className ) + this.element.getFirst().addClass( me.className + '_panel' ); - _.oldState = me._.state; - me.setState( CKEDITOR.TRISTATE_ON ); + me.setState( CKEDITOR.TRISTATE_ON ); - _.on = 1; + _.on = 1; - if ( me.onOpen ) - me.onOpen(); - }; + if ( me.onOpen ) + me.onOpen(); + }; - panel.onHide = function() - { - if ( me.className ) - this.element.getFirst().removeClass( me.className + '_panel' ); + panel.onHide = function( preventOnClose ) + { + if ( me.className ) + this.element.getFirst().removeClass( me.className + '_panel' ); - me.setState( _.oldState ); + me.setState( me.modes && me.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); - _.on = 0; + _.on = 0; - if ( me.onClose ) - me.onClose(); - }; + if ( !preventOnClose && me.onClose ) + me.onClose(); + }; - panel.onEscape = function() - { - panel.hide(); - me.document.getById( _.id ).focus(); - }; + panel.onEscape = function() + { + panel.hide(); + me.document.getById( _.id ).focus(); + }; - if ( this.onBlock ) - this.onBlock( panel, _.id ); + if ( this.onBlock ) + this.onBlock( panel, block ); - panel.getBlock( _.id ).onHide = function() + block.onHide = function() { - _.on = 0; - me.setState( CKEDITOR.TRISTATE_OFF ); + _.on = 0; + me.setState( CKEDITOR.TRISTATE_OFF ); }; + } } - } - }); + }); + + }, + beforeInit : function( editor ) + { + editor.ui.addHandler( CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler ); + } +}); -})(); +/** + * Button UI element. + * @constant + * @example + */ +CKEDITOR.UI_PANELBUTTON = 'panelbutton';