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

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. Ext.onReady(function(){
  8.     Ext.QuickTips.init();
  9.     // Menus can be prebuilt and passed by reference
  10.     var dateMenu = new Ext.menu.DateMenu({
  11.         handler: function(dp, date){
  12.             Ext.example.msg('Date Selected', 'You chose {0}.', date.format('M j, Y'));
  13.         }
  14.     });
  15.     var colorMenu = new Ext.menu.ColorMenu({
  16.         handler: function(cm, color){
  17.             Ext.example.msg('Color Selected', 'You chose {0}.', color);
  18.         }
  19.     });
  20.     
  21.     var store = new Ext.data.ArrayStore({
  22.         fields: ['abbr', 'state'],
  23.         data : Ext.exampledata.states // from states.js
  24.     });
  25.     var combo = new Ext.form.ComboBox({
  26.         store: store,
  27.         displayField: 'state',
  28.         typeAhead: true,
  29.         mode: 'local',
  30.         triggerAction: 'all',
  31.         emptyText: 'Select a state...',
  32.         selectOnFocus: true,
  33.         width: 135,
  34.         getListParent: function() {
  35.             return this.el.up('.x-menu');
  36.         },
  37.         iconCls: 'no-icon'
  38.     });
  39.     var menu = new Ext.menu.Menu({
  40.         id: 'mainMenu',
  41.         style: {
  42.             overflow: 'visible'     // For the Combo popup
  43.         },
  44.         items: [
  45.             combo,                  // A Field in a Menu
  46.             {
  47.                 text: 'I like Ext',
  48.                 checked: true,       // when checked has a boolean value, it is assumed to be a CheckItem
  49.                 checkHandler: onItemCheck
  50.             }, '-', {
  51.                 text: 'Radio Options',
  52.                 menu: {        // <-- submenu by nested config object
  53.                     items: [
  54.                         // stick any markup in a menu
  55.                         '<b class="menu-title">Choose a Theme</b>',
  56.                         {
  57.                             text: 'Aero Glass',
  58.                             checked: true,
  59.                             group: 'theme',
  60.                             checkHandler: onItemCheck
  61.                         }, {
  62.                             text: 'Vista Black',
  63.                             checked: false,
  64.                             group: 'theme',
  65.                             checkHandler: onItemCheck
  66.                         }, {
  67.                             text: 'Gray Theme',
  68.                             checked: false,
  69.                             group: 'theme',
  70.                             checkHandler: onItemCheck
  71.                         }, {
  72.                             text: 'Default Theme',
  73.                             checked: false,
  74.                             group: 'theme',
  75.                             checkHandler: onItemCheck
  76.                         }
  77.                     ]
  78.                 }
  79.             },{
  80.                 text: 'Choose a Date',
  81.                 iconCls: 'calendar',
  82.                 menu: dateMenu // <-- submenu by reference
  83.             },{
  84.                 text: 'Choose a Color',
  85.                 menu: colorMenu // <-- submenu by reference
  86.             }
  87.         ]
  88.     });
  89.     var tb = new Ext.Toolbar();
  90.     tb.render('toolbar');
  91.     tb.add({
  92.             text:'Button w/ Menu',
  93.             iconCls: 'bmenu',  // <-- icon
  94.             menu: menu  // assign menu by instance
  95.         }, {
  96.             text: 'Users',
  97.             iconCls: 'user',
  98.             menu: {
  99.                 xtype: 'menu',
  100.                 plain: true,
  101.                 items: {
  102.                     xtype: 'buttongroup',
  103.                     title: 'User options',
  104.                     autoWidth: true,
  105.                     columns: 2,
  106.                     defaults: {
  107.                         xtype: 'button',
  108.                         scale: 'large',
  109.                         width: '100%',
  110.                         iconAlign: 'left'
  111.                     },
  112.                     items: [{
  113.                         text: 'User<br/>manager',
  114.                         iconCls: 'edit'
  115.                     },{
  116.                         iconCls: 'add',
  117.                         width: 'auto',
  118.                         tooltip: 'Add user'
  119.                     },{
  120.                         colspan: 2,
  121.                         text: 'Import',
  122.                         scale: 'small'
  123.                     },{
  124.                         colspan: 2,
  125.                         text: 'Who is online?',
  126.                         scale: 'small'
  127.                     }]
  128.                 }
  129.             }
  130.         },
  131.         new Ext.Toolbar.SplitButton({
  132.             text: 'Split Button',
  133.             handler: onButtonClick,
  134.             tooltip: {text:'This is a an example QuickTip for a toolbar item', title:'Tip Title'},
  135.             iconCls: 'blist',
  136.             // Menus can be built/referenced by using nested menu config objects
  137.             menu : {
  138.                 items: [{
  139.                     text: '<b>Bold</b>', handler: onItemClick
  140.                 }, {
  141.                     text: '<i>Italic</i>', handler: onItemClick
  142.                 }, {
  143.                     text: '<u>Underline</u>', handler: onItemClick
  144.                 }, '-', {
  145.                     text: 'Pick a Color',
  146.                     handler: onItemClick,
  147.                     menu: {
  148.                         items: [
  149.                             new Ext.ColorPalette({
  150.                                 listeners: {
  151.                                     select: function(cp, color){
  152.                                         Ext.example.msg('Color Selected', 'You chose {0}.', color);
  153.                                     }
  154.                                 }
  155.                             }), '-',
  156.                             {
  157.                                 text: 'More Colors...',
  158.                                 handler: onItemClick
  159.                             }
  160.                         ]
  161.                     }
  162.                 }, {
  163.                     text: 'Extellent!',
  164.                     handler: onItemClick
  165.                 }]
  166.             }
  167.         }), '-', {
  168.         text: 'Toggle Me',
  169.         enableToggle: true,
  170.         toggleHandler: onItemToggle,
  171.         pressed: true
  172.     });
  173.     menu.addSeparator();
  174.     // Menus have a rich api for
  175.     // adding and removing elements dynamically
  176.     var item = menu.add({
  177.         text: 'Dynamically added Item'
  178.     });
  179.     // items support full Observable API
  180.     item.on('click', onItemClick);
  181.     // items can easily be looked up
  182.     menu.add({
  183.         text: 'Disabled Item',
  184.         id: 'disableMe'  // <-- Items can also have an id for easy lookup
  185.         // disabled: true   <-- allowed but for sake of example we use long way below
  186.     });
  187.     // access items by id or index
  188.     menu.items.get('disableMe').disable();
  189.     // They can also be referenced by id in or components
  190.     tb.add('-', {
  191.         icon: 'list-items.gif', // icons can also be specified inline
  192.         cls: 'x-btn-icon',
  193.         tooltip: '<b>Quick Tips</b><br/>Icon only button with tooltip'
  194.     }, '-');
  195.     
  196.     var scrollMenu = new Ext.menu.Menu();
  197.     for (var i = 0; i < 50; ++i){
  198.         scrollMenu.add({
  199.             text: 'Item ' + (i + 1)
  200.         });
  201.     }
  202.     // scrollable menu
  203.     tb.add({
  204.         icon: 'preview.png',
  205.         cls: 'x-btn-text-icon',
  206.         text: 'Scrolling Menu',
  207.         menu: scrollMenu
  208.     });
  209.     // add a combobox to the toolbar
  210.     var combo = new Ext.form.ComboBox({
  211.         store: store,
  212.         displayField: 'state',
  213.         typeAhead: true,
  214.         mode: 'local',
  215.         triggerAction: 'all',
  216.         emptyText:'Select a state...',
  217.         selectOnFocus:true,
  218.         width:135
  219.     });
  220.     tb.addField(combo);
  221.     tb.doLayout();
  222.     // functions to display feedback
  223.     function onButtonClick(btn){
  224.         Ext.example.msg('Button Click','You clicked the "{0}" button.', btn.text);
  225.     }
  226.     function onItemClick(item){
  227.         Ext.example.msg('Menu Click', 'You clicked the "{0}" menu item.', item.text);
  228.     }
  229.     function onItemCheck(item, checked){
  230.         Ext.example.msg('Item Check', 'You {1} the "{0}" menu item.', item.text, checked ? 'checked' : 'unchecked');
  231.     }
  232.     function onItemToggle(item, pressed){
  233.         Ext.example.msg('Button Toggled', 'Button "{0}" was toggled to {1}.', item.text, pressed);
  234.     }
  235. });