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  import java.util.Collection;
28  
29  import javax.swing.JFrame;
30  import javax.swing.JOptionPane;
31  
32  import no.sintef.file.IOUtils;
33  import coras.client.ui.ProgressDialog;
34  import coras.client.ui.SelectElementsDialog;
35  import coras.interchange.ExperiencePackageExporter;
36  import coras.reuse.ExperiencePackage;
37  
38  /***
39   * @author fvr
40   *
41   * TODO To change the template for this generated type comment go to
42   * Window - Preferences - Java - Code Style - Code Templates
43   */
44  public class ExportExperiencePackageAction extends CorasAction {
45  
46      public ExportExperiencePackageAction(CorasClient client) {
47          super(client, "Export Experience Package", KeyEvent.VK_X, "Export Experience Package", "Export experience package");
48      }
49  
50      public void actionPerformed(ActionEvent e) {
51          ExperiencePackage experiencePackage = getClient().getExperiencePackage();
52          SelectElementsDialog dialog = new SelectElementsDialog();
53          dialog.setElements(experiencePackage.getExperiences(null));
54          dialog.setVisible(true);
55          if (dialog.getResult() == JOptionPane.CANCEL_OPTION) {
56          	return;
57          }
58          Collection selected = dialog.getSelectedElements();
59          if (selected.size() == 0) {
60          	return;
61          }
62          
63          String filename = experiencePackage.getName() + ".ciz";
64          final JFrame mainFrame = getClient().getMainFrame();
65          final File f = IOUtils.showSaveDialog(filename, mainFrame);
66          if (f == null) {
67              return;
68          }
69          mainFrame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
70          ExperiencePackageExporter exporter = new ExperiencePackageExporter() {
71              public void finished() {
72              	setFinished(true);
73                  mainFrame.setCursor(Cursor.getDefaultCursor());
74                  Object o = get();
75                  if (o instanceof Exception) {
76                      Exception e = (Exception) o;
77                      JOptionPane.showMessageDialog(mainFrame, "Error exporting experience package: " + e.getMessage(), "Export Error", JOptionPane.ERROR_MESSAGE);
78                  } else {
79                  	if (isInterrupted()) {
80                  		JOptionPane.showMessageDialog(mainFrame, "Export of experience package cancelled by user", "Export Interrupted", JOptionPane.INFORMATION_MESSAGE);
81                  	} else {
82                  		JOptionPane.showMessageDialog(mainFrame, "Experience package successfully exported!", "Export Successful", JOptionPane.INFORMATION_MESSAGE);
83                  	}
84                  }
85              }
86          };
87          ProgressDialog progressDialog = new ProgressDialog(mainFrame);
88          progressDialog.setWorker(exporter);
89          exporter.setPackage(experiencePackage);
90          exporter.setSelectedExperiences(selected);
91          exporter.setExportFile(f);
92          exporter.start();
93          progressDialog.setVisible(true);
94      }
95  
96  }