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

📄 configdialog.java

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

import java.io.FileInputStream;
import java.io.IOException;

import net.sf.component.config.ConfigItems.ConfigItem;
import net.sf.util.CipherUtil;
import net.sf.util.StringUtil;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.preference.PreferenceStore;
import org.eclipse.swt.SWT;
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.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.Shell;
import org.eclipse.swt.widgets.Text;
/**
 * @author levin
 */
public class ConfigDialog extends Dialog {
	private PreferenceStore ps; //与fieldeditor的中介
	private Text focusText;//待加密的属性
    public ConfigDialog(Shell shell) {
        super(shell);
        ps=new PreferenceStore();
        try {
        	//直接从文件中加载,不处理加密属性
			ps.load((new FileInputStream("work.properties")));
		} catch (IOException e) {
			e.printStackTrace();
		}
    }

    protected void configureShell(Shell shell) {
        super.configureShell(shell);
        shell.setText("参数配置");
    }

    protected Control createDialogArea(Composite parent) {
        Composite composite=new Composite(parent,SWT.NULL);
        GridLayout gl=new GridLayout();
        gl.numColumns=2;
        composite.setLayout(gl);
       
		for (ConfigItem ci:ConfigHelper.getConfigItems()) {
			//无编辑器使用缺省字符串编辑器
			if(ci.editor == null){
				ci.editor=new EclipseFieldEditorFactory();
				ci.editorParam=StringUtil.toMap("type=String");
			}
			ci.editor.init(composite, ci.code, ci.name, ps.getString(ci.code), ci.editorParam);
			
			final Text text=ci.editor.getTextControl();
			if(text != null){
				text.addFocusListener(new FocusAdapter(){
					@Override
					public void focusGained(FocusEvent e) {
						super.focusGained(e);
						focusText=text;
					}
				});
			}
		}
        return composite;
    }

	@Override
	protected void okPressed() {
		focusText=null;
		for (ConfigItem ci:ConfigHelper.getConfigItems())
			ConfigHelper.getPropList().putAll(ci.editor.getValues());
		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 + -