Revision: 5947
          http://sourceforge.net/p/jump-pilot/code/5947
Author:   edso
Date:     2018-09-25 15:27:11 +0000 (Tue, 25 Sep 2018)
Log Message:
-----------
finetuning macos integration
cleanup

Modified Paths:
--------------
    core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java

Modified: 
core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java     
2018-09-25 14:36:40 UTC (rev 5946)
+++ core/trunk/src/com/vividsolutions/jump/workbench/ui/WorkbenchFrame.java     
2018-09-25 15:27:11 UTC (rev 5947)
@@ -52,6 +52,7 @@
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyVetoException;
+import java.io.File;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.lang.reflect.InvocationHandler;
@@ -2327,67 +2328,37 @@
 
     private class AppleHandler implements InvocationHandler {
       public void register() {
-        // import com.apple.eawt.AboutHandler;
-        // import com.apple.eawt.AppEvent.AboutEvent;
-        // import com.apple.eawt.AppEvent.QuitEvent;
-        // import com.apple.eawt.Application;
-        // import com.apple.eawt.QuitHandler;
-        // import com.apple.eawt.QuitResponse;
-  
-        // com.apple.eawt.Application app =
-        // com.apple.eawt.Application.getApplication();
-        // app.setQuitHandler(new com.apple.eawt.QuitHandler() {
-        // public void handleQuitRequestWith(
-        // com.apple.eawt.AppEvent.QuitEvent e,
-        // com.apple.eawt.QuitResponse resp) {
-        // closeApplication();
-        // // still here?, must have been cancelled
-        // resp.cancelQuit();
-        // }
-        // });
-        // app.setAboutHandler(new com.apple.eawt.AboutHandler() {
-        // public void handleAbout(com.apple.eawt.AppEvent.AboutEvent e) {
-        // AboutDialog.instance(getContext()).setVisible(true);
-        // }
-        // });
-        // app.removePreferencesMenuItem();
-  
         // using reflection to avoid macos specific classes being required for
-        // compiling on non macos platforms
+        // compiling on non macos platforms or compiling on java8
         try {
           Class<?> desktopClass = null;
           Object desktopObject = null;
 
-          // try new java9+ way
-          desktopClass = findClass("Desktop", new String[] { "java.awt" });
-          if (desktopClass != null) {
-            desktopObject = desktopClass.getMethod("getDesktop").invoke(null);
-          }
-          // still null? try old java8- apple java extensions way
-          if (desktopClass == null) {
+          Class<?> quitHandlerClass = findClass("QuitHandler");
+          Class<?> aboutHandlerClass = findClass("AboutHandler");
+          Class<?> openFilesHandlerClass = findClass("OpenFilesHandler");
+          Class<?> preferencesHandlerClass = findClass("PreferencesHandler");
+
+          // quithandler package suggests old java8- apple java extensions
+          if (quitHandlerClass != null && 
quitHandlerClass.getPackage().getName().equals("com.apple.eawt")) {
             desktopClass = findClass("Application", new String[] { 
"com.apple.eawt" });
-            if (desktopClass != null) {
+            if (desktopClass != null)
               desktopObject = 
desktopClass.getDeclaredMethod("getApplication").invoke(null);
-            }
           }
+
+          // fallback, the new java9+ way
+          if (desktopClass == null) {
+            desktopClass = findClass("Desktop", new String[] { "java.awt" });
+            if (desktopClass != null)
+              desktopObject = 
desktopClass.getMethod("getDesktop").invoke(null);
+          }
   
           // give up now
           if (desktopClass == null) {
-            Logger.error("Couldn't find apple desktop class. Skip registering 
desktop handlers.");
+            Logger.error("Couldn't find desktop class. Skip registering 
desktop handlers.");
             return;
           }
   
-          Class<?> quitHandlerClass = findClass("QuitHandler");
-          Class<?> aboutHandlerClass = findClass("AboutHandler");
-          Class<?> openFilesHandlerClass = findClass("OpenFilesHandler");
-          Class<?> preferencesHandlerClass = findClass("PreferencesHandler");
-  
-          // fetch instance of app
-          // Object application = applicationClass.getConstructor((Class[])
-          // null).newInstance((Object[]) null);
-          // Object application =
-          // applicationClass.getDeclaredMethod("getApplication").invoke(null);
-  
           Object proxy = 
Proxy.newProxyInstance(this.getClass().getClassLoader(),
               new Class<?>[] { quitHandlerClass, aboutHandlerClass, 
openFilesHandlerClass, preferencesHandlerClass },
               this);
@@ -2400,7 +2371,7 @@
             desktopClass.getDeclaredMethod("setOpenFileHandler", 
openFilesHandlerClass).invoke(desktopObject, proxy);
           if (preferencesHandlerClass != null)
             desktopClass.getDeclaredMethod("setPreferencesHandler", 
preferencesHandlerClass).invoke(desktopObject, proxy);
-        } catch ( /* InstantiationException | */ IllegalAccessException | 
IllegalArgumentException
+        } catch ( IllegalAccessException | IllegalArgumentException
             | InvocationTargetException | NoSuchMethodException | 
SecurityException e) {
           Logger.error(e);
         }
@@ -2434,16 +2405,14 @@
       public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
         if ("openFiles".equals(method.getName())) {
           // TODO: implement
-          // if (args[0] != null) {
-          // Object files =
-          // args[0].getClass().getMethod("getFiles").invoke(args[0]);
-          // if (files instanceof List) {
-          // OpenAction openAction = new OpenAction(kseFrame);
-          // for (File file : (List<File>) files) {
-          // openAction.openKeyStore(file);
-          // }
-          // }
-          // }
+          if (args[0] != null) {
+            Object files = 
args[0].getClass().getMethod("getFiles").invoke(args[0]);
+            if (files instanceof List) {
+              for (File file : (List<File>) files) {
+                Logger.error("Opening file '" + file.getAbsolutePath() + "' 
currently not implemented");
+              }
+            }
+          }
         } else if ("handleQuitRequestWith".equals(method.getName())) {
           closeApplication();
           // If we have returned from the above call the user has cancelled



_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to