From dc310c009f5a820f50acba2b922347f4091e6b30 Mon Sep 17 00:00:00 2001 From: Edward Chow Date: Tue, 1 Nov 2022 22:14:29 +1100 Subject: [PATCH] rename to onBeforeOpenMenu and init local reference in showTrayIcon() --- pom.xml | 2 +- .../ui/traymenu/AwtTrayMenuController.java | 24 +++++++++++-------- .../ui/traymenu/TrayMenuBuilder.java | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index c56af2617..fa598e5d9 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ 2.1.0-rc1 2.4.4 - 1.1.1 + 1.2.0 1.1.2 1.1.2 1.1.0 diff --git a/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java b/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java index 2d0699064..e8fbc570e 100644 --- a/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java +++ b/src/main/java/org/cryptomator/ui/traymenu/AwtTrayMenuController.java @@ -30,6 +30,7 @@ public class AwtTrayMenuController implements TrayMenuController { private static final Logger LOG = LoggerFactory.getLogger(AwtTrayMenuController.class); private final PopupMenu menu = new PopupMenu(); + private TrayIcon trayIcon; @CheckAvailability public static boolean isAvailable() { @@ -39,7 +40,7 @@ public class AwtTrayMenuController implements TrayMenuController { @Override public void showTrayIcon(byte[] rawImageData, Runnable defaultAction, String tooltip) throws TrayMenuException { var image = Toolkit.getDefaultToolkit().createImage(rawImageData); - var trayIcon = new TrayIcon(image, tooltip, menu); + trayIcon = new TrayIcon(image, tooltip, menu); trayIcon.setImageAutoSize(true); if (SystemUtils.IS_OS_WINDOWS) { @@ -62,15 +63,18 @@ public class AwtTrayMenuController implements TrayMenuController { @Override - public void onBeforeShow(Runnable listener) { - SystemTray systemTray = SystemTray.getSystemTray(); - TrayIcon trayIcon = systemTray.getTrayIcons()[0]; - trayIcon.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - listener.run(); - } - }); + public void onBeforeOpenMenu(Runnable listener) { + try { + this.trayIcon.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + listener.run(); + } + }); + } catch (Exception e) { + throw new IllegalStateException("Tray icon not found.", e); + } + } private void addChildren(Menu menu, List items) { diff --git a/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java index 358e76ed4..fc7c344fd 100644 --- a/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java +++ b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuBuilder.java @@ -68,7 +68,7 @@ public class TrayMenuBuilder { try (var image = getClass().getResourceAsStream(SystemUtils.IS_OS_MAC_OSX ? TRAY_ICON_MAC : TRAY_ICON)) { trayMenu.showTrayIcon(image.readAllBytes(), this::showMainWindow, "Cryptomator"); - trayMenu.onBeforeShow(() -> { + trayMenu.onBeforeOpenMenu(() -> { for (Vault vault : vaults) { VaultListManager.redetermineVaultState(vault); }