+ { text: 'Restore', handler: me.onWindowMenuRestore, scope: me },
+ { text: 'Minimize', handler: me.onWindowMenuMinimize, scope: me },
+ { text: 'Maximize', handler: me.onWindowMenuMaximize, scope: me },
+ '-',
+ { text: 'Close', handler: me.onWindowMenuClose, scope: me }
+ ],
+ listeners: {
+ beforeshow: me.onWindowMenuBeforeShow,
+ hide: me.onWindowMenuHide,
+ scope: me
+ }
+ };
+ },
+
+ //------------------------------------------------------
+ // Event handler methods
+
+ onDesktopMenu: function (e) {
+ var me = this, menu = me.contextMenu;
+ e.stopEvent();
+ if (!menu.rendered) {
+ menu.on('beforeshow', me.onDesktopMenuBeforeShow, me);
+ }
+ menu.showAt(e.getXY());
+ menu.doConstrain();
+ },
+
+ onDesktopMenuBeforeShow: function (menu) {
+ var me = this, count = me.windows.getCount();
+
+ menu.items.each(function (item) {
+ var min = item.minWindows || 0;
+ item.setDisabled(count < min);
+ });
+ },
+
+ onShortcutItemClick: function (dataView, record) {
+ var me = this, module = me.app.getModule(record.data.module),
+ win = module && module.createWindow();
+
+ if (win) {
+ me.restoreWindow(win);
+ }
+ },
+
+ onWindowClose: function(win) {
+ var me = this;
+ me.windows.remove(win);
+ me.taskbar.removeTaskButton(win.taskButton);
+ me.updateActiveWindow();
+ },
+
+ //------------------------------------------------------
+ // Window context menu handlers
+
+ onWindowMenuBeforeShow: function (menu) {
+ var items = menu.items.items, win = menu.theWin;
+ items[0].setDisabled(win.maximized !== true && win.hidden !== true); // Restore
+ items[1].setDisabled(win.minimized === true); // Minimize
+ items[2].setDisabled(win.maximized === true || win.hidden === true); // Maximize
+ },
+
+ onWindowMenuClose: function () {
+ var me = this, win = me.windowMenu.theWin;
+
+ win.close();
+ },
+
+ onWindowMenuHide: function (menu) {
+ menu.theWin = null;
+ },
+
+ onWindowMenuMaximize: function () {
+ var me = this, win = me.windowMenu.theWin;
+
+ win.maximize();
+ },
+
+ onWindowMenuMinimize: function () {
+ var me = this, win = me.windowMenu.theWin;
+
+ win.minimize();
+ },
+
+ onWindowMenuRestore: function () {
+ var me = this, win = me.windowMenu.theWin;
+
+ me.restoreWindow(win);
+ },