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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel