📄 configdialog.java
字号:
package net.sf.pim.view;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import net.sf.pim.URLUtil;
import net.sf.util.CipherUtil;
import net.sf.util.ConfigHelper;
import net.sf.util.StringUtil;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
* @author levin
*/
public class ConfigDialog extends Dialog {
//保留修改参数及控件的map
private Map<String,Text> map;
//属性文件
private Properties prop;
//待加密的属性
private Text focusText;
public ConfigDialog(Shell shell) {
super(shell);
map=new HashMap<String,Text>();
prop=new Properties();
prop.putAll(ConfigHelper.getPropList());
}
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("工作记录--参数配置");
Image image = ImageDescriptor.createFromURL(URLUtil.getResourceURL("icons/config.gif")).createImage(shell.getDisplay());
shell.setImage(image);
image.dispose();
}
protected Control createDialogArea(Composite parent) {
Composite composite=new Composite(parent,SWT.NULL);
GridLayout gl=new GridLayout();
gl.numColumns=2;
composite.setLayout(gl);
GridData gd=new GridData();
gd.grabExcessHorizontalSpace=true;
gd.minimumWidth=320;
for (String element:ConfigHelper.getConfigKeys()) {
String promp=(String) ConfigHelper.getPropMcList().get(element);
String value=prop.getProperty(element);
Label label=new Label(composite,SWT.NULL);
label.setText(promp);
if(element.equals("work.search1")){
CCombo combo = new CCombo(composite,SWT.FLAT|SWT.READ_ONLY);
combo.add("近一周");
combo.add("近一月");
combo.add("近七天");
combo.setText(value);
try {
//用统一的Text控件来取属性
Field field=CCombo.class.getDeclaredField("text");
field.setAccessible(true);
map.put(element,(Text) field.get(combo));
} catch (Exception e) {
e.printStackTrace();
}
}
else{
final Text text=new Text(composite,SWT.NULL);
text.setLayoutData(gd);
text.setText(value==null?"":value);
map.put(element,text);
text.addFocusListener(new FocusAdapter(){
@Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
focusText=text;
}
});
}
}
return composite;
}
@Override
protected void okPressed() {
focusText=null;
prop=ConfigHelper.getPropList();
//保存属性
for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
String key = (String) iter.next();
String value=map.get(key).getText();
prop.setProperty(key,value);
}
ConfigHelper.store();
super.okPressed();
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
Button cipherButton=createButton(parent, IDialogConstants.CLIENT_ID+1, "加密",true);
cipherButton.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent e) {
if(focusText == null || StringUtil.isNull(focusText.getText()) || focusText.getText().indexOf(CipherUtil.PREFIX) != -1)return ;
focusText.setText(CipherUtil.PREFIX+CipherUtil.Encrypt(focusText.getText())+CipherUtil.SUFIX);
}});
((GridLayout) parent.getLayout()).numColumns++;
((GridLayout) parent.getLayout()).numColumns++;
GridData data = new GridData(GridData.BEGINNING);
int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
Point minSize = cipherButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
data.widthHint = Math.max(widthHint, minSize.x);
data.horizontalSpan=3;
cipherButton.setLayoutData(data);
super.createButtonsForButtonBar(parent);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -