From c914a3c25e317f922dbaafb01a4a77d68327ea8e Mon Sep 17 00:00:00 2001 From: mikera Date: Tue, 27 Aug 2024 07:41:38 +0100 Subject: [PATCH] Refactor terminal check into separate GUI class --- .../main/java/convex/gui/utils/Terminal.java | 26 +++++++++++++++++++ .../main/java/convex/gui/utils/Toolkit.java | 20 -------------- .../src/main/java/convex/main/Main.java | 4 +-- 3 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 convex-gui/src/main/java/convex/gui/utils/Terminal.java diff --git a/convex-gui/src/main/java/convex/gui/utils/Terminal.java b/convex-gui/src/main/java/convex/gui/utils/Terminal.java new file mode 100644 index 000000000..ca745e064 --- /dev/null +++ b/convex-gui/src/main/java/convex/gui/utils/Terminal.java @@ -0,0 +1,26 @@ +package convex.gui.utils; + +import java.io.Console; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class Terminal { + + public static boolean checkIfTerminal() { + Console c=System.console(); + // If null, we have no terminal (Java up to 21) + if (c==null) return false; + + // We have a console, but in Java 22+ we need to check if it is actually a terminal + try { + Method m=c.getClass().getMethod("isTerminal"); + return (Boolean)m.invoke(c); + } catch (NoSuchMethodException e) { + return true; + } catch (SecurityException | IllegalAccessException | InvocationTargetException e) { + // Shouldn't happen? + return false; + } + } + +} diff --git a/convex-gui/src/main/java/convex/gui/utils/Toolkit.java b/convex-gui/src/main/java/convex/gui/utils/Toolkit.java index 94c8be6ef..8c5795b38 100644 --- a/convex-gui/src/main/java/convex/gui/utils/Toolkit.java +++ b/convex-gui/src/main/java/convex/gui/utils/Toolkit.java @@ -16,11 +16,8 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; -import java.io.Console; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; @@ -369,21 +366,4 @@ public static JComponent withTitledBorder(String title, JComponent comp) { public static Icon menuIcon(int codePoint) { return SymbolIcon.get(codePoint,Toolkit.BUTTON_FONT.getSize()); } - - public static boolean checkIfTerminal() { - Console c=System.console(); - // If null, we have no terminal (Java up to 21) - if (c==null) return false; - - // We have a console, but in Java 22+ we need to check if it is actually a terminal - try { - Method m=c.getClass().getMethod("isTerminal"); - return (Boolean)m.invoke(c); - } catch (NoSuchMethodException e) { - return true; - } catch (SecurityException | IllegalAccessException | InvocationTargetException e) { - // Shouldn't happen? - return false; - } - } } diff --git a/convex-integration/src/main/java/convex/main/Main.java b/convex-integration/src/main/java/convex/main/Main.java index aeae4e554..95de2b13f 100644 --- a/convex-integration/src/main/java/convex/main/Main.java +++ b/convex-integration/src/main/java/convex/main/Main.java @@ -1,11 +1,11 @@ package convex.main; -import convex.gui.utils.Toolkit; +import convex.gui.utils.Terminal; public class Main { public static void main(String... args) { - boolean terminal=Toolkit.checkIfTerminal(); + boolean terminal=Terminal.checkIfTerminal(); if (terminal) { convex.cli.Main.main(args); } else {