--- /dev/null
+<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