tweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloud
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.
164 lines
3.9 KiB
164 lines
3.9 KiB
/** */ |
|
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(); |
|
} |
|
});
|
|
|