/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.grid.tree;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.nebula.widgets.grid.Grid;
import org.eclipse.ui.actions.ActionGroup;
public class GridTreeViewerActionGroup extends ActionGroup implements ISelectionChangedListener {
protected GridTreeViewerExComponent<?> component;
protected Action insert = new InsertAction();
protected Action copy = new CopyAction();
protected Action paste = new PasteAction();
protected Action cut = new CutAction();
protected Action delete = new DeleteAction();
protected IMenuManager menu;
public GridTreeViewerActionGroup(GridTreeViewerExComponent<?> component) {
super();
this.component = component;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.actions.ActionGroup#fillContextMenu(org.eclipse.jface.
* action.IMenuManager)
*/
@Override
public void fillContextMenu(IMenuManager menu) {
this.menu = menu;
addActions();
updateAction(null);
final Grid tree = component.getTreeViewer().getGrid();
component.getTreeViewer().addSelectionChangedListener(this);
tree.setMenu(((MenuManager) menu).createContextMenu(tree));
}
protected void addActions() {
menu.add(insert);
menu.add(new Separator());
menu.add(copy);
menu.add(cut);
menu.add(paste);
menu.add(new Separator());
menu.add(delete);
}
/**
* ע��event�п���Ϊnull
*
* @param event
*/
protected void updateAction(SelectionChangedEvent event) {
insert.setEnabled(component.canInsert());
copy.setEnabled(component.canCopy());
paste.setEnabled(component.canPaste());
cut.setEnabled(component.canCut());
delete.setEnabled(component.canDelete());
}
public void selectionChanged(SelectionChangedEvent event) {
updateAction(event);
}
private class CopyAction extends Action {
public CopyAction() {
super("����\tCtrl+C");
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
component.copy();
}
}
private class CutAction extends Action {
public CutAction() {
super("����\tCtrl+X");
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
component.cut();
}
}
private class PasteAction extends Action {
public PasteAction() {
super("ճ��\tCtrl+V");
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
component.paste();
}
}
private class DeleteAction extends Action {
public DeleteAction() {
super("ɾ��\tDel");
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
component.delete();
}
}
private class InsertAction extends Action {
public InsertAction() {
super("����\tInsert");
}
@Override
public void run() {
component.insert();
}
}
}