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