1 package org.columba.mail.gui.config.account; 2 3 import java.awt.event.ActionEvent ; 4 import java.awt.event.ItemEvent ; 5 import java.awt.event.ItemListener ; 6 import java.io.File ; 7 import java.util.Observable ; 8 import java.util.Observer ; 9 10 import org.columba.api.gui.frame.IFrameMediator; 11 import org.columba.core.desktop.ColumbaDesktop; 12 import org.columba.core.gui.action.AbstractColumbaAction; 13 import org.columba.mail.config.AccountItem; 14 import org.columba.mail.config.Identity; 15 import org.columba.mail.gui.composer.ComposerController; 16 import org.columba.mail.util.MailResourceLoader; 17 18 19 public class EditSignatureAction extends AbstractColumbaAction implements Observer , ItemListener { 20 21 private Identity identity; 22 private ComposerController composerController; 23 24 public EditSignatureAction(IFrameMediator frameMediator) { 25 super(frameMediator, MailResourceLoader.getString( 26 "dialog", "account", "editsignature")); 27 28 composerController = (ComposerController) getFrameMediator(); 29 30 31 composerController.getAccountController().getView().addItemListener(this); 32 33 identity = composerController.getModel().getAccountItem().getIdentity(); 34 35 setEnabled(identity.getSignature() != null && ColumbaDesktop.getInstance().supportsOpen()); 36 identity.addObserver(this); 37 } 38 39 public EditSignatureAction(IFrameMediator frameMediator, AccountItem item) { 40 super(frameMediator, MailResourceLoader.getString( 41 "dialog", "account", "editsignature")); 42 43 identity = item.getIdentity(); 44 } 45 46 public void actionPerformed(ActionEvent e) { 47 File signature = identity.getSignature(); 48 if( signature == null) { 49 signature = new File (System.getProperty("user.home"),".signature"); 51 } 52 53 ColumbaDesktop.getInstance().openAndWait(signature); 54 55 identity.setSignature(signature); 57 } 58 59 public void update(Observable o, Object arg) { 60 setEnabled(arg != null && ColumbaDesktop.getInstance().supportsOpen() ); 61 } 62 63 public void itemStateChanged(ItemEvent e) { 64 identity.removeObserver(this); 65 66 if (e.getStateChange() == ItemEvent.SELECTED) { 67 AccountItem item = (AccountItem) composerController.getAccountController().getView().getSelectedItem(); 68 identity = item.getIdentity(); 69 70 setEnabled(identity.getSignature() != null && ColumbaDesktop.getInstance().supportsOpen()); 71 identity.addObserver(this); 72 } 73 74 } 75 76 } 77 | Popular Tags |