📄 myactiongroup2.java
字号:
package cn.com.chengang.jface.treeviewer;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.actions.ActionGroup;
import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
public class MyActionGroup2 extends ActionGroup {
private ContainerCheckedTreeViewer tv;
public MyActionGroup2(ContainerCheckedTreeViewer tv) {
this.tv = tv;
}
public void fillContextMenu(IMenuManager mgr) {
MenuManager menuManager = (MenuManager) mgr;
menuManager.add(new SelectAllAction());
menuManager.add(new RemoveEntryAction());
Tree tree = tv.getTree();
Menu menu = menuManager.createContextMenu(tree);
tree.setMenu(menu);
}
private class SelectAllAction extends Action {
public SelectAllAction() {
setText("勾选当前结点的所有子结点");
}
public void run() {
IStructuredSelection selection = (IStructuredSelection) tv.getSelection();
ITreeEntry entry = (ITreeEntry) (selection.getFirstElement());
tv.setSubtreeChecked(entry, true); // false不勾选
}
}
// 删除结点的Action类
private class RemoveEntryAction extends Action {
public RemoveEntryAction() {
setText("删除");
}
public void run() {
Object[] checks = tv.getCheckedElements();// 取得被勾选的结点(包括灰选)
if (checks.length == 0) {
MessageDialog.openInformation(null, "提示", "请先勾选记录");
return;
}
List<ITreeEntry> inputList = (List<ITreeEntry>) tv.getInput();
for (Object object : checks) {
if (tv.getGrayed(object))
continue;// 灰选结点不删除
ITreeEntry entry = (ITreeEntry) object;
remove(inputList, entry);
tv.remove(entry);
}
}
private void remove(List<ITreeEntry> list, ITreeEntry entry) {
if (list == null)
return;
for (Iterator it = list.iterator(); it.hasNext();) {
ITreeEntry o = (ITreeEntry) it.next();
if (o.getName().equals(entry.getName())) {
it.remove();
return;
} else {
remove(o.getChildren(), entry);
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -