1 package sourceforge.org.qmc2.options.editor.ui.actions;
2 
3 import java.io.File;
4 import java.io.IOException;
5 
6 import org.eclipse.jface.dialogs.MessageDialog;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.widgets.FileDialog;
9 
10 import sourceforge.org.qmc2.options.editor.ui.QMC2Editor;
11 
12 public class SaveAction extends BaseAction {
13 
SaveAction(QMC2Editor editor)14 	public SaveAction(QMC2Editor editor) {
15 		super(editor);
16 		setAccelerator(SWT.MOD1 + 'S');
17 		setText("&Save...");
18 	}
19 
20 	@Override
isEnabled()21 	public boolean isEnabled() {
22 		boolean enabled = super.isEnabled();
23 		String currentFile = editor.getCurrentFile();
24 		if (currentFile == null || currentFile.trim().length() == 0
25 				|| editor.getTemplateFile() == null) {
26 			enabled = false;
27 		}
28 		return enabled;
29 	}
30 
31 	@Override
run()32 	public void run() {
33 		FileDialog dialog = new FileDialog(editor.getShell(), SWT.SAVE);
34 		dialog.setFileName(editor.getCurrentFile());
35 		String filename = dialog.open();
36 		if (filename != null) {
37 			File f = new File(filename);
38 			if (!f.exists()) {
39 				try {
40 					if (!f.createNewFile()) {
41 						MessageDialog
42 								.openError(editor.getShell(), "Error",
43 										"Cannot save to selected file. Check your permissions");
44 					}
45 				} catch (IOException e1) {
46 					MessageDialog.openError(editor.getShell(), "Error",
47 							"An exception ocurred creating file for saving: "
48 									+ e1.getMessage());
49 				}
50 			}
51 
52 			if (f.canWrite() && f.isFile()) {
53 
54 				try {
55 					editor.getTemplateFile().save(f);
56 				} catch (Exception e1) {
57 					MessageDialog.openError(
58 							editor.getShell(),
59 							"Error",
60 							"An exception ocurred saving template file: "
61 									+ e1.getMessage());
62 				}
63 			} else {
64 				MessageDialog.openError(editor.getShell(), "Error",
65 						"Cannot save to selected file. Check your permissions");
66 			}
67 
68 		}
69 		super.run();
70 	}
71 }
72