1 17 package org.columba.mail.mailchecking; 18 19 import java.awt.event.ActionEvent ; 20 21 import javax.swing.Timer ; 22 23 import org.columa.core.config.IDefaultItem; 24 import org.columba.core.config.DefaultItem; 25 import org.columba.core.connectionstate.ConnectionStateImpl; 26 import org.columba.core.gui.action.AbstractColumbaAction; 27 import org.columba.core.xml.XmlElement; 28 import org.columba.mail.config.AccountItem; 29 30 38 public abstract class AbstractMailCheckingAction extends AbstractColumbaAction { 39 private final static int ONE_SECOND = 1000; 40 41 44 private AccountItem accountItem; 45 private Timer timer; 46 47 public AbstractMailCheckingAction(AccountItem accountItem) { 48 super(null, null); 49 50 this.accountItem = accountItem; 51 52 createName(); 53 54 restartTimer(); 55 } 56 57 private void createName() { 58 String name = accountItem.getName(); 60 String address = accountItem.getIdentity().getAddress() 61 .getMailAddress(); 62 String menuItemName = name + " (" + address + ")"; 63 64 putValue(AbstractColumbaAction.NAME, menuItemName); 65 } 66 67 public void restartTimer() { 68 createName(); 70 71 IDefaultItem item = null; 72 73 if (accountItem.isPopAccount()) { 74 XmlElement e = accountItem.getRoot().getElement("popserver"); 75 item = new DefaultItem(e); 76 } else { 77 XmlElement e = accountItem.getRoot().getElement("imapserver"); 78 item = new DefaultItem(e); 79 } 80 81 if (item.getBoolean("enable_mailcheck")) { 82 int interval = item.getIntegerWithDefault("mailcheck_interval", 10); 83 84 timer = new Timer (ONE_SECOND * interval * 60, this); 85 timer.restart(); 86 } else { 87 if (timer != null) { 88 timer.stop(); 89 timer = null; 90 } 91 } 92 } 93 94 97 public void actionPerformed(ActionEvent arg0) { 98 Object source = arg0.getSource(); 99 100 if (source.equals(timer)) { 101 103 if (ConnectionStateImpl.getInstance().isOnline()) 105 check(); 106 107 } else { 108 check(); 110 } 111 } 112 113 119 public abstract void check(); 120 121 124 public AccountItem getAccountItem() { 125 return accountItem; 126 } 127 128 131 public abstract boolean isCheckAll(); 132 } | Popular Tags |