|
|
- 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<String> paths = new Vector<String>();
-
- 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));
- }
- }
- }
|