⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailplugin.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
字号:
package net.sf.pim.mail;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import jp.gr.java_conf.roadster.net.pop.MessageIndex;
import net.sf.component.config.ConfigHelper;
import net.sf.pim.mail.reader.FolderViewer;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IWorkbenchPreferenceConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

/**
 * The activator class controls the plug-in life cycle
 */
public class MailPlugin extends AbstractUIPlugin {

	// The plug-in ID
	public static final String PLUGIN_ID = "net.sf.mywork.mail";

	// The shared instance
	private static MailPlugin plugin;

	//邮件索引
	public static final String MAIL_INDEX_FILE = "mail.idx";
	
	//已读索引
	public static final String MAIL_READ_FILE="read.idx";

	//邮箱
	private StoreFacade store;
	
	//邮箱名
	public static final String INBOX="INBOX";
	public static final String OUTBOX="OUTBOX";
	public static final String TRASHBOX="TRASHBOX";
	public static final String ARCHIEBOX="ARCHIEBOX";
	public static final String SEARCHBOX="SEARCHBOX"; //虚拟邮箱
	
	public static final String INBOX_NAME="收件箱";
	public static final String OUTBOX_NAME="发件箱";
	public static final String TRASHBOX_NAME="垃圾箱";
	public static final String ARCHIEBOX_NAME="档案箱";
	public static final String SEARCHBOX_NAME="搜索箱"; //虚拟邮箱
	
	private static Map<String,String> folderName;
	static{
		folderName=new HashMap<String,String>(10);
		folderName.put(MailPlugin.INBOX,MailPlugin.INBOX_NAME);
		folderName.put(MailPlugin.OUTBOX,MailPlugin.OUTBOX_NAME);
		folderName.put(MailPlugin.TRASHBOX,MailPlugin.TRASHBOX_NAME);
		folderName.put(MailPlugin.ARCHIEBOX,MailPlugin.ARCHIEBOX_NAME);
		folderName.put(MailPlugin.SEARCHBOX,MailPlugin.SEARCHBOX_NAME);
		
		folderName.put(MailPlugin.INBOX_NAME,MailPlugin.INBOX);
		folderName.put(MailPlugin.OUTBOX_NAME,MailPlugin.OUTBOX);
		folderName.put(MailPlugin.TRASHBOX_NAME,MailPlugin.TRASHBOX);
		folderName.put(MailPlugin.ARCHIEBOX_NAME,MailPlugin.ARCHIEBOX);
		folderName.put(MailPlugin.SEARCHBOX_NAME,MailPlugin.SEARCHBOX);
	}

	/**
	 * The constructor
	 */
	public MailPlugin() {
		plugin = this;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
	 */
	public void start(BundleContext context) throws Exception {
		super.start(context);
	}

	//初始化
	public void loadStoreAndCache() {
		try {
			store=new StoreFacade(ConfigHelper.getStringArrayProperty("mail.address"),ConfigHelper.getStringArrayProperty("mail.pop3"),ConfigHelper.getStringArrayProperty("mail.smtp"));
			// 载入缓存
			{
				HashMap headersMap = new HashMap();
				FileInputStream fis = new FileInputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_INDEX_FILE);
				ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis, 1024));
				headersMap = (HashMap) ois.readObject();
				ois.close();
				MessageIndex.setHEADERS_MAP(headersMap);
			}
			{
				HashSet readSet=new HashSet();
				FileInputStream fis = new FileInputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_READ_FILE);
				ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis, 1024));
				readSet = (HashSet) ois.readObject();
				ois.close();
				FolderViewer.setReadSet(readSet);
			}
		} catch (FileNotFoundException fex) {
			;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext context) throws Exception {
		plugin = null;
		store.close();
		HashMap headersMap = MessageIndex.getHEADERS_MAP();
		if (!headersMap.isEmpty()) {
			FileOutputStream fos = new FileOutputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_INDEX_FILE);
			ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos, 1024));
			oos.writeObject(headersMap);
			oos.close();
		}
		Set readSet=FolderViewer.getReadSet();
		if(!readSet.isEmpty()){
			FileOutputStream fos = new FileOutputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_READ_FILE);
			ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos, 1024));
			oos.writeObject(readSet);
			oos.close();
		}
		super.stop(context);
	}

	/**
	 * Returns the shared instance
	 * 
	 * @return the shared instance
	 */
	public static MailPlugin getDefault() {
		return plugin;
	}

	/**
	 * Returns an image descriptor for the image file at the given plug-in
	 * relative path
	 * 
	 * @param path
	 *            the path
	 * @return the image descriptor
	 */
	public static ImageDescriptor getImageDescriptor(String path) {
		return imageDescriptorFromPlugin(PLUGIN_ID, path);
	}

	public StoreFacade getStore() {
		return store;
	}
	
	public static String convertFolderName(String name){
		return folderName.get(name);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -