This seems a bit inconsistent.  In the CompressedCopy you do source.isEmpty "preview blah" else compressedPath, but here you are throwing an exception when you do sourceFile.getParent if the option isn't filled.
Won't that cause the preview to break equivalently?