Code polish

This commit is contained in:
nathan 2017-05-10 15:22:17 +02:00
parent 736b098e86
commit ca56dc9215
3 changed files with 23 additions and 15 deletions

View File

@ -22,12 +22,12 @@ import com.sun.jna.Pointer;
import dorkbox.systemTray.jna.linux.Gobject;
import dorkbox.systemTray.jna.linux.Gtk;
import dorkbox.systemTray.peer.EntryPeer;
import dorkbox.systemTray.util.ImageUtils;
import dorkbox.systemTray.util.ImageResizeUtil;
abstract
class GtkBaseMenuItem implements EntryPeer {
// these are necessary BECAUSE GTK menus look funky as hell when there are some menu entries WITH icons and some WITHOUT
private static File transparentIcon = null;
private static final File transparentIcon = ImageResizeUtil.getTransparentImage();
private volatile boolean hasLegitImage = true;
// these have to be volatile, because they can be changed from any thread
@ -38,11 +38,6 @@ class GtkBaseMenuItem implements EntryPeer {
GtkBaseMenuItem(final Pointer _native) {
this._native = _native;
// cannot be done in a static initializer, because the tray icon size might not yet have been determined
if (transparentIcon == null) {
transparentIcon = ImageUtils.getTransparentImage(ImageUtils.ENTRY_SIZE);
}
}
public

View File

@ -28,7 +28,7 @@ import dorkbox.systemTray.jna.linux.AppIndicator;
import dorkbox.systemTray.jna.linux.AppIndicatorInstanceStruct;
import dorkbox.systemTray.jna.linux.Gobject;
import dorkbox.systemTray.jna.linux.Gtk;
import dorkbox.systemTray.util.ImageUtils;
import dorkbox.systemTray.util.ImageResizeUtil;
/**
* Class for handling all system tray interactions.
@ -169,7 +169,6 @@ class _AppIndicatorNativeTray extends Tray implements NativeUI {
if (!isActive) {
isActive = true;
AppIndicator.app_indicator_set_status(appIndicator, AppIndicator.STATUS_ACTIVE);
}
}
@ -220,9 +219,10 @@ class _AppIndicatorNativeTray extends Tray implements NativeUI {
@Override
public
void run() {
// we initialize with a blank image
File image = ImageUtils.getTransparentImage(ImageUtils.ENTRY_SIZE);
String id = System.nanoTime() + "DBST";
// we initialize with a blank image. Throws RuntimeException if not possible (this should never happen!)
File image = ImageResizeUtil.getTransparentImage(); // tiny size is OK because we will be replacing this image.
appIndicator = AppIndicator.app_indicator_new(id, image.getAbsolutePath(), AppIndicator.CATEGORY_APPLICATION_STATUS);
}
});
@ -232,10 +232,10 @@ class _AppIndicatorNativeTray extends Tray implements NativeUI {
bind(gtkMenu, null, systemTray);
}
// https://bugs.launchpad.net/indicator-application/+bug/527458/comments/12
@Override
protected
void setTooltip_(final String tooltipText) {
// https://bugs.launchpad.net/indicator-application/+bug/527458/comments/12
}
@Override

View File

@ -64,8 +64,6 @@ class _AwtTray extends Tray implements NativeUI {
"type and configuration");
}
_AwtTray.this.tray = SystemTray.getSystemTray();
// we override various methods, because each tray implementation is SLIGHTLY different. This allows us customization.
final AwtMenu awtMenu = new AwtMenu(null) {
@Override
@ -75,6 +73,10 @@ class _AwtTray extends Tray implements NativeUI {
@Override
public
void run() {
if (tray == null) {
tray = SystemTray.getSystemTray();
}
boolean enabled = menuItem.getEnabled();
if (OS.isMacOsX()) {
@ -138,6 +140,10 @@ class _AwtTray extends Tray implements NativeUI {
@Override
public
void run() {
if (tray == null) {
tray = SystemTray.getSystemTray();
}
// stupid java won't scale it right away, so we have to do this twice to get the correct size
final Image trayImage = new ImageIcon(imageFile.getAbsolutePath()).getImage();
trayImage.flush();
@ -185,7 +191,10 @@ class _AwtTray extends Tray implements NativeUI {
void run() {
if (trayIcon != null) {
trayIcon.setPopupMenu(null);
tray.remove(trayIcon);
if (tray != null) {
tray.remove(trayIcon);
}
trayIcon = null;
}
@ -209,6 +218,10 @@ class _AwtTray extends Tray implements NativeUI {
@Override
public
void run() {
if (tray == null) {
tray = SystemTray.getSystemTray();
}
// don't want to matter which (setImage/setTooltip/setEnabled) is done first, and if the image/enabled is changed, we
// want to make sure keep the tooltip text the same as before.
if (trayIcon != null) {