diff --git a/src/main/java/de/uni_hamburg/corpora/gui/GUI.java b/src/main/java/de/uni_hamburg/corpora/gui/GUI.java index 184f7537f3d3c5431100b48b8e97b1eb46eaa628..9ec27ad4288fa3a6140667677a270c4f4ea3ac9c 100644 --- a/src/main/java/de/uni_hamburg/corpora/gui/GUI.java +++ b/src/main/java/de/uni_hamburg/corpora/gui/GUI.java @@ -70,9 +70,12 @@ public class GUI { JPanel buttonPanel = new JPanel(new GridLayout(1,4)); JButton checkButton = new JButton("Check corpus"); buttonPanel.add(checkButton); - JButton reportButton = new JButton("Show report"); - reportButton.setEnabled(false); - buttonPanel.add(reportButton); + JButton showReportButton = new JButton("Show report"); + showReportButton.setEnabled(false); + buttonPanel.add(showReportButton); + JButton saveReportButton = new JButton("Save report"); + saveReportButton.setEnabled(false); + buttonPanel.add(saveReportButton); JButton updateButton = new JButton("Update corpus services"); buttonPanel.add(updateButton); JButton exitButton = new JButton("Exit"); @@ -82,7 +85,8 @@ public class GUI { Function<String, Void> callback = (outFile) -> { reportFile = outFile; - reportButton.setEnabled(true); + showReportButton.setEnabled(true); + saveReportButton.setEnabled(true); JOptionPane.showMessageDialog(window, "Checks executed successfully. You can now check the report.", "Success", @@ -93,14 +97,14 @@ public class GUI { }; checkButton.addActionListener(actionEvent -> { checkButton.setEnabled(false); - reportButton.setEnabled(false); + showReportButton.setEnabled(false); updateButton.setEnabled(false); // Do the checking try { Config config = Config.read(configPath.getText()); JOptionPane.showMessageDialog(window, "Starting checks now. Depending on the corpus and the checks selected this can take" + - "a while", + " a while", "Info", JOptionPane.INFORMATION_MESSAGE); CorpusThread worker = new CorpusThread( @@ -163,7 +167,7 @@ public class GUI { updateButton.setEnabled(true); exitButton.setEnabled(true); }); - reportButton.addActionListener(actionEvent -> { + showReportButton.addActionListener(actionEvent -> { Desktop dt = Desktop.getDesktop(); try { dt.open(new File(reportFile)); @@ -174,6 +178,40 @@ public class GUI { JOptionPane.ERROR_MESSAGE); } }); + saveReportButton.addActionListener(actionEvent -> { + JFileChooser chooser = new JFileChooser(); + chooser.setFileFilter(new FileNameExtensionFilter( + "HTML file", "html", "htm")); + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + chooser.setSelectedFile(new File(reportFile)); + int result = chooser.showSaveDialog(configButton); + if (result == JFileChooser.APPROVE_OPTION) { + if (!(chooser.getSelectedFile().toString().toLowerCase().endsWith("htm") || + chooser.getSelectedFile().toString().toLowerCase().endsWith("html"))) + chooser.setSelectedFile(new File(chooser.getSelectedFile().toString() + ".html")); + boolean overwrite = true; + if (chooser.getSelectedFile().exists()) { + int overwriteResp = + JOptionPane.showConfirmDialog(window, "File " + chooser.getSelectedFile() + + " already exists. Do you want to overwrite?","Overwrite",JOptionPane.YES_NO_OPTION); + if (overwriteResp == JOptionPane.NO_OPTION) { + overwrite = false; + } + } + try { + if (overwrite) { + new BufferedInputStream(new FileInputStream(reportFile)) + .transferTo(new BufferedOutputStream(new FileOutputStream(chooser.getSelectedFile()))); + } + } + catch (IOException e) { + JOptionPane.showMessageDialog(window, + "Error saving report to " + chooser.getSelectedFile().getPath() + ". Reason: " + e, + "Error", JOptionPane.ERROR_MESSAGE); + } + + } + }); // Handle exit exitButton.addActionListener(actionEvent -> { // Close window