View Javadoc

1   /*
2    *  Copyright (C) 2003-2005 SINTEF
3    *  Author:  Fredrik Vraalsen (fredrik dot vraalsen at sintef dot no)
4    *  Webpage: http://coras.sourceforge.net/
5    *
6    *  This program is free software; you can redistribute it and/or
7    *  modify it under the terms of the GNU Lesser General Public License
8    *  as published by the Free Software Foundation; either version 2.1
9    *  of the License, or (at your option) any later version.
10   *
11   *  This program is distributed in the hope that it will be useful,
12   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   *  Lesser General Public License for more details.
15   *
16   *  You should have received a copy of the GNU Lesser General Public
17   *  License along with this program; if not, write to the Free
18   *  Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19   *  02111-1307 USA
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  import javax.swing.filechooser.FileFilter;
31  
32  import no.sintef.file.FileSuffixFilter;
33  import no.sintef.file.IOUtils;
34  import coras.client.ui.ProgressDialog;
35  import coras.interchange.RiskAnalysisProjectImporter;
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 ImportRiskAnalysisProjectAction extends CorasAction {
44  
45      public ImportRiskAnalysisProjectAction(CorasClient client) {
46          super(client, "Import Risk Analysis Project", KeyEvent.VK_R, "Import Risk Analysis Project", "Import risk analysis project");
47      }
48  
49      public void actionPerformed(ActionEvent e) {
50          String filename = null;
51          FileFilter[] filters = new FileFilter[] {
52                  new FileSuffixFilter("CORAS Export File (.ci, .ciz)", "ci,ciz")
53          };
54          final JFrame mainFrame = getClient().getMainFrame();
55          final File f = IOUtils.showOpenDialog(filename, filters, mainFrame);
56          if (f == null) {
57              return;
58          }
59          mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
60          RiskAnalysisProjectImporter importer = new RiskAnalysisProjectImporter() {
61              public void finished() {
62              	setFinished(true);
63                  mainFrame.setCursor(Cursor.getDefaultCursor());
64                  Object o = get();
65                  if (o instanceof Exception) {
66                      Exception e = (Exception) o;
67                      JOptionPane.showMessageDialog(mainFrame, "Error importing risk analysis project: " + e.getMessage(), "Import Error", JOptionPane.ERROR_MESSAGE);
68                  } else {
69                  	if (isInterrupted()) {
70                  		JOptionPane.showMessageDialog(mainFrame, "Import of risk analysis project cancelled by user", "Import Interrupted", JOptionPane.INFORMATION_MESSAGE);
71                  	} else {
72                  		JOptionPane.showMessageDialog(mainFrame, "Risk analysis project successfully imported!", "Import Successful", JOptionPane.INFORMATION_MESSAGE);
73                  	}
74                  }
75              }
76          };
77          ProgressDialog progressDialog = new ProgressDialog(mainFrame);
78          progressDialog.setWorker(importer);
79          importer.setImportFile(f);
80          importer.start();
81          progressDialog.setVisible(true);
82      }
83  
84  }