SWT : gérer le menu application sous MacOS X

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 :
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;
}
}
}