diff options
Diffstat (limited to 'pdf-over-gui')
-rw-r--r-- | pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java index d2ef6a54..e55a6b86 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/composites/OutputComposite.java @@ -238,12 +238,8 @@ public class OutputComposite extends StateComposite { } log.debug("Trying to save to '" + outputFileName + "'"); //$NON-NLS-1$ //$NON-NLS-2$ - this.saveFailed = !saveResultAsFile(inputFolder, outputFileName); - - if (!this.saveFailed) { - // Save successful - this.outputFile = new File(inputFolder, outputFileName); - } + this.outputFile = saveResultAsFile(inputFolder, outputFileName); + this.saveFailed = (this.outputFile == null); // If saving failed, enable save button enableSaveButton(this.saveFailed); @@ -256,15 +252,17 @@ public class OutputComposite extends StateComposite { * @param inputFolder the Folder the original document is located at * @param target the filename to save the document as * - * @return whether save was successful + * @return saved File (or null if unsuccessful) * @throws FileNotFoundException * @throws IOException */ - private boolean saveResultAsFile(File inputFolder, String target) { + private File saveResultAsFile(File inputFolder, String target) { if (target == null) - return false; + return null; - File targetFile = new File(inputFolder, target); + File targetFile = new File(target); + if (!targetFile.isAbsolute()) + targetFile = new File(inputFolder, target); if (targetFile.exists()) { Dialog dialog = new Dialog(this.getShell(), @@ -272,7 +270,7 @@ public class OutputComposite extends StateComposite { BUTTONS.OK_CANCEL, ICON.QUESTION); if (dialog.open() == SWT.CANCEL) { - return false; + return null; } } @@ -285,13 +283,15 @@ public class OutputComposite extends StateComposite { outstream.close(); } catch (FileNotFoundException e) { log.debug("File not found", e); //$NON-NLS-1$ - return false; + return null; } catch (IOException e) { log.debug("IO Error", e); //$NON-NLS-1$ - return false; + return null; } - return targetFile.exists(); + if (!targetFile.exists()) + return null; + return targetFile; } /** @@ -303,7 +303,7 @@ public class OutputComposite extends StateComposite { name = FilenameUtils.getName(name); String extension = FilenameUtils.getExtension(name); name = FilenameUtils.removeExtension(name); - return name + Constants.SIGNED_SUFFIX + "." + extension; //$NON-NLS-1$ + return name + Constants.SIGNED_SUFFIX + FilenameUtils.EXTENSION_SEPARATOR + extension; } /** @@ -345,10 +345,12 @@ public class OutputComposite extends StateComposite { if (!OutputComposite.this.outputFile.exists()) return; - // Desktop supported check already done in constructor + // Normalize filename + File f = new File(FilenameUtils.normalize( + OutputComposite.this.outputFile.getAbsolutePath())); + log.debug("Trying to open " + f.toString()); //$NON-NLS-1$ if (Desktop.isDesktopSupported()) { - Desktop.getDesktop().open( - OutputComposite.this.outputFile); + Desktop.getDesktop().open(f); } else { log.error("SWT Desktop is not supported on this platform!"); //$NON-NLS-1$ } |