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

📄 searchview.java

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

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.ViewPart;

import com.zdh.sms.db.DbOperate;
import com.zdh.sms.editor.ScoreEditor;
import com.zdh.sms.editor.ScoreEditorInput;
import com.zdh.sms.model.Course;
import com.zdh.sms.model.Exam;
import com.zdh.sms.model.SchoolClass;
import com.zdh.sms.system.Context;
import com.zdh.sms.system.SmsFactory;
import com.zdh.sms.system.SmsUtil;


public class SearchView extends ViewPart implements ModifyListener,
		ILogoffListener {
	private Combo schoolClassCombo, courseCombo, examCombo;// 班级,课程,考试下拉框

	private Composite parent;

	private Group group;

	public void createPartControl(Composite parent) {
		this.parent = parent;
		if (Context.getInstance().isLogon())
			createGroup();// 如果登录则创建搜索Group
		Context.getInstance().addLogonListener(this);
	}

	private void createGroup() {
		// 创建一个Group组
		group = new Group(parent, SWT.NONE);
		group.setLayoutData(new GridData(GridData.FILL_BOTH));
		group.setLayout(new FillLayout(SWT.VERTICAL));
		group.setText("根据考试查询成绩");
		// 创建Group组里的组件
		new Label(group, SWT.NONE).setText("班级:");
		schoolClassCombo = SmsUtil.createSchoolClassCombo(group, SWT.READ_ONLY);
		schoolClassCombo.setText(schoolClassCombo.getItem(0));
		schoolClassCombo.addModifyListener(this);

		new Label(group, SWT.NONE).setText("课程:");
		courseCombo = SmsUtil.createCourseCombo(group, SWT.READ_ONLY);
		courseCombo.select(0);
		courseCombo.addModifyListener(this);

		new Label(group, SWT.NONE).setText("考试:");
		examCombo = new Combo(group, SWT.READ_ONLY);
		modifyText(null);// 调用修改事件,填充值到考试下拉框

		Button searchButton = new Button(group, SWT.READ_ONLY);
		searchButton.setText("搜索");
		searchButton.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent e) {
				String key = examCombo.getText();
				Exam exam = (Exam) examCombo.getData(key);
				if (exam == null)
					return;
				try {
					ScoreEditorInput ei = new ScoreEditorInput();
					// 设置编辑器标题:日期+考试名
					ei.setName(exam.getDate() + exam.getName());
					String editorId = ScoreEditor.class.getName();
					IWorkbenchPage workbenchPage = getViewSite().getPage();
					ScoreEditor editor = (ScoreEditor) workbenchPage
							.openEditor(ei, editorId);
					editor.setExam(exam);// 将考试对象传到编辑器中
				} catch (PartInitException e2) {
					e2.printStackTrace();
				}
			}
		});
	}

	public void setFocus() {
	}

	// 监听班级、课程下拉框是否改变了选择值, 如是,则查询出相应的考试记录
	private String old1 = "", old2 = "";

	public void modifyText(ModifyEvent e) {
		String new1 = schoolClassCombo.getText();
		String new2 = courseCombo.getText();
		// 如所选值未变,就没有必要往下执行了
		if (old1.equals(new1) && old2.equals(new2))
			return;
		old1 = new1;
		old2 = new2;
		examCombo.removeAll();// 清空
		SchoolClass o1 = (SchoolClass) schoolClassCombo.getData(new1);
		Course o2 = (Course) courseCombo.getData(new2);
		DbOperate db = SmsFactory.getDbOperate();
		for (Exam exam : db.getExam(o2, o1)) {
			String s = SmsUtil.dateToShortStr(exam.getDate()) + exam.getName();
			examCombo.add(s);
			examCombo.setData(s, exam);
		}
		examCombo.select(0);
	}

	@Override
	public void dispose() {
		Context.getInstance().removeLogonListener(this);
		super.dispose();
	}

	// 用户登录时,创建搜索Group
	public void logon() {
		createGroup();
		parent.layout();// 刷新搜索Group才能显示出来
	}

	// 用户退出时,将搜索Group销毁掉
	public void logoff() {
		group.dispose();
		group = null;
	}

}

⌨️ 快捷键说明

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