CheckItem.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:4k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.1.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. /**
  8.  * @class Ext.menu.CheckItem
  9.  * @extends Ext.menu.Item
  10.  * Adds a menu item that contains a checkbox by default, but can also be part of a radio group.
  11.  * @constructor
  12.  * Creates a new CheckItem
  13.  * @param {Object} config Configuration options
  14.  * @xtype menucheckitem
  15.  */
  16. Ext.menu.CheckItem = Ext.extend(Ext.menu.Item, {
  17.     /**
  18.      * @cfg {String} group
  19.      * All check items with the same group name will automatically be grouped into a single-select
  20.      * radio button group (defaults to '')
  21.      */
  22.     /**
  23.      * @cfg {String} itemCls The default CSS class to use for check items (defaults to "x-menu-item x-menu-check-item")
  24.      */
  25.     itemCls : "x-menu-item x-menu-check-item",
  26.     /**
  27.      * @cfg {String} groupClass The default CSS class to use for radio group check items (defaults to "x-menu-group-item")
  28.      */
  29.     groupClass : "x-menu-group-item",
  30.     /**
  31.      * @cfg {Boolean} checked True to initialize this checkbox as checked (defaults to false).  Note that
  32.      * if this checkbox is part of a radio group (group = true) only the last item in the group that is
  33.      * initialized with checked = true will be rendered as checked.
  34.      */
  35.     checked: false,
  36.     // private
  37.     ctype: "Ext.menu.CheckItem",
  38.     
  39.     initComponent : function(){
  40.         Ext.menu.CheckItem.superclass.initComponent.call(this);
  41.     this.addEvents(
  42.         /**
  43.          * @event beforecheckchange
  44.          * Fires before the checked value is set, providing an opportunity to cancel if needed
  45.          * @param {Ext.menu.CheckItem} this
  46.          * @param {Boolean} checked The new checked value that will be set
  47.          */
  48.         "beforecheckchange" ,
  49.         /**
  50.          * @event checkchange
  51.          * Fires after the checked value has been set
  52.          * @param {Ext.menu.CheckItem} this
  53.          * @param {Boolean} checked The checked value that was set
  54.          */
  55.         "checkchange"
  56.     );
  57.     /**
  58.      * A function that handles the checkchange event.  The function is undefined by default, but if an implementation
  59.      * is provided, it will be called automatically when the checkchange event fires.
  60.      * @param {Ext.menu.CheckItem} this
  61.      * @param {Boolean} checked The checked value that was set
  62.      * @method checkHandler
  63.      */
  64.     if(this.checkHandler){
  65.         this.on('checkchange', this.checkHandler, this.scope);
  66.     }
  67.     Ext.menu.MenuMgr.registerCheckable(this);
  68.     },
  69.     // private
  70.     onRender : function(c){
  71.         Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
  72.         if(this.group){
  73.             this.el.addClass(this.groupClass);
  74.         }
  75.         if(this.checked){
  76.             this.checked = false;
  77.             this.setChecked(true, true);
  78.         }
  79.     },
  80.     // private
  81.     destroy : function(){
  82.         Ext.menu.MenuMgr.unregisterCheckable(this);
  83.         Ext.menu.CheckItem.superclass.destroy.apply(this, arguments);
  84.     },
  85.     /**
  86.      * Set the checked state of this item
  87.      * @param {Boolean} checked The new checked value
  88.      * @param {Boolean} suppressEvent (optional) True to prevent the checkchange event from firing (defaults to false)
  89.      */
  90.     setChecked : function(state, suppressEvent){
  91.         if(this.checked != state && this.fireEvent("beforecheckchange", this, state) !== false){
  92.             if(this.container){
  93.                 this.container[state ? "addClass" : "removeClass"]("x-menu-item-checked");
  94.             }
  95.             this.checked = state;
  96.             if(suppressEvent !== true){
  97.                 this.fireEvent("checkchange", this, state);
  98.             }
  99.         }
  100.     },
  101.     // private
  102.     handleClick : function(e){
  103.        if(!this.disabled && !(this.checked && this.group)){// disable unselect on radio item
  104.            this.setChecked(!this.checked);
  105.        }
  106.        Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments);
  107.     }
  108. });
  109. Ext.reg('menucheckitem', Ext.menu.CheckItem);