Changeset 7482 in josm
- Timestamp:
- 2014-09-01T21:35:31+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
r7480 r7482 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.awt.Window; 6 7 import java.awt.event.KeyEvent; 7 8 import java.io.File; … … 42 43 // Here we register callbacks for the menu entries in the system menu and file opening through double-click 43 44 try { 44 Class<?> Ccom_apple_eawt_Application = Class.forName("com.apple.eawt.Application");45 Class<?> Ccom_apple_eawt_QuitHandler = Class.forName("com.apple.eawt.QuitHandler");46 Class<?> Ccom_apple_eawt_AboutHandler = Class.forName("com.apple.eawt.AboutHandler");47 Class<?> Ccom_apple_eawt_OpenFilesHandler = Class.forName("com.apple.eawt.OpenFilesHandler");48 Class<?> Ccom_apple_eawt_PreferencesHandler = Class.forName("com.apple.eawt.PreferencesHandler");49 Object Ocom_apple_eawt_Application =Ccom_apple_eawt_Application.getConstructor((Class[])null).newInstance((Object[])null);50 Object Oproxy = Proxy.newProxyInstance(PlatformHookOsx.class.getClassLoader(), new Class<?>[] {51 Ccom_apple_eawt_QuitHandler,Ccom_apple_eawt_AboutHandler,Ccom_apple_eawt_OpenFilesHandler,Ccom_apple_eawt_PreferencesHandler}, ivhandler);52 Ccom_apple_eawt_Application.getDeclaredMethod("setQuitHandler",Ccom_apple_eawt_QuitHandler).invoke(Ocom_apple_eawt_Application,Oproxy);53 Ccom_apple_eawt_Application.getDeclaredMethod("setAboutHandler",Ccom_apple_eawt_AboutHandler).invoke(Ocom_apple_eawt_Application,Oproxy);54 Ccom_apple_eawt_Application.getDeclaredMethod("setOpenFileHandler",Ccom_apple_eawt_OpenFilesHandler).invoke(Ocom_apple_eawt_Application,Oproxy);55 Ccom_apple_eawt_Application.getDeclaredMethod("setPreferencesHandler",Ccom_apple_eawt_PreferencesHandler).invoke(Ocom_apple_eawt_Application,Oproxy);45 Class<?> eawtApplication = Class.forName("com.apple.eawt.Application"); 46 Class<?> eawtQuitHandler = Class.forName("com.apple.eawt.QuitHandler"); 47 Class<?> eawtAboutHandler = Class.forName("com.apple.eawt.AboutHandler"); 48 Class<?> eawtOpenFilesHandler = Class.forName("com.apple.eawt.OpenFilesHandler"); 49 Class<?> eawtPreferencesHandler = Class.forName("com.apple.eawt.PreferencesHandler"); 50 Object application = eawtApplication.getConstructor((Class[])null).newInstance((Object[])null); 51 Object proxy = Proxy.newProxyInstance(PlatformHookOsx.class.getClassLoader(), new Class<?>[] { 52 eawtQuitHandler, eawtAboutHandler, eawtOpenFilesHandler, eawtPreferencesHandler}, ivhandler); 53 eawtApplication.getDeclaredMethod("setQuitHandler", eawtQuitHandler).invoke(application, proxy); 54 eawtApplication.getDeclaredMethod("setAboutHandler", eawtAboutHandler).invoke(application, proxy); 55 eawtApplication.getDeclaredMethod("setOpenFileHandler", eawtOpenFilesHandler).invoke(application, proxy); 56 eawtApplication.getDeclaredMethod("setPreferencesHandler", eawtPreferencesHandler).invoke(application, proxy); 56 57 // this method has been deprecated, but without replacement ATM 57 Ccom_apple_eawt_Application.getDeclaredMethod("setEnabledPreferencesMenu", boolean.class).invoke(Ocom_apple_eawt_Application, Boolean.TRUE); 58 eawtApplication.getDeclaredMethod("setEnabledPreferencesMenu", boolean.class).invoke(application, Boolean.TRUE); 59 // enable full screen 60 enableOSXFullscreen((Window) Main.parent); 58 61 } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException ex) { 59 62 // We'll just ignore this for now. The user will still be able to close JOSM by closing all its windows. 60 63 Main.warn("Failed to register with OSX: " + ex); 64 } 65 } 66 67 /** 68 * Enables fullscreen support for the given window. 69 * @param window The window for which full screen will be available 70 * @since 7482 71 */ 72 public static void enableOSXFullscreen(Window window) { 73 CheckParameterUtil.ensureParameterNotNull(window, "window"); 74 try { 75 // http://stackoverflow.com/a/8693890/2257172 76 Class<?> eawtFullScreenUtilities = Class.forName("com.apple.eawt.FullScreenUtilities"); 77 eawtFullScreenUtilities.getDeclaredMethod("setWindowCanFullScreen", 78 new Class[]{Window.class, boolean.class}).invoke(eawtFullScreenUtilities, window, true); 79 } catch (ReflectiveOperationException | SecurityException | IllegalArgumentException e) { 80 Main.warn("Failed to register with OSX: " + e); 61 81 } 62 82 } … … 291 311 @Override 292 312 public boolean canFullscreen() { 313 // OS X provides native full screen support registered at initialization, no need for custom action 293 314 return false; 294 315 }
Note:
See TracChangeset
for help on using the changeset viewer.