package ij.plugin; import ij.*; import ij.io.*; import java.awt.Desktop; import java.awt.desktop.*; import java.io.File; import java.util.Vector; /** This Mac-specific plugin is designed to handle the "About ImageJ" * command in the ImageJ menu, to open files dropped on ImageJ.app * and to open double-clicked files with creator code "imgJ". * With Java 9 or newer, we use java.awt.desktop instead of the * previous com.apple.eawt.* classes. * @author Alan Brooks */ public class MacAdapter9 implements PlugIn, AboutHandler, OpenFilesHandler, QuitHandler, Runnable { static Vector paths = new Vector(); public void run(String arg) { Desktop dtop = Desktop.getDesktop(); dtop.setOpenFileHandler(this); dtop.setAboutHandler(this); dtop.setQuitHandler(this); } @Override public void handleAbout(AboutEvent e) { IJ.doCommand("About ImageJ..."); } @Override public void openFiles(OpenFilesEvent e) { for (File file: e.getFiles()) { paths.add(file.getPath()); Thread thread = new Thread(this, "Open"); thread.setPriority(thread.getPriority()-1); thread.start(); } } @Override public void handleQuitRequestWith(QuitEvent e, QuitResponse response) { new Executer("Quit", null); // works with the CommandListener } // Not adding preference handling // because we don't have the equivalent of app.setEnabledPreferencesMenu(true); // @Override // public void handlePreferences(PreferencesEvent e) { // IJ.error("The ImageJ preferences are in the Edit>Options menu."); // } public void run() { if (paths.size() > 0) { (new Opener()).openAndAddToRecent(paths.remove(0)); } } }