From 7d57e17adbbdee5ca3805b0fb8d26e5ce954b0c0 Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Fri, 2 Sep 2016 16:14:01 -0400 Subject: IceGrid Admin Cmd+Q support on macOS --- .../IceGridGUI/src/main/java/IceGridGUI/Main.java | 2 -- .../src/main/java/IceGridGUI/MainProxy.java | 40 ++++++++++++++-------- 2 files changed, 25 insertions(+), 17 deletions(-) (limited to 'java/src') diff --git a/java/src/IceGridGUI/src/main/java/IceGridGUI/Main.java b/java/src/IceGridGUI/src/main/java/IceGridGUI/Main.java index 338af04e384..69678055551 100644 --- a/java/src/IceGridGUI/src/main/java/IceGridGUI/Main.java +++ b/java/src/IceGridGUI/src/main/java/IceGridGUI/Main.java @@ -31,8 +31,6 @@ public class Main extends JFrame { if(System.getProperty("os.name").startsWith("Mac OS")) // OS X L&F { - System.setProperty("apple.laf.useScreenMenuBar", "true"); - System.setProperty("com.apple.mrj.application.apple.menu.about.name", "IceGrid Admin"); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } else if(System.getProperty("os.name").startsWith("Windows")) diff --git a/java/src/IceGridGUI/src/main/java/IceGridGUI/MainProxy.java b/java/src/IceGridGUI/src/main/java/IceGridGUI/MainProxy.java index ed358694cee..be763cda243 100644 --- a/java/src/IceGridGUI/src/main/java/IceGridGUI/MainProxy.java +++ b/java/src/IceGridGUI/src/main/java/IceGridGUI/MainProxy.java @@ -19,9 +19,19 @@ public class MainProxy // Save main arguments for later usage. // _args = java.util.Arrays.copyOf(args, args.length); - + + if(System.getProperty("os.name").startsWith("Mac OS")) + { + System.setProperty("apple.laf.useScreenMenuBar", "true"); + System.setProperty("com.apple.mrj.application.apple.menu.about.name", "IceGrid Admin"); + + // To catch Command+Q + System.setProperty("apple.eawt.quitStrategy", "CLOSE_ALL_WINDOWS"); + } + + String version = System.getProperty("java.version"); - + Class cls = IceInternal.Util.findClass("com.javafx.main.Main", null); if(cls != null && version.indexOf("1.7") == 0) { @@ -34,17 +44,17 @@ public class MainProxy catch(NoSuchMethodException ex) { ex.printStackTrace(); - JOptionPane.showMessageDialog(null, + JOptionPane.showMessageDialog(null, "Unable to find method `main(String[] args)' in class `com.javafx.main.Main'", - "IceGrid Admin Error", + "IceGrid Admin Error", JOptionPane.ERROR_MESSAGE); } catch(IllegalAccessException ex) { ex.printStackTrace(); - JOptionPane.showMessageDialog(null, + JOptionPane.showMessageDialog(null, "IllegalAccessException invoking method `main(String[] args)' in class `com.javafx.main.Main'", - "IceGrid Admin Error", + "IceGrid Admin Error", JOptionPane.ERROR_MESSAGE); } catch(java.lang.reflect.InvocationTargetException ex) @@ -54,9 +64,9 @@ public class MainProxy cls = IceInternal.Util.findClass("IceGridGUI.Main", null); if(cls == null) { - JOptionPane.showMessageDialog(null, + JOptionPane.showMessageDialog(null, "Unable to find class `IceGridGUI.Main'", - "IceGrid Admin Error", + "IceGrid Admin Error", JOptionPane.ERROR_MESSAGE); return; } @@ -69,28 +79,28 @@ public class MainProxy catch(NoSuchMethodException ex) { ex.printStackTrace(); - JOptionPane.showMessageDialog(null, + JOptionPane.showMessageDialog(null, "Unable to find method `main(String[] args)' in class `com.javafx.main.Main'", - "IceGrid Admin Error", + "IceGrid Admin Error", JOptionPane.ERROR_MESSAGE); } catch(IllegalAccessException ex) { ex.printStackTrace(); - JOptionPane.showMessageDialog(null, + JOptionPane.showMessageDialog(null, "IllegalAccessException invoking method `main(String[] args)' in class `com.javafx.main.Main'", - "IceGrid Admin Error", + "IceGrid Admin Error", JOptionPane.ERROR_MESSAGE); } catch(java.lang.reflect.InvocationTargetException ex) { } } - + public static String[] args() { return _args; } - + private static String[] _args = new String[]{}; -} \ No newline at end of file +} -- cgit v1.2.3