aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java')
-rw-r--r--src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java b/src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java
new file mode 100644
index 0000000..6447ad4
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/systray/jdic/TrayMenu.java
@@ -0,0 +1,161 @@
+/*
+ * 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 javax.swing.event.*;
+
+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 <tt>Traymenu</tt> is the menu that appears when the user right-click
+ * on the systray icon
+ *
+ * @author Nicolas Chamouard
+ */
+public class TrayMenu
+ extends JPopupMenu
+ implements ActionListener,
+ PopupMenuListener
+{
+ /**
+ * The logger for this class.
+ */
+ private Logger logger = Logger.getLogger(TrayMenu.class.getName());
+
+ /**
+ * A reference of the <tt>Uiservice</tt>
+ */
+ private UIService uiService;
+ /**
+ * A reference of <tt>Systray</tt>
+ */
+ private SystrayServiceJdicImpl parentSystray;
+
+ private JMenuItem settingsItem = new JMenuItem(
+ Resources.getString("settings"),
+ new ImageIcon(Resources.getImage("settingsMenuIcon")));
+
+ private JMenuItem closeItem = new JMenuItem(
+ Resources.getString("close"),
+ new ImageIcon(Resources.getImage("closeMenuIcon")));
+
+ private JMenuItem addContactMenuItem = new JMenuItem(
+ Resources.getString("addContact"),
+ new ImageIcon(Resources.getImage("addContactIcon")));
+
+ private StatusSubMenu setStatusMenu;
+
+ /**
+ * The configuration window called by the menu item "settings"
+ */
+ private ConfigurationWindow configDialog;
+
+
+ /**
+ * Creates an instance of <tt>TrayMenu</tt>.
+ * @param service a reference of the current <tt>UIservice</tt>
+ * @param tray a reference of the parent <tt>Systray</tt>
+ */
+ public TrayMenu(UIService service, SystrayServiceJdicImpl tray)
+ {
+ uiService = service;
+ parentSystray = tray;
+
+ setStatusMenu = new StatusSubMenu(tray);
+
+ this.add(settingsItem);
+ this.add(addContactMenuItem);
+ this.addSeparator();
+ this.add(setStatusMenu);
+ 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);
+
+ this.addPopupMenuListener(this);
+ }
+
+ /**
+ * Handles the <tt>ActionEvent</tt> 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"))
+ {
+ configDialog = uiService.getConfigurationWindow();
+ configDialog.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 = uiService.getExportedWindow(
+ ExportedWindow.ADD_CONTACT_WINDOW);
+
+ if(dialog != null)
+ dialog.setVisible(true);
+ else
+ uiService.getPopupDialog().showMessagePopupDialog(
+ Resources.getString("failedToLoadAddContactDialog"));
+ }
+ }
+
+ /**
+ * Currently unused
+ * @param evt ignored
+ */
+ public void popupMenuCanceled(PopupMenuEvent evt)
+ {
+ }
+
+ /**
+ * Currently unused
+ * @param evt ignored
+ */
+ public void popupMenuWillBecomeInvisible(PopupMenuEvent evt)
+ {
+ }
+
+ /**
+ * Fill the menu with items when it is displayed
+ * @param evt ignored
+ */
+ public void popupMenuWillBecomeVisible(PopupMenuEvent evt)
+ {
+ setStatusMenu.update();
+ }
+
+} \ No newline at end of file