📄 mailboxconfigdialog.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 + -