public void openFile(File f) {
			if (IJ.debugMode) IJ.log("DragAndDrop.openFile: "+f);
			try {
				if (null == f) return;
				String path = f.getCanonicalPath();
				if (f.exists()) {
					if (f.isDirectory())
						openDirectory(f, path);
					else {
						if (openAsVirtualStack && (path.endsWith(".tif")||path.endsWith(".TIF")))
							(new FileInfoVirtualStack()).run(path);
						else
							(new Opener()).openAndAddToRecent(path);
						OpenDialog.setLastDirectory(f.getParent()+File.separator);
						OpenDialog.setLastName(f.getName());
					}
				} else {
					IJ.log("File not found: " + path);
				}
			} catch (Throwable e) {
				if (!Macro.MACRO_CANCELED.equals(e.getMessage()))
					IJ.handleException(e);
			}
		}