diff --git a/src/main/java/io/bitsquare/app/BitsquareEnvironment.java b/src/main/java/io/bitsquare/app/BitsquareEnvironment.java index 3d67615752..a18b0104f6 100644 --- a/src/main/java/io/bitsquare/app/BitsquareEnvironment.java +++ b/src/main/java/io/bitsquare/app/BitsquareEnvironment.java @@ -22,6 +22,7 @@ import io.bitsquare.btc.UserAgent; import io.bitsquare.btc.WalletService; import io.bitsquare.gui.ViewCB; import io.bitsquare.persistence.Persistence; +import io.bitsquare.util.Utilities; import io.bitsquare.util.spring.JOptCommandLinePropertySource; import java.nio.file.Paths; @@ -127,16 +128,13 @@ public class BitsquareEnvironment extends StandardEnvironment { private static String defaultUserDataDir() { - String os = System.getProperty("os.name").toLowerCase(); - - if (os.contains("win")) + if (Utilities.isWindows()) return System.getenv("APPDATA"); - - if (os.contains("mac")) + else if (Utilities.isOSX()) return Paths.get(System.getProperty("user.home"), "Library", "Application Support").toString(); - - // *nix - return Paths.get(System.getProperty("user.home"), ".local", "share").toString(); + else + // *nix + return Paths.get(System.getProperty("user.home"), ".local", "share").toString(); } private static String appDataDir(String userDataDir, String appName) { diff --git a/src/main/java/io/bitsquare/gui/SystemTray.java b/src/main/java/io/bitsquare/gui/SystemTray.java index 2d7127b752..48057fbe94 100644 --- a/src/main/java/io/bitsquare/gui/SystemTray.java +++ b/src/main/java/io/bitsquare/gui/SystemTray.java @@ -19,6 +19,7 @@ package io.bitsquare.gui; import io.bitsquare.BitsquareException; import io.bitsquare.gui.util.ImageUtil; +import io.bitsquare.util.Utilities; import java.awt.*; import java.awt.image.BufferedImage; @@ -76,16 +77,26 @@ public class SystemTray { popupMenu.addSeparator(); popupMenu.add(exitItem); - String path = ImageUtil.isRetina() ? ICON_HI_RES : ICON_LO_RES; + String path; + if (Utilities.isOSX()) + path = ImageUtil.isRetina() ? ICON_HI_RES : ICON_LO_RES; + else + path = ICON_HI_RES; + try { BufferedImage trayIconImage = ImageIO.read(getClass().getResource(path)); - int trayIconWidth = new TrayIcon(trayIconImage).getSize().width; - TrayIcon trayIcon = new TrayIcon(trayIconImage.getScaledInstance(trayIconWidth, -1, Image.SCALE_SMOOTH)); + TrayIcon trayIcon = new TrayIcon(trayIconImage); + // On Windows and Linux the icon needs to be scaled + // On OSX we get the correct size from the provided image + if (!Utilities.isOSX()) { + int trayIconWidth = trayIcon.getSize().width; + trayIcon = new TrayIcon(trayIconImage.getScaledInstance(trayIconWidth, -1, Image.SCALE_SMOOTH)); + } + trayIcon.setPopupMenu(popupMenu); trayIcon.setToolTip("Bitsquare: The decentralized bitcoin exchange"); - java.awt.SystemTray self = java.awt.SystemTray.getSystemTray(); - self.add(trayIcon); + java.awt.SystemTray.getSystemTray().add(trayIcon); } catch (AWTException e1) { log.error("Icon could not be added to system tray.", e1); } catch (IOException e2) { diff --git a/src/main/java/io/bitsquare/gui/components/SystemNotification.java b/src/main/java/io/bitsquare/gui/components/SystemNotification.java index 3db0e0e86f..1e8c08ec1f 100644 --- a/src/main/java/io/bitsquare/gui/components/SystemNotification.java +++ b/src/main/java/io/bitsquare/gui/components/SystemNotification.java @@ -17,6 +17,8 @@ package io.bitsquare.gui.components; +import io.bitsquare.util.Utilities; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,8 +36,8 @@ public class SystemNotification { public static void openInfoNotification(String title, String message) { // On windows it causes problems with the hidden stage used in the hansolo Notification implementation // Lets deactivate it for the moment and fix that with a more native-like or real native solution later. - String os = System.getProperty("os.name").toLowerCase(); - if (!os.contains("win")) + // Lets deactivate it for Linux as well, as it is not much tested yet + if (Utilities.isOSX()) notifier.notify(NotificationBuilder.create().title(title).message(message).build()); } } diff --git a/src/main/java/io/bitsquare/util/Utilities.java b/src/main/java/io/bitsquare/util/Utilities.java index 216fbdb827..7c9843462b 100644 --- a/src/main/java/io/bitsquare/util/Utilities.java +++ b/src/main/java/io/bitsquare/util/Utilities.java @@ -52,6 +52,22 @@ public class Utilities { return gson.toJson(object); } + public static boolean isWindows() { + return getOSName().contains("win"); + } + + public static boolean isOSX() { + return getOSName().contains("mac"); + } + + public static boolean isLinux() { + return getOSName().contains("darwin"); + } + + private static String getOSName() { + return System.getProperty("os.name").toLowerCase(); + } + public static T jsonToObject(String jsonString, Class classOfT) { Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).setPrettyPrinting().create();