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

📄 dialogstringmapeditor.java

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

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import net.sf.util.StringUtil;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.preference.StringButtonFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
 * 对map的编辑器
 * @author levin
 * @since 2008-1-6 下午10:20:09
 */
public class DialogStringMapEditor extends StringButtonFieldEditor {
	private static final String MAP_TITLE = "MAP_TITLE";
	class MapEditorDialog extends Dialog {
		private Composite main;
		private List<IConfigItemEditor> list;
		private Map<String, String> config;
		private Map<String, String> params;
		public MapEditorDialog(Shell parent,Map<String,String> config,Map<String,String> params) {
			super(parent);
	        list=new ArrayList<IConfigItemEditor>();
	        this.config=config;
	        this.params=params;
		}
	    protected void configureShell(Shell shell) {
	        super.configureShell(shell);
	        shell.setText(params.get(MAP_TITLE));
	    }
		@Override
		protected Control createDialogArea(Composite parent) {
			main = new Composite(parent, SWT.NONE);
			createEditor();
			return main;
		}

		@Override
		protected void okPressed() {
			//回写一下值
			for(IConfigItemEditor editor:list){
				config.putAll(editor.getValues());
			}
			super.okPressed();
		}

		private void createEditor() {
			for(String key:config.keySet()){
				String[] otherParam=StringUtil.toArray(params.get(key));
				String promp=key;
				String type="String";
				if(otherParam.length == 2){
					promp=otherParam[0];
					type=otherParam[1];
				}
				createEditor(key,promp,type);
			}
		}

		private void createEditor(String key, String promp,String type) {
			EclipseFieldEditorFactory editor = new EclipseFieldEditorFactory();
			editor.init(main, key, promp, config.get(key), StringUtil.toMap("type="+type));
			list.add(editor);
		}
		//获取配置信息
		public Map<String,String> getConfig(){
			return config;
		}
	}

	private Map<String, String> params;
	public DialogStringMapEditor(String configKey, String configPromp, Map<String, String> params, Composite composite) {
		super(configKey, configPromp, composite);
		setChangeButtonText("定制...");
		this.params=params;
		params.put(MAP_TITLE, configPromp);
	}

	@Override
	protected String changePressed() {
		Map<String, String> config = string2Map(getTextControl().getText());
		MapEditorDialog dialog=new MapEditorDialog(getShell(),config,params);
		dialog.open();
		return map2String(dialog.getConfig());
	}

	//提出两个方法以利于扩展
	protected String map2String(Map<String,String> map) {
		return StringUtil.fromMap(map, ";");
	}

	protected Map<String, String> string2Map(String str) {
		Map<String,String> config=StringUtil.toMap(str);
		return config;
	}
	
	
}

⌨️ 快捷键说明

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