| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 | 
							- /*!
 
-  * Ext JS Library 4.0
 
-  * Copyright(c) 2006-2011 Sencha Inc.
 
-  * licensing@sencha.com
 
-  * http://www.sencha.com/license
 
-  */
 
- /**
 
-  * @class Ext.ux.desktop.TaskBar
 
-  * @extends Ext.toolbar.Toolbar
 
-  */
 
- Ext.define('Ext.ux.desktop.TaskBar', {
 
-     extend: 'Ext.toolbar.Toolbar', // TODO - make this a basic hbox panel...
 
-     requires: [
 
-         'Ext.button.Button',
 
-         'Ext.resizer.Splitter',
 
-         'Ext.menu.Menu',
 
-         'Ext.ux.desktop.StartMenu'
 
-     ],
 
-     alias: 'widget.taskbar',
 
-     cls: 'ux-taskbar',
 
-     /**
 
-      * @cfg {String} startBtnText
 
-      * The text for the Start Button.
 
-      */
 
-     startBtnText: 'Start',
 
-     initComponent: function () {
 
-         var me = this;
 
-         me.startMenu = new Ext.ux.desktop.StartMenu(me.startConfig);
 
-         me.quickStart = new Ext.toolbar.Toolbar(me.getQuickStart());
 
-         me.windowBar = new Ext.toolbar.Toolbar(me.getWindowBarConfig());
 
-         me.tray = new Ext.toolbar.Toolbar(me.getTrayConfig());
 
-         me.items = [
 
-             {
 
-                 xtype: 'button',
 
-                 cls: 'ux-start-button',
 
-                 iconCls: 'ux-start-button-icon',
 
-                 menu: me.startMenu,
 
-                 menuAlign: 'bl-tl',
 
-                 text: me.startBtnText
 
-             },
 
-             me.quickStart,
 
-             {
 
-                 xtype: 'splitter', html: ' ',
 
-                 height: 14, width: 2, // TODO - there should be a CSS way here
 
-                 cls: 'x-toolbar-separator x-toolbar-separator-horizontal'
 
-             },
 
-             //'-',
 
-             me.windowBar,
 
-             '-',
 
-             me.tray
 
-         ];
 
-         me.callParent();
 
-     },
 
-     afterLayout: function () {
 
-         var me = this;
 
-         me.callParent();
 
-         me.windowBar.el.on('contextmenu', me.onButtonContextMenu, me);
 
-     },
 
-     /**
 
-      * This method returns the configuration object for the Quick Start toolbar. A derived
 
-      * class can override this method, call the base version to build the config and
 
-      * then modify the returned object before returning it.
 
-      */
 
-     getQuickStart: function () {
 
-         var me = this, ret = {
 
-             minWidth: 20,
 
-             width: 60,
 
-             items: [],
 
-             enableOverflow: true
 
-         };
 
-         Ext.each(this.quickStart, function (item) {
 
-             ret.items.push({
 
-                 tooltip: { text: item.name, align: 'bl-tl' },
 
-                 //tooltip: item.name,
 
-                 overflowText: item.name,
 
-                 iconCls: item.iconCls,
 
-                 module: item.module,
 
-                 handler: me.onQuickStartClick,
 
-                 scope: me
 
-             });
 
-         });
 
-         return ret;
 
-     },
 
-     /**
 
-      * This method returns the configuration object for the Tray toolbar. A derived
 
-      * class can override this method, call the base version to build the config and
 
-      * then modify the returned object before returning it.
 
-      */
 
-     getTrayConfig: function () {
 
-         var ret = {
 
-             width: 80,
 
-             items: this.trayItems
 
-         };
 
-         delete this.trayItems;
 
-         return ret;
 
-     },
 
-     getWindowBarConfig: function () {
 
-         return {
 
-             flex: 1,
 
-             cls: 'ux-desktop-windowbar',
 
-             items: [ ' ' ],
 
-             layout: { overflowHandler: 'Scroller' }
 
-         };
 
-     },
 
-     getWindowBtnFromEl: function (el) {
 
-         var c = this.windowBar.getChildByElement(el);
 
-         return c || null;
 
-     },
 
-     onQuickStartClick: function (btn) {
 
-         var module = this.app.getModule(btn.module),
 
-             window;
 
-         if (module) {
 
-             window = module.createWindow();
 
-             window.show();
 
-         }
 
-     },
 
-     
 
-     onButtonContextMenu: function (e) {
 
-         var me = this, t = e.getTarget(), btn = me.getWindowBtnFromEl(t);
 
-         if (btn) {
 
-             e.stopEvent();
 
-             me.windowMenu.theWin = btn.win;
 
-             me.windowMenu.showBy(t);
 
-         }
 
-     },
 
-     onWindowBtnClick: function (btn) {
 
-         var win = btn.win;
 
-         if (win.minimized || win.hidden) {
 
-             win.show();
 
-         } else if (win.active) {
 
-             win.minimize();
 
-         } else {
 
-             win.toFront();
 
-         }
 
-     },
 
-     addTaskButton: function(win) {
 
-         var config = {
 
-             iconCls: win.iconCls,
 
-             enableToggle: true,
 
-             toggleGroup: 'all',
 
-             width: 140,
 
-             margins: '0 2 0 3',
 
-             text: Ext.util.Format.ellipsis(win.title, 20),
 
-             listeners: {
 
-                 click: this.onWindowBtnClick,
 
-                 scope: this
 
-             },
 
-             win: win
 
-         };
 
-         var cmp = this.windowBar.add(config);
 
-         cmp.toggle(true);
 
-         return cmp;
 
-     },
 
-     removeTaskButton: function (btn) {
 
-         var found, me = this;
 
-         me.windowBar.items.each(function (item) {
 
-             if (item === btn) {
 
-                 found = item;
 
-             }
 
-             return !found;
 
-         });
 
-         if (found) {
 
-             me.windowBar.remove(found);
 
-         }
 
-         return found;
 
-     },
 
-     setActiveButton: function(btn) {
 
-         if (btn) {
 
-             btn.toggle(true);
 
-         } else {
 
-             this.windowBar.items.each(function (item) {
 
-                 if (item.isButton) {
 
-                     item.toggle(false);
 
-                 }
 
-             });
 
-         }
 
-     }
 
- });
 
