From 56832b44caf3c3f830809a2f6eef339d456d446c Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 10 Nov 2018 23:43:43 +0100 Subject: [PATCH] Added ability to query the system tray type --- src/dorkbox/systemTray/SystemTray.java | 32 ++++++++++++++++++++++++++ test/dorkbox/TestTray.java | 4 ++++ test/dorkbox/TestTrayJavaFX.java | 4 ++++ test/dorkbox/TestTraySwt.java | 4 ++++ 4 files changed, 44 insertions(+) diff --git a/src/dorkbox/systemTray/SystemTray.java b/src/dorkbox/systemTray/SystemTray.java index 72bb7f7..deef90b 100755 --- a/src/dorkbox/systemTray/SystemTray.java +++ b/src/dorkbox/systemTray/SystemTray.java @@ -206,6 +206,30 @@ class SystemTray { return null; } + private static + TrayType fromClass(final Class trayClass) { + if (trayClass == _GtkStatusIconNativeTray.class) { + return TrayType.GtkStatusIcon; + } + else if (trayClass == _AppIndicatorNativeTray.class) { + return TrayType.AppIndicator; + } + else if (trayClass == _WindowsNativeTray.class) { + return TrayType.WindowsNotifyIcon; + } + else if (trayClass == _SwingTray.class) { + return TrayType.Swing; + } + else if (trayClass == _OsxNativeTray.class) { + return TrayType.OSXStatusItem; + } + else if (trayClass == _AwtTray.class) { + return TrayType.AWT; + } + + return null; + } + private static Class selectTypeQuietly(final TrayType trayType) { try { @@ -1417,5 +1441,13 @@ class SystemTray { int getMenuImageSize() { return SizeAndScalingUtil.getMenuImageSize(systemTrayMenu.getClass()); } + + /** + * @return the tray type used to create the system tray + */ + public + TrayType getType() { + return fromClass(systemTrayMenu.getClass()); + } } diff --git a/test/dorkbox/TestTray.java b/test/dorkbox/TestTray.java index 6309d55..6fc365d 100644 --- a/test/dorkbox/TestTray.java +++ b/test/dorkbox/TestTray.java @@ -196,6 +196,10 @@ class TestTray { })); mainMenu.add(submenu); + MenuItem entry = new MenuItem("Type: " + systemTray.getType().toString()); + entry.setEnabled(false); + systemTray.getMenu().add(entry); + systemTray.getMenu().add(new MenuItem("Quit", new ActionListener() { @Override public diff --git a/test/dorkbox/TestTrayJavaFX.java b/test/dorkbox/TestTrayJavaFX.java index 73b4e16..e30b617 100644 --- a/test/dorkbox/TestTrayJavaFX.java +++ b/test/dorkbox/TestTrayJavaFX.java @@ -253,6 +253,10 @@ class TestTrayJavaFX { })); mainMenu.add(submenu); + MenuItem entry = new MenuItem("Type: " + systemTray.getType().toString()); + entry.setEnabled(false); + systemTray.getMenu().add(entry); + systemTray.getMenu().add(new MenuItem("Quit", new ActionListener() { @Override public diff --git a/test/dorkbox/TestTraySwt.java b/test/dorkbox/TestTraySwt.java index b6f5964..1d8417a 100644 --- a/test/dorkbox/TestTraySwt.java +++ b/test/dorkbox/TestTraySwt.java @@ -209,6 +209,10 @@ class TestTraySwt { })); mainMenu.add(submenu); + MenuItem entry = new MenuItem("Type: " + systemTray.getType().toString()); + entry.setEnabled(false); + systemTray.getMenu().add(entry); + systemTray.getMenu().add(new MenuItem("Quit", new ActionListener() { @Override public