123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- Ext.Loader.setConfig({
- enabled: true
- });
- Ext.Loader.setPath('Ext.ux', '../ux/');
- Ext.require([
- 'Ext.panel.Panel',
- 'Ext.button.Button',
- 'Ext.window.Window',
- 'Ext.ux.statusbar.StatusBar',
- 'Ext.toolbar.TextItem',
- 'Ext.menu.Menu',
- 'Ext.toolbar.Spacer',
- 'Ext.button.Split',
- 'Ext.form.field.TextArea'
- ]);
- Ext.onReady(function(){
- // This is a shared function that simulates a load action on a StatusBar.
- // It is reused by most of the example panels.
- var loadFn = function(btn, statusBar){
- btn = Ext.getCmp(btn);
- statusBar = Ext.getCmp(statusBar);
- btn.disable();
- statusBar.showBusy();
- Ext.defer(function(){
- statusBar.clearStatus({useDefaults:true});
- btn.enable();
- }, 2000);
- };
- /*
- * ================ Basic StatusBar example =======================
- */
- Ext.create('Ext.Panel', {
- title: 'Basic StatusBar',
- renderTo: 'basic',
- width: 550,
- height: 100,
- bodyPadding: 10,
- items:[{
- xtype: 'button',
- id: 'basic-button',
- text: 'Do Loading',
- handler: Ext.Function.pass(loadFn, ['basic-button', 'basic-statusbar'])
- }],
- bbar: Ext.create('Ext.ux.StatusBar', {
- id: 'basic-statusbar',
- // defaults to use when the status is cleared:
- defaultText: 'Default status text',
- //defaultIconCls: 'default-icon',
-
- // values to set initially:
- text: 'Ready',
- iconCls: 'x-status-valid',
- // any standard Toolbar items:
- items: [
- {
- xtype: 'button',
- text: 'Show Warning & Clear',
- handler: function (){
- var sb = Ext.getCmp('basic-statusbar');
- sb.setStatus({
- text: 'Oops!',
- iconCls: 'x-status-error',
- clear: true // auto-clear after a set interval
- });
- }
- },
- {
- xtype: 'button',
- text: 'Show Busy',
- handler: function (){
- var sb = Ext.getCmp('basic-statusbar');
- // Set the status bar to show that something is processing:
- sb.showBusy();
- }
- },
- {
- xtype: 'button',
- text: 'Clear status',
- handler: function (){
- var sb = Ext.getCmp('basic-statusbar');
- // once completed
- sb.clearStatus();
- }
- },
- '-',
- 'Plain Text'
- ]
- })
- });
- /*
- * ================ Right-aligned StatusBar example =======================
- */
- Ext.create('Ext.Panel', {
- title: 'Right-aligned StatusBar',
- renderTo: 'right-aligned',
- width: 550,
- height: 100,
- bodyPadding: 10,
- items:[{
- xtype: 'button',
- id: 'right-button',
- text: 'Do Loading',
- handler: Ext.Function.pass(loadFn, ['right-button', 'right-statusbar'])
- }],
- bbar: Ext.create('Ext.ux.StatusBar', {
- defaultText: 'Default status',
- id: 'right-statusbar',
- statusAlign: 'right', // the magic config
- items: [{
- text: 'A Button'
- }, '-', 'Plain Text', ' ', ' ']
- })
- });
- /*
- * ================ StatusBar Window example =======================
- */
- var win = Ext.create('Ext.Window', {
- title: 'StatusBar Window',
- width: 400,
- minWidth: 350,
- height: 150,
- modal: true,
- closeAction: 'hide',
- bodyPadding: 10,
- items:[{
- xtype: 'button',
- id: 'win-button',
- text: 'Do Loading',
- handler: Ext.Function.pass(loadFn, ['win-button', 'win-statusbar'])
- }],
- bbar: Ext.create('Ext.ux.StatusBar', {
- id: 'win-statusbar',
- defaultText: 'Ready',
- items: [{
- xtype: 'button',
- text: 'A Button'
- }, '-',
- Ext.Date.format(new Date(), 'n/d/Y'), ' ', ' ', '-', {
- xtype:'splitbutton',
- text:'Status Menu',
- menuAlign: 'br-tr?',
- menu: Ext.create('Ext.menu.Menu', {
- items: [{text: 'Item 1'}, {text: 'Item 2'}]
- })
- }]
- })
- });
- Ext.create('Ext.Button', {
- text: 'Show Window',
- renderTo: 'window',
- handler: function(){
- win.show();
- }
- });
- /*
- * ================ Ext Word Processor example =======================
- *
- * The StatusBar used in this example is completely standard. What is
- * customized are the styles and event handling to make the example a
- * lot more dynamic and application-oriented.
- *
- */
- // Create these explicitly so we can manipulate them later
- var wordCount = Ext.create('Ext.toolbar.TextItem', {text: 'Words: 0'}),
- charCount = Ext.create('Ext.toolbar.TextItem', {text: 'Chars: 0'}),
- clock = Ext.create('Ext.toolbar.TextItem', {text: Ext.Date.format(new Date(), 'g:i:s A')}),
- event = Ext.isOpera ? 'keypress' : 'keydown'; // opera behaves a little weird with keydown
- Ext.create('Ext.Panel', {
- title: 'Ext Word Processor',
- renderTo: 'word-proc',
- width: 500,
- bodyPadding: 5,
- layout: 'fit',
- bbar: Ext.create('Ext.ux.StatusBar', {
- id: 'word-status',
- // These are just the standard toolbar TextItems we created above. They get
- // custom classes below in the render handler which is what gives them their
- // customized inset appearance.
- items: [wordCount, ' ', charCount, ' ', clock, ' ']
- }),
- items: {
- xtype: 'textarea',
- id: 'word-textarea',
- enableKeyEvents: true,
- hideLabel: true,
- grow: true,
- growMin: 100,
- growMax: 200
- },
- listeners: {
- render: {
- fn: function(){
- // Add a class to the parent TD of each text item so we can give them some custom inset box
- // styling. Also, since we are using a greedy spacer, we have to add a block level element
- // into each text TD in order to give them a fixed width (TextItems are spans). Insert a
- // spacer div into each TD using createChild() so that we can give it a width in CSS.
- Ext.fly(wordCount.getEl().parent()).addCls('x-status-text-panel').createChild({cls:'spacer'});
- Ext.fly(charCount.getEl().parent()).addCls('x-status-text-panel').createChild({cls:'spacer'});
- Ext.fly(clock.getEl().parent()).addCls('x-status-text-panel').createChild({cls:'spacer'});
- // Kick off the clock timer that updates the clock el every second:
- Ext.TaskManager.start({
- run: function(){
- Ext.fly(clock.getEl()).update(Ext.Date.format(new Date(), 'g:i:s A'));
- },
- interval: 1000
- });
- },
- delay: 100
- }
- }
- });
- // This sets up a fake auto-save function. It monitors keyboard activity and after no typing
- // has occurred for 1.5 seconds, it updates the status message to indicate that it's saving.
- // After a fake delay so that you can see the save activity it will update again to indicate
- // that the action succeeded.
- Ext.getCmp('word-textarea').on(event, function(){
- var sb = Ext.getCmp('word-status');
- sb.showBusy('Saving draft...');
- Ext.defer(function(){
- sb.setStatus({
- iconCls: 'x-status-saved',
- text: 'Draft auto-saved at ' + Ext.Date.format(new Date(), 'g:i:s A')
- });
- }, 4000);
- }, null, {buffer:1500});
-
- // Set up our event for updating the word/char count
- Ext.getCmp('word-textarea').on(event, function(comp){
- var v = comp.getValue(),
- wc = 0,
- cc = v.length ? v.length : 0;
- if (cc > 0) {
- wc = v.match(/\b/g);
- wc = wc ? wc.length / 2 : 0;
- }
- wordCount.update('Words: ' + wc);
- charCount.update('Chars: ' + cc);
- }, null, {buffer: 1});
- });
|