SWT : gérer le menu application sous MacOS X

Boris HUISGEN
Boris HUISGEN
|

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;
        }
    }
}
Boris HUISGEN
Boris HUISGEN
Blog owner
  • #java
  • #swt
  • #macos