mailcheckconfigeditor.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 91 行

JAVA
91
字号
package net.sf.pim.scheduler;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

import net.sf.component.config.DialogStringMapEditor;
import net.sf.component.config.IConfigItemEditor;
import net.sf.util.StringUtil;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.PreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
 * 处理邮件提醒的参数设置 [server,port,username,password,app]
 * 稍作处理,即可成为另一个通用的StringListEditor
 * TODO:解决TreeMap的排序问题,目前key是34512能满足按顺序显示
 * @author levin
 * @since 2008-1-12 下午12:56:09
 */
public class MailCheckConfigEditor implements IConfigItemEditor{
	private DialogStringMapEditor editor;
	private String configKey;
	private static String[] keys={"k3","k4","k5","k1","k2"};
	private static String[] promps={"服务器地址,String","端口号,Integer","用户名,String","密码,String","邮件客户端,File"};
	public MailCheckConfigEditor() {
		super();
	}

	@Override
	public Text getTextControl() {
		return null;
	}
	
	@Override
	public Map<String, String> getValues() {
		HashMap<String,String> map=new HashMap<String,String>();
		map.put(configKey, editor.getStringValue());
		return map;
	}

	@SuppressWarnings("serial")
	@Override
	public void init(Composite parent, String configKey, String configPromp, final String defaultValue,
			Map<String, String> params) {
		this.configKey=configKey;
		PreferenceStore ps=new PreferenceStore();
		ps.putValue(configKey, defaultValue);
		//组定义,按顺序输出keySet
		Map<String,String> mapConfig=new TreeMap<String,String>();
		for(int i=0;i<keys.length;i++){
			mapConfig.put(keys[i], promps[i]);
		}
		//创建控件
		Label dummy=new Label(parent,SWT.NULL);
		dummy.setText(configPromp);
		Composite composite = new Composite(parent,SWT.NULL);
		GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);
		editor=new DialogStringMapEditor(configKey,configPromp,mapConfig,composite){
			@Override
			protected String map2String(Map<String, String> map) {
				StringBuffer sb=new StringBuffer();
				for(String key:keys){
					sb.append(",").append(map.get(key));
				}
				sb.deleteCharAt(0);
				return sb.toString();
			}

			@Override
			protected Map<String, String> string2Map(String str) {
				String[] values=StringUtil.toArray(str);
				//组定义及组值
				HashMap<String,String> map=new HashMap<String,String>();
				for(int i=0;i<keys.length;i++){
					map.put(keys[i], values[i]);
				}
				return map;
			}
			
		};
		editor.getLabelControl(composite).dispose();
		editor.setChangeButtonText("定制...");
		editor.setPreferenceStore(ps);
		editor.load();
	}
}

⌨️ 快捷键说明

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