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

📄 archiveeditoractiongroup.java

📁 一个专家资料的管理系统
💻 JAVA
字号:
package cn.com.likai.mms.archive;

import java.util.List;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;

import cn.com.likai.mms.Activator;
import cn.com.likai.mms.db.DbOperate;
import cn.com.likai.mms.db.Member;
import cn.com.likai.mms.db.MemberDataDialog;
import cn.com.likai.mms.db.QueryInfo;
import cn.com.likai.mms.navigator.LogConsoleFactory;
import cn.com.likai.mms.preferences.DBPreferencePage;
import cn.com.likai.mms.system.ImagesContext;
import cn.com.likai.mms.system.MmsFactory;


public class ArchiveEditorActionGroup extends ActionGroup{
	private TableViewer tv;
	private DbOperate db = MmsFactory.getDbOperate();
	private QueryInfo queryInfo = new QueryInfo();
	private Action addAction = new AddAction();
	private Action modifyAction = new ModifyAction();
	private Action removeAction = new RemoveAction();
	private Action firstAction = new FirstAction();
	private Action prevAction = new PrevAction();
	private Action nextAction = new NextAction();
	private Action lastAction = new LastAction();
	
	public ArchiveEditorActionGroup(TableViewer tv){
		this.tv = tv;
		queryInfo.currentPage = 1;
		IPreferenceStore ps = Activator.getDefault().getPreferenceStore();
		String str = ps.getString(DBPreferencePage.ARCHIVE_EDITOR_RS_NUM_KEY);
		queryInfo.pageSize = Integer.parseInt(str);//每页显示记录数
	}
	
	public void fillActionToolBars(ToolBarManager toolBarManager){
		toolBarManager.add(createActionContrItem(addAction));
		toolBarManager.add(createActionContrItem(modifyAction));
		toolBarManager.add(createActionContrItem(removeAction));
		toolBarManager.add(createActionContrItem(firstAction));
		toolBarManager.add(createActionContrItem(prevAction));
		toolBarManager.add(createActionContrItem(nextAction));
		toolBarManager.add(createActionContrItem(lastAction));
		//更新工具栏
		toolBarManager.update(true);
	}
	
	// 为了同时显示图像文字,用ActionContributionItem包装一下Action
	private ActionContributionItem createActionContrItem(IAction action){
		ActionContributionItem aci = new ActionContributionItem(action);
		aci.setMode(ActionContributionItem.MODE_FORCE_TEXT);//显示文字+图象
		return aci;
	}
	
	private class AddAction extends Action{
		public AddAction(){
			setText("新增");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.REPORT));
		}
		public void run(){
			MemberDataDialog dialog = new MemberDataDialog(null);
			if(dialog.open() == IDialogConstants.OK_ID){
				Member member = dialog.getInput();
				if(db.insertMember(member)){
					MessageDialog.openInformation(null, "", "新增会员成功");
					logconsole("新增会员成功");
					Member o = db.getMember(member.getName());
					tv.add(o);
					((List)tv.getInput()).add(o);
				}else{
					MessageDialog.openError(null, "", "插入会员记录失败,请检查输入数据是否正确");
					logconsole("插入会员记录失败");
				}
			}
		}
	}
	
	private class ModifyAction extends Action{
		public ModifyAction(){
			setText("修改");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.NOTE));
		}
		public void run(){
			IStructuredSelection sel = (IStructuredSelection)tv.getSelection();
			Member member = (Member)sel.getFirstElement();
			if(member == null) return;
			MemberDataDialog dialog = new MemberDataDialog(null);
			dialog.setInput(member);
			if(dialog.open() == IDialogConstants.OK_ID){
				Member getmember = dialog.getInput();
				if(db.modifyMember(getmember)){
					MessageDialog.openInformation(null, "", "修改会员成功");
					logconsole("修改会员成功");
					tv.refresh(member);
				}else{
					MessageDialog.openError(null, "", "修改资料失败,请检查输入的数据是否正确");
					logconsole("修改资料失败");
				}
			}
		}
	}
	
	private class RemoveAction extends Action{
		public RemoveAction(){
			setText("删除");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.REMOVE));
		}
		public void run(){
			IStructuredSelection sel = (IStructuredSelection)tv.getSelection();
			Member member = (Member)sel.getFirstElement();
			if(member == null)
				return;
			if(MessageDialog.openConfirm(null,"确认删除","一旦从数据库中删除,该记录将无法恢复,是否真的删除?")){
				if(db.removeMember(member)){
					//从表格界面中删除,同时也要将它从源头删除
					tv.remove(member);
					List list = (List)tv.getInput();
					list.remove(member);
					logconsole("删除会员成功");
				}else{
					MessageDialog.openConfirm(null, null, "删除失败");
					logconsole("删除会员失败");
				}
			}
 		}
	}
	
	private class FirstAction extends Action{
		public FirstAction(){
			setText("首页");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.FIRST));
		}
		public void run(){
			queryInfo.currentPage = 1;
			tv.setInput(db.getMembers(queryInfo));
			refreshActionsState();
			addListener(tv);
		}
	}
	//双击表格显示详细信息
	private void addListener(TableViewer tv){
		tv.addDoubleClickListener(new IDoubleClickListener(){
			public void doubleClick(DoubleClickEvent event){
				IStructuredSelection sel = (IStructuredSelection)event.getSelection();
				Member member = (Member)sel.getFirstElement();
				if(member == null) return;
				MemberDataDialog dialog = new MemberDataDialog(null);
				dialog.setInput(member);
				if(dialog.open() == IDialogConstants.OK_ID){
					
				}
			}
		});
	}
	
	private class PrevAction extends Action{
		public PrevAction(){
			setText("上一页");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.PREV));
		}
		public void run(){
			queryInfo.currentPage = queryInfo.currentPage-1;
			tv.setInput(db.getMembers(queryInfo));
			refreshActionsState();
		}
	}
	
	private class NextAction extends Action{
		public NextAction(){
			setText("下一页");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.NEXT));
		}
		public void run(){
			queryInfo.currentPage = queryInfo.currentPage+1;
			tv.setInput(db.getMembers(queryInfo));
			refreshActionsState();
		}
	}
	
	private class LastAction extends Action{
		public LastAction(){
			setText("末页");
			setHoverImageDescriptor(ImagesContext.getImageDescriptor(ImagesContext.LAST));
		}
		public void run(){
			queryInfo.currentPage = queryInfo.pageCount;
			tv.setInput(db.getMembers(queryInfo));
			refreshActionsState();
		}
	}
	
	/**
	 * 刷新翻页按钮的有效/无效状态
	 * 
	 */
	private void refreshActionsState(){
		if(queryInfo.pageCount == 0){//没有记录时
			firstAction.setEnabled(false);
			prevAction.setEnabled(false);
			nextAction.setEnabled(false);
			lastAction.setEnabled(false);
		}else{
			//如果是第一页,则首页,上一页两按钮无效
			boolean b = (queryInfo.currentPage == 1);
			firstAction.setEnabled(!b);
			prevAction.setEnabled(!b);
			//如果是最后一页,则末页,下一页两按钮无效
			b = (queryInfo.currentPage == queryInfo.pageCount);
			lastAction.setEnabled(!b);
			nextAction.setEnabled(!b);
		}
	}
	//提供给外界执行"首页"按钮的方法
	public void fireFirstAction(){
		firstAction.run();
	}
	
	//控制台中输出信息
	private void logconsole(String str){
		MessageConsole console = LogConsoleFactory.getConsole();
		MessageConsoleStream stream = console.newMessageStream();
		stream.println(str);
	}
}

⌨️ 快捷键说明

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