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

📄 configdialog.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 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 + -