123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /**
- * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or http://ckeditor.com/license
- */
- CKEDITOR.plugins.add( 'menubutton', {
- requires: 'button,menu',
- onLoad: function() {
- var clickFn = function( editor ) {
- var _ = this._,
- menu = _.menu;
- // Do nothing if this button is disabled.
- if ( _.state === CKEDITOR.TRISTATE_DISABLED )
- return;
- if ( _.on && menu ) {
- menu.hide();
- return;
- }
- _.previousState = _.state;
- // Check if we already have a menu for it, otherwise just create it.
- if ( !menu ) {
- menu = _.menu = new CKEDITOR.menu( editor, {
- panel: {
- className: 'cke_menu_panel',
- attributes: { 'aria-label': editor.lang.common.options }
- }
- } );
- menu.onHide = CKEDITOR.tools.bind( function() {
- var modes = this.command ? editor.getCommand( this.command ).modes : this.modes;
- this.setState( !modes || modes[ editor.mode ] ? _.previousState : CKEDITOR.TRISTATE_DISABLED );
- _.on = 0;
- }, this );
- // Initialize the menu items at this point.
- if ( this.onMenu )
- menu.addListener( this.onMenu );
- }
- this.setState( CKEDITOR.TRISTATE_ON );
- _.on = 1;
- // This timeout is needed to give time for the panel get focus
- // when JAWS is running. (#9842)
- setTimeout( function() {
- menu.show( CKEDITOR.document.getById( _.id ), 4 );
- }, 0 );
- };
- /**
- * @class
- * @extends CKEDITOR.ui.button
- * @todo
- */
- CKEDITOR.ui.menuButton = CKEDITOR.tools.createClass( {
- base: CKEDITOR.ui.button,
- /**
- * Creates a menuButton class instance.
- *
- * @constructor
- * @param Object definition
- * @todo
- */
- $: function( definition ) {
- // We don't want the panel definition in this object.
- delete definition.panel;
- this.base( definition );
- this.hasArrow = true;
- this.click = clickFn;
- },
- statics: {
- handler: {
- create: function( definition ) {
- return new CKEDITOR.ui.menuButton( definition );
- }
- }
- }
- } );
- },
- beforeInit: function( editor ) {
- editor.ui.addHandler( CKEDITOR.UI_MENUBUTTON, CKEDITOR.ui.menuButton.handler );
- }
- } );
- /**
- * Button UI element.
- *
- * @readonly
- * @property {String} [='menubutton']
- * @member CKEDITOR
- */
- CKEDITOR.UI_MENUBUTTON = 'menubutton';
|