1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package coras.client;
22
23 import java.awt.Cursor;
24 import java.awt.event.ActionEvent;
25 import java.awt.event.KeyEvent;
26 import java.io.File;
27
28 import javax.swing.JFrame;
29 import javax.swing.JOptionPane;
30
31 import no.sintef.file.IOUtils;
32
33 import org.jdesktop.jdic.desktop.Desktop;
34
35 import coras.riskanalysis.RiskAnalysisProject;
36
37 /***
38 * @author fvr
39 *
40 * TODO To change the template for this generated type comment go to
41 * Window - Preferences - Java - Code Style - Code Templates
42 */
43 public class GenerateReportAction extends CorasAction {
44
45 public GenerateReportAction(CorasClient client) {
46 super(client, "Generate Report", KeyEvent.VK_R, "Generate Report", "Generate Risk Analysis Report");
47 }
48
49 public void actionPerformed(ActionEvent e) {
50 final JFrame mainFrame = getClient().getMainFrame();
51 mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
52 new SwingWorker() {
53 public Object construct() {
54 try {
55 RiskAnalysisProject project = getClient().getProject();
56 return getClient().getCorasServices().generateReport(project.getId());
57 } catch (Exception e) {
58 System.err.println("Error while generating report: " + e);
59 return null;
60 }
61 }
62 public void finished() {
63 final byte[] bytes = (byte[]) get();
64 mainFrame.setCursor(Cursor.getDefaultCursor());
65 if (bytes == null) {
66 JOptionPane.showMessageDialog(mainFrame, "Error while generating report", "Error", JOptionPane.ERROR_MESSAGE);
67 return;
68 }
69 final File reportFile = IOUtils.showSaveDialog("report.rtf", mainFrame);
70 if (reportFile != null) {
71 new SwingWorker() {
72 public Object construct() {
73 try {
74 IOUtils.saveFile(bytes, reportFile);
75 Desktop.open(reportFile);
76 } catch (Exception e) {
77 System.err.println("Error saving report: " + e);
78 }
79 return null;
80 }
81 }.start();
82 }
83 }
84 }.start();
85 }
86
87 }