linuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacos
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
3.9 KiB
165 lines
3.9 KiB
9 years ago
|
/** */
|
||
|
Ext.define('Ext.aria.window.Window', {
|
||
|
override: 'Ext.window.Window',
|
||
|
|
||
|
requires: [
|
||
|
'Ext.aria.panel.Panel',
|
||
|
'Ext.util.ComponentDragger',
|
||
|
'Ext.util.Region',
|
||
|
'Ext.EventManager',
|
||
|
'Ext.aria.FocusManager'
|
||
|
],
|
||
|
|
||
|
closeText: 'Close Window',
|
||
|
moveText: 'Move Window',
|
||
|
resizeText: 'Resize Window',
|
||
|
|
||
|
deltaMove: 10,
|
||
|
deltaResize: 10,
|
||
|
|
||
|
initComponent: function() {
|
||
|
var me = this,
|
||
|
tools = me.tools;
|
||
|
|
||
|
// Add buttons to move and resize the window,
|
||
|
// unless it's a Toast
|
||
|
if (!tools) {
|
||
|
me.tools = tools = [];
|
||
|
}
|
||
|
|
||
|
//TODO: Create new tools
|
||
|
if (!me.isToast) {
|
||
|
tools.unshift(
|
||
|
{
|
||
|
type: 'resize',
|
||
|
tooltip: me.resizeText
|
||
|
},
|
||
|
{
|
||
|
type: 'move',
|
||
|
tooltip: me.moveText
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
me.callParent();
|
||
|
},
|
||
|
|
||
|
onBoxReady: function() {
|
||
|
var me = this,
|
||
|
EO = Ext.event.Event,
|
||
|
toolBtn;
|
||
|
|
||
|
me.callParent();
|
||
|
|
||
|
if (me.isToast) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (me.draggable) {
|
||
|
toolBtn = me.down('tool[type=move]');
|
||
|
|
||
|
if (toolBtn) {
|
||
|
me.ariaUpdate(toolBtn.getEl(), { 'aria-label': me.moveText });
|
||
|
|
||
|
toolBtn.keyMap = new Ext.util.KeyMap({
|
||
|
target: toolBtn.el,
|
||
|
key: [EO.UP, EO.DOWN, EO.LEFT, EO.RIGHT],
|
||
|
handler: me.moveWindow,
|
||
|
scope: me
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (me.resizable) {
|
||
|
toolBtn = me.down('tool[type=resize]');
|
||
|
|
||
|
if (toolBtn) {
|
||
|
me.ariaUpdate(toolBtn.getEl(), { 'aria-label': me.resizeText });
|
||
|
|
||
|
toolBtn.keyMap = new Ext.util.KeyMap({
|
||
|
target: toolBtn.el,
|
||
|
key: [EO.UP, EO.DOWN, EO.LEFT, EO.RIGHT],
|
||
|
handler: me.resizeWindow,
|
||
|
scope: me
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
onEsc: function(k, e) {
|
||
|
var me = this;
|
||
|
|
||
|
if (e.within(me.el)) {
|
||
|
e.stopEvent();
|
||
|
me.close();
|
||
|
}
|
||
|
},
|
||
|
|
||
|
onShow: function() {
|
||
|
var me = this;
|
||
|
|
||
|
me.callParent(arguments);
|
||
|
|
||
|
Ext.aria.FocusManager.addWindow(me);
|
||
|
},
|
||
|
|
||
|
afterHide: function() {
|
||
|
var me = this;
|
||
|
|
||
|
Ext.aria.FocusManager.removeWindow(me);
|
||
|
|
||
|
me.callParent(arguments);
|
||
|
},
|
||
|
|
||
|
moveWindow: function(keyCode, e) {
|
||
|
var me = this,
|
||
|
delta = me.deltaMove,
|
||
|
pos = me.getPosition(),
|
||
|
EO = Ext.event.Event;
|
||
|
|
||
|
switch (keyCode) {
|
||
|
case EO.RIGHT:
|
||
|
pos[0] += delta;
|
||
|
break;
|
||
|
case EO.LEFT:
|
||
|
pos[0] -= delta;
|
||
|
break;
|
||
|
case EO.UP:
|
||
|
pos[1] -= delta;
|
||
|
break;
|
||
|
case EO.DOWN:
|
||
|
pos[1] += delta;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
me.setPagePosition(pos);
|
||
|
e.stopEvent();
|
||
|
},
|
||
|
|
||
|
resizeWindow: function(keyCode, e) {
|
||
|
var me = this,
|
||
|
delta = me.deltaResize,
|
||
|
width = me.getWidth(),
|
||
|
height = me.getHeight(),
|
||
|
EO = Ext.event.Event;
|
||
|
|
||
|
switch (keyCode) {
|
||
|
case EO.RIGHT:
|
||
|
width += delta;
|
||
|
break;
|
||
|
case EO.LEFT:
|
||
|
width -= delta;
|
||
|
break;
|
||
|
case EO.UP:
|
||
|
height -= delta;
|
||
|
break;
|
||
|
case EO.DOWN:
|
||
|
height += delta;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
me.setSize(width, height);
|
||
|
e.stopEvent();
|
||
|
}
|
||
|
});
|