X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/Desktop.html diff --git a/docs/source/Desktop.html b/docs/source/Desktop.html new file mode 100644 index 00000000..244287d1 --- /dev/null +++ b/docs/source/Desktop.html @@ -0,0 +1,136 @@ + +
+Ext.Desktop = function(app){ + this.taskbar = new Ext.ux.TaskBar(app); + var taskbar = this.taskbar; + + var desktopEl = Ext.get('x-desktop'); + var taskbarEl = Ext.get('ux-taskbar'); + var shortcuts = Ext.get('x-shortcuts'); + + var windows = new Ext.WindowGroup(); + var activeWindow; + + function minimizeWin(win){ + win.minimized = true; + win.hide(); + } + + function markActive(win){ + if(activeWindow && activeWindow != win){ + markInactive(activeWindow); + } + taskbar.setActiveButton(win.taskButton); + activeWindow = win; + Ext.fly(win.taskButton.el).addClass('active-win'); + win.minimized = false; + } + + function markInactive(win){ + if(win == activeWindow){ + activeWindow = null; + Ext.fly(win.taskButton.el).removeClass('active-win'); + } + } + + function removeWin(win){ + taskbar.removeTaskButton(win.taskButton); + layout(); + } + + function layout(){ + desktopEl.setHeight(Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight()); + } + Ext.EventManager.onWindowResize(layout); + + this.layout = layout; + + this.createWindow = function(config, cls){ + var win = new (cls||Ext.Window)( + Ext.applyIf(config||{}, { + manager: windows, + minimizable: true, + maximizable: true + }) + ); + win.render(desktopEl); + win.taskButton = taskbar.addTaskButton(win); + + win.cmenu = new Ext.menu.Menu({ + items: [ + + ] + }); + + win.animateTarget = win.taskButton.el; + + win.on({ + 'activate': { + fn: markActive + }, + 'beforeshow': { + fn: markActive + }, + 'deactivate': { + fn: markInactive + }, + 'minimize': { + fn: minimizeWin + }, + 'close': { + fn: removeWin + } + }); + + layout(); + return win; + }; + + this.getManager = function(){ + return windows; + }; + + this.getWindow = function(id){ + return windows.get(id); + } + + this.getWinWidth = function(){ + var width = Ext.lib.Dom.getViewWidth(); + return width < 200 ? 200 : width; + } + + this.getWinHeight = function(){ + var height = (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight()); + return height < 100 ? 100 : height; + } + + this.getWinX = function(width){ + return (Ext.lib.Dom.getViewWidth() - width) / 2 + } + + this.getWinY = function(height){ + return (Ext.lib.Dom.getViewHeight()-taskbarEl.getHeight() - height) / 2; + } + + layout(); + + if(shortcuts){ + shortcuts.on('click', function(e, t){ + if(t = e.getTarget('dt', shortcuts)){ + e.stopEvent(); + var module = app.getModule(t.id.replace('-shortcut', '')); + if(module){ + module.createWindow(); + } + } + }); + } +}; ++ + \ No newline at end of file