Add 'selector' property for MenuItem, which automatically calls first reponder's selector.
This commit is contained in:
parent
fae3137463
commit
c2f6676c62
2 changed files with 12 additions and 20 deletions
|
@ -4,7 +4,7 @@ class MenuItem
|
||||||
@types = ['normal', 'separator', 'submenu', 'checkbox', 'radio']
|
@types = ['normal', 'separator', 'submenu', 'checkbox', 'radio']
|
||||||
|
|
||||||
constructor: (options) ->
|
constructor: (options) ->
|
||||||
{click, @type, @label, @sublabel, @accelerator, @enabled, @visible, @checked, @groupId, @submenu} = options
|
{click, selector, @type, @label, @sublabel, @accelerator, @enabled, @visible, @checked, @groupId, @submenu} = options
|
||||||
|
|
||||||
@type = @type ? 'normal'
|
@type = @type ? 'normal'
|
||||||
@label = @label ? ''
|
@label = @label ? ''
|
||||||
|
@ -16,6 +16,10 @@ class MenuItem
|
||||||
throw new Error('Invalid menu') if @type is 'submenu' and @submenu?.constructor.name isnt 'Menu'
|
throw new Error('Invalid menu') if @type is 'submenu' and @submenu?.constructor.name isnt 'Menu'
|
||||||
|
|
||||||
@commandId = ++nextCommandId
|
@commandId = ++nextCommandId
|
||||||
@click = -> click() if typeof click is 'function'
|
@click = ->
|
||||||
|
if typeof click is 'function'
|
||||||
|
click()
|
||||||
|
else if typeof selector is 'string'
|
||||||
|
require('menu').sendActionToFirstResponder selector
|
||||||
|
|
||||||
module.exports = MenuItem
|
module.exports = MenuItem
|
||||||
|
|
|
@ -33,24 +33,18 @@ delegate.browserMainParts.preMainMessageLoopRun = function() {
|
||||||
var appleMenu = new Menu;
|
var appleMenu = new Menu;
|
||||||
appleMenu.append(new MenuItem({
|
appleMenu.append(new MenuItem({
|
||||||
label: 'About Atom Shell',
|
label: 'About Atom Shell',
|
||||||
click: function() {
|
selector: 'orderFrontStandardAboutPanel:'
|
||||||
Menu.sendActionToFirstResponder('orderFrontStandardAboutPanel:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
appleMenu.append(new MenuItem({ type: 'separator' }));
|
appleMenu.append(new MenuItem({ type: 'separator' }));
|
||||||
appleMenu.append(new MenuItem({
|
appleMenu.append(new MenuItem({
|
||||||
label: 'Hide Atom Shell',
|
label: 'Hide Atom Shell',
|
||||||
accelerator: 'Command+H',
|
accelerator: 'Command+H',
|
||||||
click: function() {
|
selector: 'hide:'
|
||||||
Menu.sendActionToFirstResponder('hide:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
appleMenu.append(new MenuItem({
|
appleMenu.append(new MenuItem({
|
||||||
label: 'Hide Others',
|
label: 'Hide Others',
|
||||||
accelerator: 'Command+Shift+H',
|
accelerator: 'Command+Shift+H',
|
||||||
click: function() {
|
selector: 'hideOtherApplications:'
|
||||||
Menu.sendActionToFirstResponder('hideOtherApplications:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
appleMenu.append(new MenuItem({ type: 'separator' }));
|
appleMenu.append(new MenuItem({ type: 'separator' }));
|
||||||
appleMenu.append(new MenuItem({
|
appleMenu.append(new MenuItem({
|
||||||
|
@ -65,23 +59,17 @@ delegate.browserMainParts.preMainMessageLoopRun = function() {
|
||||||
windowMenu.append(new MenuItem({
|
windowMenu.append(new MenuItem({
|
||||||
label: 'Minimize',
|
label: 'Minimize',
|
||||||
accelerator: 'Command+M',
|
accelerator: 'Command+M',
|
||||||
click: function() {
|
selector: 'performMiniaturize:'
|
||||||
Menu.sendActionToFirstResponder('performMiniaturize:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
windowMenu.append(new MenuItem({
|
windowMenu.append(new MenuItem({
|
||||||
label: 'Close',
|
label: 'Close',
|
||||||
accelerator: 'Command+W',
|
accelerator: 'Command+W',
|
||||||
click: function() {
|
selector: 'performClose:'
|
||||||
Menu.sendActionToFirstResponder('performClose:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
windowMenu.append(new MenuItem({ type: 'separator' }));
|
windowMenu.append(new MenuItem({ type: 'separator' }));
|
||||||
windowMenu.append(new MenuItem({
|
windowMenu.append(new MenuItem({
|
||||||
label: 'Bring All to Front',
|
label: 'Bring All to Front',
|
||||||
click: function() {
|
selector: 'arrangeInFront:'
|
||||||
Menu.sendActionToFirstResponder('arrangeInFront:');
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
menu.append(new MenuItem({ type: 'submenu', submenu: appleMenu }));
|
menu.append(new MenuItem({ type: 'submenu', submenu: appleMenu }));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue