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

📄 dbpreferencepage.java

📁 学生成绩管理系统 eclipse rcp开发 swt技术
💻 JAVA
字号:
package com.zdh.sms.preferences;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import com.zdh.sms.Activator;
import com.zdh.sms.db.ConnectManager;


public class DBPreferencePage extends PreferencePage implements
		IWorkbenchPreferencePage, ModifyListener {
	// 为文本框定义五个键值
	public static final String CLASSNAME_KEY = "$CLASSNAME_KEY";

	public static final String URL_KEY = "$URL_KEY";

	public static final String USERNAME_KEY = "$USERNAME_KEY";

	public static final String PASSWORD_KEY = "$PASSWORD_KEY";

	public static final String ARCHIVE_EDITOR_RS_NUM_KEY = "ARCHIVE_EDITOR_RS_NUM_KEY";

	// 为文本框值定义五个默认值
	private static final String CLASSNAME_DEFAULT = "com.mysql.jdbc.Driver";

	private static final String URL_DEFAULT = "jdbc:mysql://localhost/com.zdh.sms";

	private static final String USERNAME_DEFAULT = "root";

	private static final String PASSWORD_DEFAULT = "root";

	private static final String ARCHIVE_EDITOR_RS_NUM_DEFAULT = "10";

	// 定义五个文本框
	private Text classNameText, urlText, usernameText, passwordText,
			archiveText;

	// 定义一个IPreferenceStore对象
	private IPreferenceStore ps;

	// 定义并创建一个验证监听器。功能:只能输入数字
	private VerifyListener verifyListener = new VerifyListener() {
		public void verifyText(VerifyEvent e) {
			e.doit = ("0123456789".indexOf(e.text) >= 0);
		}
	};

	// 接口IWorkbenchPreferencePage的方法,负责初始化。在此方法中设置一个
	// PreferenceStore对象,由此对象提供文本框值的读入/写出方法
	public void init(IWorkbench workbench) {
		setPreferenceStore(Activator.getDefault().getPreferenceStore());
	}

	// 父类的界面创建方法
	protected Control createContents(Composite parent) {
		ps = getPreferenceStore();// 取得init方法设入的PreferenceStore对象
		Composite topComp = new Composite(parent, SWT.NONE);
		topComp.setLayout(new GridLayout());
		createDbConnectGroup(topComp);
		createTableRsCountGroup(topComp);
		return topComp;
	}

	// 创建数据库连接组
	private void createDbConnectGroup(Composite topComp) {
		Group group = new Group(topComp, SWT.NONE);
		group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		group.setLayout(new GridLayout(2, false));
		group.setText("数据库连接");
		classNameText = createText(group, "ClassName:", CLASSNAME_KEY,
				CLASSNAME_DEFAULT);
		urlText = createText(group, "URL:", URL_KEY, URL_DEFAULT);
		usernameText = createText(group, "用户名:", USERNAME_KEY, USERNAME_DEFAULT);
		passwordText = createText(group, "密码:", PASSWORD_KEY, PASSWORD_DEFAULT);
		passwordText.setEchoChar('*');
	}

	// 表格记录显示条数组
	private void createTableRsCountGroup(Composite topComp) {
		Group group = new Group(topComp, SWT.NONE);
		group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		group.setLayout(new GridLayout(2, false));
		group.setText("表格记录显示条数");
		archiveText = createText(group, "档案管理表格每页显示记录数:",
				ARCHIVE_EDITOR_RS_NUM_KEY, ARCHIVE_EDITOR_RS_NUM_DEFAULT);
		archiveText.addVerifyListener(verifyListener);// 添加校验事件监听,使其只能输入数字
	}

	// 创建界面里的文本框,顺便把文本框前的标签也创建了
	private Text createText(Composite comp, String label, String saveKey,
			String defaultValue) {
		new Label(comp, SWT.NONE).setText(label);
		Text text = new Text(comp, SWT.BORDER);
		text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
		// 用key取出以前保存的值,如果取出值为空或空字串,则返回默认值(defaultValue)
		String value = ps.getString(saveKey);
		text.setText(isEmpty(value) ? defaultValue : value);
		// this代表本类,因为本类实现了ModifyListener接口成为一个监听器
		text.addModifyListener(this);
		return text;
	}

	// 判断传入的字符串是否为空值或空字串或空格
	private boolean isEmpty(String str) {
		return str == null || str.trim().equals("");
	}

	// 本类实现ModifyListener接口的方法,当三个文本框中发生修改时将执行此方法。
	// 方法中对输入值进行了验证并将“确定”、“应用”两按钮使能
	public void modifyText(ModifyEvent e) {
		String errorStr = null;// 将原错误信息清空
		if (isEmpty(classNameText.getText())) {
			errorStr = "ClassName不能为空!";
		} else if (isEmpty(urlText.getText())) {
			errorStr = "URL不能为空!";
		} else if (isEmpty(usernameText.getText())) {
			errorStr = "用户名不能为空!";
		} else if (isEmpty(passwordText.getText())) {
			errorStr = "密码不能为空!";
		} else if (isEmpty(archiveText.getText())) {
			errorStr = "档案管理表格每页显示记录数不能为空!";
		}
		setErrorMessage(errorStr);// errorStr=null时复原为正常的提示文字
		setValid(errorStr == null);// “确定”按钮
		getApplyButton().setEnabled(errorStr == null);// “应用”按钮
	}

	// 父类方法,单击“复原缺省值”按钮时将执行此方法,取出默认值设置到文本框中
	protected void performDefaults() {
		classNameText.setText(CLASSNAME_DEFAULT);
		urlText.setText(URL_DEFAULT);
		usernameText.setText(USERNAME_DEFAULT);
		passwordText.setText(PASSWORD_DEFAULT);
		archiveText.removeVerifyListener(verifyListener);
		archiveText.setText(ARCHIVE_EDITOR_RS_NUM_DEFAULT);
		archiveText.addVerifyListener(verifyListener);
	}

	// 父类方法,单击“应用”按钮时执行此方法,将文本框值保存并弹出成功的提示信息
	protected void performApply() {
		doSave(); // 自定义方法,保存设置
	}

	// 父类方法,单击“确定”按钮时执行此方法,将文本框值保存并弹出成功的提示信息。
	// @return true=成功退出
	public boolean performOk() {
		doSave();
		ConnectManager.closeConnection();
		return true;
	}

	// 自定义方法,保存文本框的值
	private void doSave() {
		ps.setValue(CLASSNAME_KEY, classNameText.getText());
		ps.setValue(URL_KEY, urlText.getText());
		ps.setValue(USERNAME_KEY, usernameText.getText());
		ps.setValue(PASSWORD_KEY, passwordText.getText());
		ps.setValue(ARCHIVE_EDITOR_RS_NUM_KEY, archiveText.getText());
	}
}

⌨️ 快捷键说明

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