statusbar-demo.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:7k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ /*
  2.  * Ext JS Library 2.2
  3.  * Copyright(c) 2006-2008, Ext JS, LLC.
  4.  * licensing@extjs.com
  5.  *
  6.  * http://extjs.com/license
  7.  */
  8. Ext.onReady(function(){
  9.     // This is a shared function that simulates a load action on a StatusBar.
  10.     // It is reused by most of the example panels.
  11.     var loadFn = function(btn, statusBar){
  12.         btn = Ext.getCmp(btn);
  13.         statusBar = Ext.getCmp(statusBar);
  14.         btn.disable();
  15.         statusBar.showBusy();
  16.         (function(){
  17.             statusBar.clearStatus({useDefaults:true});
  18.             btn.enable();
  19.         }).defer(2000);
  20.     };
  21. /*
  22.  * ================  Basic StatusBar example  =======================
  23.  */
  24.     new Ext.Panel({
  25.         title: 'Basic StatusBar',
  26.         renderTo: 'basic',
  27.         width: 350,
  28.         height: 100,
  29.         bodyStyle: 'padding:10px;',
  30.         items:[{
  31.             xtype: 'button',
  32.             id: 'basic-button',
  33.             text: 'Do Loading',
  34.             handler: loadFn.createCallback('basic-button', 'basic-statusbar')
  35.         }],
  36.         bbar: new Ext.ux.StatusBar({
  37.             defaultText: 'Default status',
  38.             id: 'basic-statusbar',
  39.         items: [{
  40.             text: 'A Button'
  41.         }, '-', 'Plain Text', ' ', ' ']
  42.         })
  43.     });
  44. /*
  45.  * ================  Right-aligned StatusBar example  =======================
  46.  */
  47.     new Ext.Panel({
  48.         title: 'Right-aligned StatusBar',
  49.         renderTo: 'right-aligned',
  50.         width: 350,
  51.         height: 100,
  52.         bodyStyle: 'padding:10px;',
  53.         items:[{
  54.             xtype: 'button',
  55.             id: 'right-button',
  56.             text: 'Do Loading',
  57.             handler: loadFn.createCallback('right-button', 'right-statusbar')
  58.         }],
  59.         bbar: new Ext.ux.StatusBar({
  60.             defaultText: 'Default status',
  61.             id: 'right-statusbar',
  62.             statusAlign: 'right', // the magic config
  63.             items: [{
  64.                 text: 'A Button'
  65.             }, '-', 'Plain Text', ' ', ' ']
  66.         })
  67.     });
  68. /*
  69.  * ================  StatusBar Window example  =======================
  70.  */
  71.     var win = new Ext.Window({
  72.         title: 'StatusBar Window',
  73.         width: 400,
  74.         minWidth: 350,
  75.         height: 150,
  76.         modal: true,
  77.         closeAction: 'hide',
  78.         bodyStyle: 'padding:10px;',
  79.         items:[{
  80.             xtype: 'button',
  81.             id: 'win-button',
  82.             text: 'Do Loading',
  83.             handler: loadFn.createCallback('win-button', 'win-statusbar')
  84.         }],
  85.         bbar: new Ext.ux.StatusBar({
  86.             id: 'win-statusbar',
  87.             defaultText: 'Ready',
  88.             items: [{
  89.                 text: 'A Button'
  90.             }, '-',
  91.             new Date().format('n/d/Y'), ' ', ' ', '-', {
  92.                 xtype:'tbsplit',
  93.                 text:'Status Menu',
  94.                 menuAlign: 'br-tr?',
  95.                 menu: new Ext.menu.Menu({
  96.                     items: [{text: 'Item 1'}, {text: 'Item 2'}]
  97.                 })
  98.             }]
  99.         })
  100.     });
  101.     new Ext.Button({
  102.         text: 'Show Window',
  103.         renderTo: 'window',
  104.         handler: function(){
  105.             win.show();
  106.         }
  107.     });
  108. /*
  109.  * ================  Ext Word Processor example  =======================
  110.  *
  111.  * The StatusBar used in this example is completely standard.  What is
  112.  * customized are the styles and event handling to make the example a
  113.  * lot more dynamic and application-oriented.
  114.  *
  115.  */
  116.     // Create these explicitly so we can manipulate them later
  117.     var wordCount = new Ext.Toolbar.TextItem('Words: 0');
  118.     var charCount = new Ext.Toolbar.TextItem('Chars: 0');
  119.     var clock = new Ext.Toolbar.TextItem('');
  120.     new Ext.Panel({
  121.         title: 'Ext Word Processor',
  122.         renderTo: 'word-proc',
  123.         width: 500,
  124.         autoHeight: true,
  125.         bodyStyle: 'padding:5px;',
  126.         layout: 'fit',
  127.         bbar: new Ext.ux.StatusBar({
  128.             id: 'word-status',
  129.             // These are just the standard toolbar TextItems we created above.  They get
  130.             // custom classes below in the render handler which is what gives them their
  131.             // customized inset appearance.
  132.             items: [wordCount, ' ', charCount, ' ', clock, ' ']
  133.         }),
  134.         items: {
  135.             xtype: 'textarea',
  136.             id: 'word-textarea',
  137.             enableKeyEvents: true,
  138.             grow: true,
  139.             growMin: 100,
  140.             growMax: 200,
  141.             listeners: {
  142.                 // After each keypress update the word and character count text items
  143.                 'keypress': {
  144.                     fn: function(t){
  145.                         var v = t.getValue(),
  146.                             wc = 0, cc = v.length ? v.length : 0;
  147.                         if(cc > 0){
  148.                             wc = v.match(/b/g);
  149.                             wc = wc ? wc.length / 2 : 0;
  150.                         }
  151.                     Ext.fly(wordCount.getEl()).update('Words: '+wc);
  152.                         Ext.fly(charCount.getEl()).update('Chars: '+cc);
  153.                 },
  154.                     buffer: 1 // buffer to allow the value to update first
  155.                 }
  156.             }
  157.         },
  158.         listeners: {
  159.             render: {
  160.                 fn: function(){
  161.                     // Add a class to the parent TD of each text item so we can give them some custom inset box
  162.                     // styling. Also, since we are using a greedy spacer, we have to add a block level element
  163.                     // into each text TD in order to give them a fixed width (TextItems are spans).  Insert a
  164.                     // spacer div into each TD using createChild() so that we can give it a width in CSS.
  165.                     Ext.fly(wordCount.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  166.                     Ext.fly(charCount.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  167.                     Ext.fly(clock.getEl().parent()).addClass('x-status-text-panel').createChild({cls:'spacer'});
  168.                     // Kick off the clock timer that updates the clock el every second:
  169.     Ext.TaskMgr.start({
  170.         run: function(){
  171.             Ext.fly(clock.getEl()).update(new Date().format('g:i:s A'));
  172.         },
  173.         interval: 1000
  174.     });
  175.                 },
  176.                 delay: 100
  177.             }
  178.         }
  179.     });
  180.     // This sets up a fake auto-save function.  It monitors keyboard activity and after no typing
  181.     // has occurred for 1.5 seconds, it updates the status message to indicate that it's saving.
  182.     // After a fake delay so that you can see the save activity it will update again to indicate
  183.     // that the action succeeded.
  184.     Ext.fly('word-textarea').on('keypress', function(){
  185.         var sb = Ext.getCmp('word-status');
  186.         sb.showBusy('Saving draft...');
  187.         (function(){
  188.             sb.setStatus({
  189.                 iconCls: 'x-status-saved',
  190.                 text: 'Draft auto-saved at ' + new Date().format('g:i:s A')
  191.             });
  192.         }).defer(4000);
  193.     }, this, {buffer:1500});
  194. });