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