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

📄 mailboxconfigdialog.java

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


import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import net.sf.component.config.ConfigHelper;
import net.sf.component.config.EclipseFieldEditorFactory;
import net.sf.component.config.IConfigItemEditor;
import net.sf.util.StringUtil;
import net.sf.util.TousleUtil;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;

/**
 * 配置邮箱的对话框
 * @author levin
 * @since 2008-1-6 下午06:58:57
 */
public class MailboxConfigDialog extends Dialog {
	private static String box="一二三四五"; //邮箱名
	private List<MailboxConfigTabItem> configTabs;
	private Map<String,String> configMap;
	
	public MailboxConfigDialog(Shell parentShell) {
		super(parentShell);
		configTabs=new ArrayList<MailboxConfigTabItem>();
		configMap = new HashMap<String,String>();
	}
	
    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText("邮箱配置");
    }

	@Override
	protected Control createDialogArea(Composite parent) {
		Composite composite = new Composite(parent,SWT.NULL);
		composite.setLayout(new FillLayout());
		
		List<String[]> configs=createConfigs();
		
		TabFolder tf = new TabFolder(composite, SWT.TOP);
		for(int i=0;i<box.length();i++)
		{
			String[] ss=null;
			if(i<configs.size())
				ss=configs.get(i);
			TabItem ti = new TabItem(tf, SWT.NULL);
			ti.setText("邮箱"+box.charAt(i));
			MailboxConfigTabItem item=new MailboxConfigTabItem(tf,ss);
			configTabs.add(item);
			ti.setControl(item);
		}
		tf.setSelection(0);
		return composite;
	}

	@Override
	protected void okPressed() {
		collectConfig();
		super.okPressed();
	}

	private void collectConfig() {
		StringBuffer address=new StringBuffer();
		StringBuffer pop3=new StringBuffer();
		StringBuffer smtp=new StringBuffer();
		for(MailboxConfigTabItem item:configTabs){
			String[] config = item.getConfig();
			if(StringUtil.isNotNull(config)){
				address.append(",").append(config[0]);
				pop3.append(",").append(config[1]);
				smtp.append(",").append(config[2]);
			}
		}
		address.deleteCharAt(0);
		pop3.deleteCharAt(0);
		smtp.deleteCharAt(0);
		
		configMap.put("mail.address",address.toString());
		configMap.put("mail.pop3",pop3.toString());
		configMap.put("mail.smtp",smtp.toString());
	}

	private List<String[]> createConfigs() {
		List<String[]> configs=new ArrayList<String[]>();
		//载入原始的配置
		Properties propList=new Properties();
		//从控件上取初值
		List configItems = ConfigHelper.getConfigItems();
		for(Object o:configItems){
			 String code=(String) TousleUtil.getPrivateProperty(o,"code");
			 if(code.equals("mail.address") || code.equals("mail.pop3") || code.equals("mail.smtp")){
				 IConfigItemEditor editor=(IConfigItemEditor) TousleUtil.getPrivateProperty(o,"editor");
				 propList.setProperty(code, editor.getTextControl().getText());
			 }
		}
		String[] addressConfig=StringUtil.toArray(propList.getProperty("mail.address"));
		String[] pop3Config=StringUtil.toArray(propList.getProperty("mail.pop3"));
		String[] smtpConfig=StringUtil.toArray(propList.getProperty("mail.smtp"));
		if(addressConfig.length != pop3Config.length || addressConfig.length != smtpConfig.length)
			return configs;
		for(int i=0;i<addressConfig.length;i++){
			String[] ss=new String[3];
			ss[0]=addressConfig[i];
			ss[1]=pop3Config[i];
			ss[2]=smtpConfig[i];
			configs.add(ss);
		}
		return configs;
	}
	
	public Map<String,String> getMailConfig(){
		return configMap;
	}
}

⌨️ 快捷键说明

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