/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.impl.systray.jdic; import java.awt.event.*; import javax.swing.*; import net.java.sip.communicator.impl.systray.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.util.*; import org.osgi.framework.*; /** * The TrayMenu is the menu that appears when the user right-click * on the Systray icon. * * @author Nicolas Chamouard */ public class TrayMenu extends JPopupMenu implements ActionListener { /** * The logger for this class. */ private Logger logger = Logger.getLogger(TrayMenu.class.getName()); /** * A reference of Systray */ private SystrayServiceJdicImpl parentSystray; private JMenuItem settingsItem = new JMenuItem( Resources.getString("settings"), Resources.getImage("settingsMenuIcon")); private JMenuItem closeItem = new JMenuItem( Resources.getString("close"), Resources.getImage("closeMenuIcon")); private JMenuItem addContactMenuItem = new JMenuItem( Resources.getString("addContact"), Resources.getImage("addContactIcon")); private StatusSubMenu statusMenu; /** * Creates an instance of TrayMenu. * @param tray a reference of the parent Systray */ public TrayMenu(SystrayServiceJdicImpl tray) { parentSystray = tray; statusMenu = new StatusSubMenu(tray); this.add(settingsItem); this.add(addContactMenuItem); this.addSeparator(); this.add(statusMenu); this.addSeparator(); this.add(closeItem); this.settingsItem.setName("settings"); this.closeItem.setName("close"); this.addContactMenuItem.setName("addContact"); this.settingsItem.addActionListener(this); this.closeItem.addActionListener(this); this.addContactMenuItem.addActionListener(this); } /** * Handles the ActionEvent when one of the menu items is selected. * @param evt the event containing the menu item name */ public void actionPerformed(ActionEvent evt) { JMenuItem menuItem = (JMenuItem) evt.getSource(); String itemName = menuItem.getName(); if(itemName.equals("settings")) { ExportedWindow configWindow = SystrayActivator.getUIService() .getExportedWindow(ExportedWindow.CONFIGURATION_WINDOW); configWindow.setVisible(true); } else if(itemName.equals("close")) { try { SystrayActivator.bundleContext.getBundle(0).stop(); } catch (BundleException ex) { logger.error("Failed to gently shutdown Felix", ex); System.exit(0); } } else if(itemName.equals("addContact")) { ExportedWindow dialog = SystrayActivator.getUIService().getExportedWindow( ExportedWindow.ADD_CONTACT_WINDOW); if(dialog != null) dialog.setVisible(true); else SystrayActivator.getUIService().getPopupDialog() .showMessagePopupDialog( Resources.getString("failedToLoadAddContactDialog")); } } }