From baba84a1007310a6da1d81de3abeb2a79563213f Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Tue, 1 Dec 2020 14:34:06 +0000 Subject: [PATCH] JAL-3609 JAL-3775 Refactoring a bit of jalview.bin.HiDPISetting so screen display can be mocked in tests by Mockito --- src/jalview/bin/HiDPISetting.java | 46 +++++++++++++++++++++++++++++++------ src/jalview/bin/ScreenInfo.java | 21 +++++++++++++++++ 2 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 src/jalview/bin/ScreenInfo.java diff --git a/src/jalview/bin/HiDPISetting.java b/src/jalview/bin/HiDPISetting.java index 497900f..d6d440a 100644 --- a/src/jalview/bin/HiDPISetting.java +++ b/src/jalview/bin/HiDPISetting.java @@ -1,7 +1,6 @@ package jalview.bin; import java.awt.HeadlessException; -import java.awt.Toolkit; public class HiDPISetting { @@ -11,7 +10,7 @@ public class HiDPISetting private static final int bigScreenThreshold = 1400; - private static final String scalePropertyName = "sun.java2d.uiScale"; + public static final String scalePropertyName = "sun.java2d.uiScale"; private static final boolean isLinux; @@ -39,6 +38,8 @@ public class HiDPISetting private static boolean allowScalePropertyArg = false; + private static ScreenInfo screenInfo = new ScreenInfo(); + static { String system = System.getProperty("os.name") == null ? null @@ -113,9 +114,10 @@ public class HiDPISetting // and screen resolution (more trustworthy) // get screen dpi + screenInfo = getScreenInfo(); try { - dpi = Toolkit.getDefaultToolkit().getScreenResolution(); + dpi = screenInfo.getScreenResolution(); } catch (HeadlessException e) { System.err.println("Cannot get screen resolution: " + e.getMessage()); @@ -124,8 +126,8 @@ public class HiDPISetting // try and get screen size height and width try { - int height = Toolkit.getDefaultToolkit().getScreenSize().height; - int width = Toolkit.getDefaultToolkit().getScreenSize().width; + int height = screenInfo.getScreenHeight(); + int width = screenInfo.getScreenWidth(); // using mindimension in case of portrait screens mindimension = Math.min(height, width); } catch (HeadlessException e) @@ -170,11 +172,41 @@ public class HiDPISetting doneInit = true; } + public static String getScalePropertyArg(int s) + { + return "-D" + scalePropertyName + "=" + String.valueOf(s); + } + public static String getScalePropertyArg() { init(); // HiDPI setting. Just looking at Linux to start with. Test with Windows. - return allowScalePropertyArg ? "-D" + scalePropertyName + "=" + scale - : null; + return allowScalePropertyArg ? getScalePropertyArg(scale) : null; + } + + public static void clear() + { + setHiDPI = false; + setHiDPIScale = 0; + dpi = 0; + mindimension = 0; + width = 0; + scale = 0; + doneInit = false; + allowScalePropertyArg = false; + } + + public static void setScreenInfo(ScreenInfo si) + { + screenInfo = si; + } + + public static ScreenInfo getScreenInfo() + { + if (screenInfo == null) + { + screenInfo = new ScreenInfo(); + } + return screenInfo; } } diff --git a/src/jalview/bin/ScreenInfo.java b/src/jalview/bin/ScreenInfo.java new file mode 100644 index 0000000..899bf94 --- /dev/null +++ b/src/jalview/bin/ScreenInfo.java @@ -0,0 +1,21 @@ +package jalview.bin; + +import java.awt.Toolkit; + +public class ScreenInfo +{ + public int getScreenResolution() + { + return Toolkit.getDefaultToolkit().getScreenResolution(); + } + + public int getScreenHeight() + { + return (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); + } + + public int getScreenWidth() + { + return (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); + } +} -- 1.7.10.2