Browse Source

Implementation of github issue #56

jncharon 9 years ago
parent
commit
deef325319
1 changed files with 33 additions and 21 deletions
  1. 33 21
      main/ui/src/main/java/org/cryptomator/ui/ExitUtil.java

+ 33 - 21
main/ui/src/main/java/org/cryptomator/ui/ExitUtil.java

@@ -5,20 +5,17 @@
  *
  * Contributors:
  *     Sebastian Stenzel - initial API and implementation
+ *     Jean-Noël Charon - implementation of github issue #56
  *******************************************************************************/
 package org.cryptomator.ui;
 
-import java.awt.AWTException;
-import java.awt.Image;
-import java.awt.MenuItem;
-import java.awt.PopupMenu;
-import java.awt.SystemTray;
-import java.awt.Toolkit;
-import java.awt.TrayIcon;
-import java.awt.TrayIcon.MessageType;
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
+import javafx.application.Platform;
+import javafx.stage.Stage;
+import org.apache.commons.lang3.SystemUtils;
+import org.cryptomator.ui.settings.Localization;
+import org.cryptomator.ui.settings.Settings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -26,16 +23,14 @@ import javax.inject.Singleton;
 import javax.script.ScriptEngine;
 import javax.script.ScriptEngineManager;
 import javax.script.ScriptException;
-import javax.swing.SwingUtilities;
-
-import org.apache.commons.lang3.SystemUtils;
-import org.cryptomator.ui.settings.Localization;
-import org.cryptomator.ui.settings.Settings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javafx.application.Platform;
-import javafx.stage.Stage;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.TrayIcon.MessageType;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
 
 @Singleton
 class ExitUtil {
@@ -75,6 +70,23 @@ class ExitUtil {
 	private void initTrayIconExitHandler(Runnable exitCommand) {
 		final TrayIcon trayIcon = createTrayIcon(exitCommand);
 		try {
+			// I'm sorry but no lambda here as several methods must be implemented
+			trayIcon.addMouseListener(new MouseListener() {
+				public void mouseClicked(MouseEvent e) {
+					if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
+						restoreFromTray(new ActionEvent(e.getSource(), e.getID(), e.paramString()));
+					}
+				}
+
+				public void mouseEntered(MouseEvent e) {}
+
+				public void mouseExited(MouseEvent e) {}
+
+				public void mousePressed(MouseEvent e) {}
+
+				public void mouseReleased(MouseEvent e) {}
+			});
+
 			SystemTray.getSystemTray().add(trayIcon);
 			mainWindow.setOnCloseRequest((e) -> {
 				if (Platform.isImplicitExit()) {