summaryrefslogtreecommitdiff
path: root/demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java
diff options
context:
space:
mode:
Diffstat (limited to 'demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java')
-rw-r--r--demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java29
1 files changed, 28 insertions, 1 deletions
diff --git a/demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java b/demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java
index 92e7d725e..39b3aae7f 100644
--- a/demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java
+++ b/demos/java/gsviewer/src/com/artifex/gsviewer/ViewerController.java
@@ -2,6 +2,7 @@ package com.artifex.gsviewer;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.IOException;
import java.io.PrintStream;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
@@ -28,7 +29,33 @@ public class ViewerController implements ViewerGUIListener {
private Document currentDocument;
private SmartLoader smartLoader;
- public void open(final File file) {
+ public void open(File file) {
+ if (Document.shouldDistill(file)) {
+ int ret = source.showConfirmDialog("Distill", "Would you like to distill this document before opening?");
+ if (ret == ViewerWindow.CANCEL)
+ return;
+ else if (ret == ViewerWindow.YES) {
+ try {
+ JFileChooser chooser = new JFileChooser();
+ chooser.setCurrentDirectory(new File("."));
+ ret = chooser.showSaveDialog(source);
+ if (ret != JFileChooser.APPROVE_OPTION)
+ return;
+ File out = chooser.getSelectedFile();
+ if (out.exists()) {
+ ret = source.showConfirmDialog("Overwrite?", out.getName() + " already exists. Overwrite?");
+ if (ret != ViewerWindow.YES)
+ return;
+ }
+ if (currentDocument != null)
+ close();
+ file = Document.distillDocument(file, out);
+ } catch (IllegalStateException | IOException e) {
+ System.err.println("Failed to distill: " + e);
+ }
+ }
+ }
+
if (currentDocument != null)
close();
Document.loadDocumentAsync(file, (final Document doc, final Exception exception) -> {