From deef3253198aabd95a2ae65432e5daf9c95342bd Mon Sep 17 00:00:00 2001 From: jncharon Date: Fri, 20 May 2016 19:29:53 +0200 Subject: [PATCH] Implementation of github issue #56 --- .../java/org/cryptomator/ui/ExitUtil.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/ExitUtil.java b/main/ui/src/main/java/org/cryptomator/ui/ExitUtil.java index 3c4976cf4..400f607ca 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/ExitUtil.java +++ b/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()) {