Added ability to query the system tray type

master
nathan 2018-11-10 23:43:43 +01:00
parent f0e7ff5cf8
commit 56832b44ca
4 changed files with 44 additions and 0 deletions

View File

@ -206,6 +206,30 @@ class SystemTray {
return null;
}
private static
TrayType fromClass(final Class<? extends Tray> 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<? extends Tray> 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());
}
}

View File

@ -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

View File

@ -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

View File

@ -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