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