uchcode
3/13/2016 - 6:57 PM

Statusbar App in JXA

Statusbar App in JXA

#!/usr/bin/osascript -l JavaScript

ObjC.import('Cocoa')

app = Application.currentApplication()
app.includeStandardAdditions = true

ObjC.registerSubclass({
    name: 'MenuAction',
    methods: {
        'sayHello:': {
            types: ['void', ['id']],
            implementation: function(sender) {
                app.displayAlert('hello world')
            }
        },
        'quit:': {
            types: ['void', ['id']],
            implementation: function(sender) {
                $.NSApp.terminate(this)
            }
        }
    }
})

function Menu() {
    target = $.MenuAction.alloc.init
    
    menu = $.NSMenu.alloc.init
    
    miSayHello = $.NSMenuItem.alloc.init
    miSayHello.title = 'Hello from JXA!'
    miSayHello.target = target
    miSayHello.action = 'sayHello:'
    menu.addItem(miSayHello)
    
    miQuit = $.NSMenuItem.alloc.init
    miQuit.setTitle('Quit')
    miQuit.setTarget(target)
    miQuit.setAction('quit:')
    menu.addItem(miQuit)
    
    return menu
}

function StatusBar(title, menu) {
    statusBar = $.NSStatusBar.systemStatusBar
    statusItem = statusBar.statusItemWithLength($.NSVariableStatusItemLength)
    statusItem.title = title
    statusItem.menu = menu
}

nsapp = $.NSApplication.sharedApplication

StatusBar('Statusbar App in JXA', Menu())

nsapp.run