Upgrade to ExtJS 3.1.1 - Released 02/08/2010
[extjs.git] / examples / desktop / js / Desktop.js
1 /*!
2  * Ext JS Library 3.1.1
3  * Copyright(c) 2006-2010 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 Ext.Desktop = function(app){\r
8         this.taskbar = new Ext.ux.TaskBar(app);\r
9         var taskbar = this.taskbar;\r
10         \r
11         var desktopEl = Ext.get('x-desktop');\r
12     var taskbarEl = Ext.get('ux-taskbar');\r
13     var shortcuts = Ext.get('x-shortcuts');\r
14 \r
15     var windows = new Ext.WindowGroup();\r
16     var activeWindow;\r
17                 \r
18     function minimizeWin(win){\r
19         win.minimized = true;\r
20         win.hide();\r
21     }\r
22 \r
23     function markActive(win){\r
24         if(activeWindow && activeWindow != win){\r
25             markInactive(activeWindow);\r
26         }\r
27         taskbar.setActiveButton(win.taskButton);\r
28         activeWindow = win;\r
29         Ext.fly(win.taskButton.el).addClass('active-win');\r
30         win.minimized = false;\r
31     }\r
32 \r
33     function markInactive(win){\r
34         if(win == activeWindow){\r
35             activeWindow = null;\r
36             Ext.fly(win.taskButton.el).removeClass('active-win');\r
37         }\r
38     }\r
39 \r
40     function removeWin(win){\r
41         taskbar.removeTaskButton(win.taskButton);\r
42         layout();\r
43     }\r
44 \r
45     function layout(){\r
46         desktopEl.setHeight(Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight());\r
47     }\r
48     Ext.EventManager.onWindowResize(layout);\r
49 \r
50     this.layout = layout;\r
51 \r
52     this.createWindow = function(config, cls){\r
53         var win = new (cls||Ext.Window)(\r
54             Ext.applyIf(config||{}, {\r
55                 manager: windows,\r
56                 minimizable: true,\r
57                 maximizable: true\r
58             })\r
59         );\r
60         win.render(desktopEl);\r
61         win.taskButton = taskbar.addTaskButton(win);\r
62 \r
63         win.cmenu = new Ext.menu.Menu({\r
64             items: [\r
65 \r
66             ]\r
67         });\r
68 \r
69         win.animateTarget = win.taskButton.el;\r
70         \r
71         win.on({\r
72                 'activate': {\r
73                         fn: markActive\r
74                 },\r
75                 'beforeshow': {\r
76                         fn: markActive\r
77                 },\r
78                 'deactivate': {\r
79                         fn: markInactive\r
80                 },\r
81                 'minimize': {\r
82                         fn: minimizeWin\r
83                 },\r
84                 'close': {\r
85                         fn: removeWin\r
86                 }\r
87         });\r
88         \r
89         layout();\r
90         return win;\r
91     };\r
92 \r
93     this.getManager = function(){\r
94         return windows;\r
95     };\r
96 \r
97     this.getWindow = function(id){\r
98         return windows.get(id);\r
99     }\r
100     \r
101     this.getWinWidth = function(){\r
102                 var width = Ext.lib.Dom.getViewWidth();\r
103                 return width < 200 ? 200 : width;\r
104         }\r
105                 \r
106         this.getWinHeight = function(){\r
107                 var height = (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight());\r
108                 return height < 100 ? 100 : height;\r
109         }\r
110                 \r
111         this.getWinX = function(width){\r
112                 return (Ext.lib.Dom.getViewWidth() - width) / 2\r
113         }\r
114                 \r
115         this.getWinY = function(height){\r
116                 return (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight() - height) / 2;\r
117         }\r
118 \r
119     layout();\r
120 \r
121     if(shortcuts){\r
122         shortcuts.on('click', function(e, t){\r
123             if(t = e.getTarget('dt', shortcuts)){\r
124                 e.stopEvent();\r
125                 var module = app.getModule(t.id.replace('-shortcut', ''));\r
126                 if(module){\r
127                     module.createWindow();\r
128                 }\r
129             }\r
130         });\r
131     }\r
132 };\r