1 package org.columba.mail.gui.composer.util; 19 20 import java.awt.Font ; 21 import java.io.File ; 22 import java.io.FileReader ; 23 import java.io.FileWriter ; 24 import java.io.IOException ; 25 26 import javax.swing.JOptionPane ; 27 28 import org.columba.core.desktop.ColumbaDesktop; 29 import org.columba.core.gui.frame.FrameManager; 30 import org.columba.core.gui.util.FontProperties; 31 import org.columba.core.util.TempFileStore; 32 import org.columba.mail.gui.composer.AbstractEditorController; 33 import org.columba.mail.util.MailResourceLoader; 34 35 public class ExternalEditor { 36 String Cmd; 37 38 public ExternalEditor() { 39 } 40 41 public ExternalEditor(String EditorCommand) { 43 } 44 45 private File writeToFile(final AbstractEditorController editController) { 46 47 File tmpFile = TempFileStore.createTempFileWithSuffix("txt"); 48 FileWriter FO; 49 50 try { 51 FO = new FileWriter (tmpFile); 52 } catch (java.io.IOException ex) { 53 JOptionPane.showMessageDialog(FrameManager.getInstance() 54 .getActiveFrame(), 55 "Error: Cannot write to temp file needed " 56 + "for external editor."); 57 return null; 58 } 59 60 try { 61 62 String M = editController.getViewText(); 63 if (M != null) 64 FO.write(M); 65 66 FO.close(); 67 } catch (java.io.IOException ex) { 68 JOptionPane.showMessageDialog(FrameManager.getInstance() 69 .getActiveFrame(), 70 "Error: Cannot write to temp file needed " 71 + "for external editor:\n" + ex.getMessage()); 72 return null; 73 } 74 75 return tmpFile; 76 77 } 78 79 private String readFromFile(File tmpFile) { 80 FileReader FI; 81 try { 82 FI = new FileReader (tmpFile); 83 } catch (java.io.FileNotFoundException ex) { 84 JOptionPane.showMessageDialog(FrameManager.getInstance() 85 .getActiveFrame(), 86 "Error: Cannot read from temp file used " 87 + "by external editor."); 88 return ""; 89 } 90 91 char[] buf = new char[1000]; 92 int i; 93 String message = ""; 94 95 try { 96 while ((i = FI.read(buf)) >= 0) 97 message += new String (buf, 0, i); 98 99 FI.close(); 100 } catch (java.io.IOException ex) { 101 JOptionPane.showMessageDialog(null, 102 "Error: Cannot read from temp file used " 103 + "by external editor."); 104 return ""; 105 } 106 107 return message; 108 } 110 public boolean startExternalEditor( 111 final AbstractEditorController editController) throws IOException { 112 117 118 File tmpFile = writeToFile(editController); 120 121 final Font OldFont = editController.getViewFont(); 123 124 Font font = FontProperties.getTextFont(); 126 font = font.deriveFont(30); 127 editController.setViewFont(font); 128 editController.setViewText(MailResourceLoader.getString("menu", 129 "composer", "extern_editor_using_msg")); 130 131 ColumbaDesktop.getInstance().openAndWait(tmpFile); 133 134 final String message = readFromFile(tmpFile); 137 138 editController.setViewFont(OldFont); 140 editController.setViewText(message); 142 143 return true; 144 } 145 146 } 148 149 | Popular Tags |