- /**
 
-  * @class Ext.ux.desktop.TrayClock
 
-  * @extends Ext.toolbar.TextItem
 
-  * This class displays a clock on the toolbar.
 
-  */
 
- Ext.define('Ext.ux.desktop.TrayClock', {
 
-     extend: 'Ext.toolbar.TextItem',
 
-     alias: 'widget.trayclock',
 
-     cls: 'ux-desktop-trayclock',
 
-     html: ' ',
 
-     timeFormat: 'g:i A',
 
-     tpl: '{time}',
 
-     initComponent: function () {
 
-         var me = this;
 
-         me.callParent();
 
-         if (typeof(me.tpl) == 'string') {
 
-             me.tpl = new Ext.XTemplate(me.tpl);
 
-         }
 
-     },
 
-     afterRender: function () {
 
-         var me = this;
 
-         Ext.Function.defer(me.updateTime, 100, me);
 
-         me.callParent();
 
-     },
 
-     onDestroy: function () {
 
-         var me = this;
 
-         if (me.timer) {
 
-             window.clearTimeout(me.timer);
 
-             me.timer = null;
 
-         }
 
-         me.callParent();
 
-     },
 
-     updateTime: function () {
 
-         var me = this, time = Ext.Date.format(new Date(), me.timeFormat),
 
-             text = me.tpl.apply({ time: time });
 
-         if (me.lastText != text) {
 
-             me.setText(text);
 
-             me.lastText = text;
 
-         }
 
-         me.timer = Ext.Function.defer(me.updateTime, 10000, me);
 
-     }
 
- });
 
 
  |