-<html>\r
-<head>\r
- <title>The source code</title>\r
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
-</head>\r
-<body onload="prettyPrint();">\r
- <pre class="prettyprint lang-js">Ext.Desktop = function(app){\r
- this.taskbar = new Ext.ux.TaskBar(app);\r
- var taskbar = this.taskbar;\r
- \r
- var desktopEl = Ext.get('x-desktop');\r
- var taskbarEl = Ext.get('ux-taskbar');\r
- var shortcuts = Ext.get('x-shortcuts');\r
-\r
- var windows = new Ext.WindowGroup();\r
- var activeWindow;\r
- \r
- function minimizeWin(win){\r
- win.minimized = true;\r
- win.hide();\r
- }\r
-\r
- function markActive(win){\r
- if(activeWindow && activeWindow != win){\r
- markInactive(activeWindow);\r
- }\r
- taskbar.setActiveButton(win.taskButton);\r
- activeWindow = win;\r
- Ext.fly(win.taskButton.el).addClass('active-win');\r
- win.minimized = false;\r
- }\r
-\r
- function markInactive(win){\r
- if(win == activeWindow){\r
- activeWindow = null;\r
- Ext.fly(win.taskButton.el).removeClass('active-win');\r
- }\r
- }\r
-\r
- function removeWin(win){\r
- taskbar.removeTaskButton(win.taskButton);\r
- layout();\r
- }\r
-\r
- function layout(){\r
- desktopEl.setHeight(Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight());\r
- }\r
- Ext.EventManager.onWindowResize(layout);\r
-\r
- this.layout = layout;\r
-\r
- this.createWindow = function(config, cls){\r
- var win = new (cls||Ext.Window)(\r
- Ext.applyIf(config||{}, {\r
- manager: windows,\r
- minimizable: true,\r
- maximizable: true\r
- })\r
- );\r
- win.render(desktopEl);\r
- win.taskButton = taskbar.addTaskButton(win);\r
-\r
- win.cmenu = new Ext.menu.Menu({\r
- items: [\r
-\r
- ]\r
- });\r
-\r
- win.animateTarget = win.taskButton.el;\r
- \r
- win.on({\r
- 'activate': {\r
- fn: markActive\r
- },\r
- 'beforeshow': {\r
- fn: markActive\r
- },\r
- 'deactivate': {\r
- fn: markInactive\r
- },\r
- 'minimize': {\r
- fn: minimizeWin\r
- },\r
- 'close': {\r
- fn: removeWin\r
- }\r
- });\r
- \r
- layout();\r
- return win;\r
- };\r
-\r
- this.getManager = function(){\r
- return windows;\r
- };\r
-\r
- this.getWindow = function(id){\r
- return windows.get(id);\r
- }\r
- \r
- this.getWinWidth = function(){\r
- var width = Ext.lib.Dom.getViewWidth();\r
- return width < 200 ? 200 : width;\r
- }\r
- \r
- this.getWinHeight = function(){\r
- var height = (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight());\r
- return height < 100 ? 100 : height;\r
- }\r
- \r
- this.getWinX = function(width){\r
- return (Ext.lib.Dom.getViewWidth() - width) / 2\r
- }\r
- \r
- this.getWinY = function(height){\r
- return (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight() - height) / 2;\r
- }\r
-\r
- layout();\r
-\r
- if(shortcuts){\r
- shortcuts.on('click', function(e, t){\r
- if(t = e.getTarget('dt', shortcuts)){\r
- e.stopEvent();\r
- var module = app.getModule(t.id.replace('-shortcut', ''));\r
- if(module){\r
- module.createWindow();\r
- }\r
- }\r
- });\r
- }\r
-};\r
-</pre> \r
-</body>\r
-</html>
\ No newline at end of file