From 69384a369d11b4c58b51af4c2671028aa631f8b2 Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 8 Mar 2021 17:30:02 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-48204=20=E3=80=9010.0.15=E3=80=91JDK11?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=81=97=E7=95=99=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/os/impl/PMDialogAction.java | 4 +-- .../com/fr/design/os/impl/SupportOSImpl.java | 28 +++++++++++++++++++ .../fr/design/utils/gui/GUIPaintUtils.java | 6 ++-- .../fr/design/os/impl/SupportOSImplTest.java | 10 +++++++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java b/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java index 7e74e7651a..990e73ee9c 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/PMDialogAction.java @@ -19,11 +19,11 @@ public class PMDialogAction implements OSBasedAction { private static String PLUGIN_MANAGER_ROUTE = "#management/plugin"; @Override public void execute(Object... objects) { - if(Arch.getArch() == Arch.ARM || OperatingSystem.isLinux()){ + if(Arch.getArch() == Arch.ARM || OperatingSystem.isLinux() || SupportOSImpl.MACOS_WEB_PLUGIN_MANAGEMENT.support()){ DesignUtils.visitEnvServerByParameters( PLUGIN_MANAGER_ROUTE,null,null); return; } - if (ServerPreferenceConfig.getInstance().isUseOptimizedUPM() && JdkVersion.LE_8.support()) { + if (ServerPreferenceConfig.getInstance().isUseOptimizedUPM() || SupportOSImpl.MACOS_NEW_PLUGIN_MANAGEMENT.support()) { UpmFinder.showUPMDialog(); } else { WebViewDlgHelper.createPluginDialog(); diff --git a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java index 88fe2a2758..a25d2606a0 100644 --- a/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java +++ b/designer-base/src/main/java/com/fr/design/os/impl/SupportOSImpl.java @@ -1,6 +1,7 @@ package com.fr.design.os.impl; import com.fr.base.FRContext; +import com.fr.design.jdk.JdkVersion; import com.fr.general.CloudCenter; import com.fr.general.GeneralContext; import com.fr.json.JSON; @@ -124,6 +125,33 @@ public enum SupportOSImpl implements SupportOS { public boolean support() { return OperatingSystem.isWindows(); } + }, + + MACOS_NEW_PLUGIN_MANAGEMENT { + @Override + public boolean support() { + return JdkVersion.GE_9.support() && OperatingSystem.isMacos() && getMacOsVersion() < BIG_SUR_VERSION_NUMBER; + } + }, + + + MACOS_WEB_PLUGIN_MANAGEMENT { + @Override + public boolean support() { + return JdkVersion.GE_9.support() && OperatingSystem.isMacos() && getMacOsVersion() >= BIG_SUR_VERSION_NUMBER; + } + }; + + private static final int BIG_SUR_VERSION_NUMBER = 16; + + protected int getMacOsVersion() { + String version = System.getProperty("os.version"); + String[] versionSlice = version.split("\\."); + try { + return Integer.parseInt(versionSlice[1]); + } catch (Exception ignored) { + return 0; + } } } diff --git a/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java index 30984197c0..c4efc02829 100644 --- a/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/gui/GUIPaintUtils.java @@ -1,6 +1,5 @@ package com.fr.design.utils.gui; -import com.fr.base.BaseUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.stable.Constants; @@ -40,7 +39,10 @@ public class GUIPaintUtils { g2d.drawLine(x, y, x, height - 1); g2d.drawLine(x, height - 1, x + 3, height - 1); } else { - g2d.drawRoundRect(x, y, width - 1, height - 1, UIConstants.ARC, UIConstants.ARC); + double offsetX = Math.min(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform().getScaleX() - 1, 0.5d); + double offsetY = Math.min(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform().getScaleY() - 1, 0.5d); + Shape shape = new RoundRectangle2D.Double(x + offsetX, y + offsetY, width - 1d, height - 1d, UIConstants.ARC, UIConstants.ARC); + g2d.draw(shape); } g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); } else { diff --git a/designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java b/designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java index 1887537970..ee0804d362 100644 --- a/designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java +++ b/designer-base/src/test/java/com/fr/design/os/impl/SupportOSImplTest.java @@ -6,6 +6,7 @@ import org.junit.Assert; import org.junit.Test; import java.util.Locale; +import org.powermock.reflect.Whitebox; /** * @author hades @@ -21,4 +22,13 @@ public class SupportOSImplTest extends TestCase { Assert.assertFalse(SupportOSImpl.AUTOPUSHUPDATE.support()); } + @Test + public void testGetMacOsVersion() throws Exception { + String backUp = System.getProperty("os.version"); + System.setProperty("os.version", "10.16"); + int number = Whitebox.invokeMethod(SupportOSImpl.MACOS_WEB_PLUGIN_MANAGEMENT, "getMacOsVersion"); + Assert.assertEquals(16, number); + System.setProperty("os.version", backUp); + } + } \ No newline at end of file