protected MenuItem globalPreferencesItem;
protected CheckboxMenuItem displayTooltipCheckItem;
public SysTray(Kernel kernel) {
prefs = kernel.getGlobalPreferences();
final Kernel k = kernel;
// Taille de l'icone
trayIcon.setImageAutoSize(true);
// Création du popup
aboutItem = new MenuItem("À Propos...");
globalPreferencesItem = new MenuItem("Préférences...");
displayFrameItem = new MenuItem("Afficher la fenêtre");
displayTooltipCheckItem = new CheckboxMenuItem("Afficher le tooltip");
desktopClientItem = new MenuItem("Nouveau message...");
exitItem = new MenuItem("Quitter");
Menu checkersMenu = new Menu("Comptes");
// Ajout des composants du popup
popup.add(aboutItem);
popup.add(globalPreferencesItem);
popup.addSeparator();
popup.add(displayFrameItem);
popup.add(displayTooltipCheckItem);
popup.add(desktopClientItem);
popup.addSeparator();
popup.add(checkersMenu);
popup.add(exitItem);
// Desktop actions (lancement du client e-mail par défaut)
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.MAIL)) {
desktopClientItem.setEnabled(true);
desktopClientItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
try {
desktop.mail();
} catch(Exception e) {e.printStackTrace();}
}
});
} else {
desktopClientItem.setEnabled(false);
}
} else {
desktopClientItem.setEnabled(false);
}
// Ajout des gestionnaires d'événement
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// le comportement varie selon l'OS utilisé
if(SystemUtils.IS_OS_MAC_OSX) {
// Clic-gauche : ne rien faire, OS X affiche le menu
// Clic-droit : afficher/cacher la fenêtre
if(e.getButton() == e.BUTTON3 || e.getButton() == e.BUTTON2)
k.getAccountList().toggleShow();
}
else if(SystemUtils.IS_OS_WINDOWS) {
// Clic-gauche : afficher/cacher la fenêtre
// Clic-droit : ne rien faire, Windows affiche le menu
if (e.getButton() == e.BUTTON1) {
k.getAccountList().toggleShow();
}
} else if (SystemUtils.IS_OS_LINUX) {
// Clic-gauche : afficher/cacher la fenêtre
// Clic-droit : ne rien faire, KDE/Gnome affichent le menu
if (e.getButton() == e.BUTTON1) {
k.getAccountList().toggleShow();
}
} else {
// Clic-gauche : afficher/cacher la fenêtre
// Clic-droit : ne rien faire
if (e.getButton() == e.BUTTON1) {
k.getAccountList().toggleShow();
}
}
}
});
aboutItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
About ab = new About();
}
});
globalPreferencesItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
GlobalPreferencesFrame gpf = new GlobalPreferencesFrame();
}
});
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
System.exit(0);
}
});
displayFrameItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
k.getAccountList().setVisible(true);
}
});
displayTooltipCheckItem.addItemListener(new ItemListener() {
@Override