diff --git a/src/main/java/plugins/danyfel80/deeplearningdownloader/DeepLearningVersionSelector.java b/src/main/java/plugins/danyfel80/deeplearningdownloader/DeepLearningVersionSelector.java index 7dbf7c03e89976802a48467a4a65aa7ac6bce03c..80f2934f9d2d587a9a4eca7c225b72cb3bef322d 100644 --- a/src/main/java/plugins/danyfel80/deeplearningdownloader/DeepLearningVersionSelector.java +++ b/src/main/java/plugins/danyfel80/deeplearningdownloader/DeepLearningVersionSelector.java @@ -73,24 +73,55 @@ public class DeepLearningVersionSelector extends EzPlug implements EzStoppable, @Override protected void initialize() { - if (new PlatformDetection().getOs().equals(PlatformDetection.ARCH_ARM64)) { - MessageDialog.showDialog("ARM64 chips and compatiblity with Deep Learnign engines", - "This computer uses the ARM64 chip architecture. This architecture" + System.lineSeparator() - + "is relatively recent, therefore many of the existing Deep Learning" + System.lineSeparator() - + "engines will not be available on your computer." + System.lineSeparator() - + "ARM64 chips also provide the possibility of running some x86_64" + System.lineSeparator() - + "compiled programs using Rosetta. In order to enable Rosetta, change" + System.lineSeparator() - + "the JAVA_HOME variable to a Java 8 or lower. Currently, the JAVA_HOME" + System.lineSeparator() - + "points to:" + System.lineSeparator() + System.getProperty("java.home") + System.lineSeparator() - + "Using Rosetta will enable more Deep Learning engines, although some" + System.lineSeparator() - + "will still be missing." + System.lineSeparator() - + "For more information, go to the Wiki: " + System.lineSeparator() + Constants.WIKI_LINK, - MessageDialog.INFORMATION_MESSAGE); + PlatformDetection system = new PlatformDetection(); + if (system.getArch().equals(PlatformDetection.ARCH_ARM64)) { + arm64InfoMessage(); + } else if (system.isUsingRosseta()) { + rosettaInfoMessage(); } String[] versionStrings = versions.keySet().stream().sorted().toArray(String[]::new); varInVersion = new EzVarText("Version", versionStrings, getDefaultVersionIndex(versionStrings), false); addEzComponent(varInVersion); } + + /** + * Display information message about the inconveniences using arm64 chips + */ + private void arm64InfoMessage() { + MessageDialog.showDialog("ARM64 chips and compatiblity with Deep Learnign engines", + "This computer uses the ARM64 chip architecture. This architecture" + System.lineSeparator() + + "is relatively recent, therefore many of the existing Deep Learning" + System.lineSeparator() + + "engines will not be available on your computer." + System.lineSeparator() + + "ARM64 chips also provide the possibility of running some x86_64" + System.lineSeparator() + + "compiled programs using Rosetta. In order to enable Rosetta, change" + System.lineSeparator() + + "the JAVA_HOME variable to a Java 8 or lower. Currently, the JAVA_HOME" + System.lineSeparator() + + "points to:" + System.lineSeparator() + System.getProperty("java.home") + System.lineSeparator() + + "Using Rosetta will enable more Deep Learning engines, although some" + System.lineSeparator() + + "will still be missing." + System.lineSeparator() + + "For more information, go to the Wiki: " + System.lineSeparator() + Constants.WIKI_LINK, + MessageDialog.INFORMATION_MESSAGE); + } + + /** + * Display information message about the inconveniences using arm64 chips + */ + private void rosettaInfoMessage() { + MessageDialog.showDialog("Rosetta is being used", + "This computer uses the ARM64 chip architecture. Arm64 chips are" + System.lineSeparator() + + "compatible with fewer Deep Learning engines. However, ARM64 chips" + System.lineSeparator() + + "can replicate the \"traditional\" x86_64 architecture with Rosetta." + System.lineSeparator() + + "Rosetta is currently enabled, allowing the use of certain Deep Learning" + System.lineSeparator() + + "engines that would not be available for ARM64 architecture systems." + System.lineSeparator() + + "The list of installable Deep Learning engines will be longer than the" + System.lineSeparator() + + "list if the system was not using Rosetta, although Tensorflow 1 will" + System.lineSeparator() + + "still be unavailable." + System.lineSeparator() + + "In order to disable Rosetta and use the full capabilities of the ARM64" + System.lineSeparator() + + "chip, change the JAVA_HOME to a Java distribution compatible with ARM64." + System.lineSeparator() + + "Currently, the JAVA_HOME variable points to:" + System.lineSeparator() + + System.getProperty("java.home") + System.lineSeparator() + + "For more information, go to the Wiki: " + System.lineSeparator() + Constants.WIKI_LINK, + MessageDialog.INFORMATION_MESSAGE); + } private VarString varInBlockVersion;