package edu.stanford.nlp.trees.tregex.gui; import com.apple.eawt.ApplicationAdapter; import com.apple.eawt.ApplicationEvent; /** * Class to load OSX specific settings for TregexGUI. Made by consulting the Apple sample code * for a similar (and identically named) class at http://devworld.apple.com/samplecode/OSXAdapter/index.html. * @author rafferty * */ public class OSXAdapter extends ApplicationAdapter { private static OSXAdapter adapter; private static com.apple.eawt.Application app; private TregexGUI mainApp; private OSXAdapter (TregexGUI inApp) { mainApp = inApp; } // implemented handler methods. These are basically hooks into existing // functionality from the main app, as if it came over from another platform. @Override public void handleAbout(ApplicationEvent ae) { if (mainApp != null) { ae.setHandled(true); mainApp.about(); } else { throw new IllegalStateException("handleAbout: TregexGUI instance detached from listener"); } } @Override public void handlePreferences(ApplicationEvent ae) { if (mainApp != null) { mainApp.doPreferences(); ae.setHandled(true); } else { throw new IllegalStateException("handlePreferences: TregexGUI instance detached from listener"); } } @Override public void handleQuit(ApplicationEvent ae) { if (mainApp != null) { /* / You MUST setHandled(false) if you want to delay or cancel the quit. / This is important for cross-platform development -- have a universal quit / routine that chooses whether or not to quit, so the functionality is identical / on all platforms. This example simply cancels the AppleEvent-based quit and / defers to that universal method. */ ae.setHandled(false); TregexGUI.doQuit(); } else { throw new IllegalStateException("handleQuit: TregexGUI instance detached from listener"); } } // The main entry-point for this functionality. This is the only method // that needs to be called at runtime, and it can easily be done using // reflection (see MyApp.java) public static void registerMacOSXApplication(TregexGUI inApp) { if (app == null) { app = new com.apple.eawt.Application(); } if (adapter == null) { adapter = new OSXAdapter(inApp); } app.addApplicationListener(adapter); } // Another static entry point for EAWT functionality. Enables the // "Preferences..." menu item in the application menu. public static void enablePrefs(boolean enabled) { if (app == null) { app = new com.apple.eawt.Application(); } app.setEnabledPreferencesMenu(enabled); } }