SWT : gérer le menu application sous MacOS X

Boris HUISGEN August 18, 2012

développement java swt mac os x

SWT ne gère pas directement le menu application sous Mac OS X. Par défaut, toute application a donc un menu ressemblant à ceci :

SWT : menu application

Il est donc nécessaire de coder la modification du menu pour y refléter le nom réel de l’application et également mapper les actions des éléments A propos, Préférences et Quitter.

Auparavant, l’emploi de CocoaUIEnhancer était obligatoire car aucune API SWT n’existait pour accéder à ce menu. Depuis la version 3.7, les choses ont changé et une API interne est disponible. Voici un exemple d’utilisation de celle-ci :

Menu systemMenu = shell.getDisplay().getSystemMenu();
if (systemMenu == null)
    return; // not Mac OS X

for (MenuItem menuItem : systemMenu.getItems())
{
    switch (menuItem.getID())
    {
        case SWT.ID_ABOUT:
        {
            menuItem.setText("About " + Constants.APPLICATION_NAME); // application name
            menuItem.addListener(SWT.Selection, new Listener()
            {
                @Override
                public void handleEvent(Event event)
                {
                    helpAbout();
                }
            });
            break;
        }

        case SWT.ID_PREFERENCES:
        {
            menuItem.addListener(SWT.Selection, new Listener()
            {
                @Override
                public void handleEvent(Event event)
                {
                    filePreferences();
                }
            });

            break;
        }

        case SWT.ID_QUIT:
        {
            menuItem.addListener(SWT.Selection, new Listener()
            {
                @Override
                public void handleEvent(Event event)
                {
                    if (!fileExit())
                        event.doit = false; // ignore exit if false
                }
            });

            break;
        }

        default:
        {
            break;
        }
    }
}

See also

SWT : générer le JAR de la javadoc
Read more
SWT : scrolling automatique avec un composant StyledText
Read more
Mac OS X : Java 6 pour Mac à CPU 32 bits
Read more