📄 archiveeditoractiongroup.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 + -