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

📄 myactiongroup2.java

📁 SWTJFace篇项目源程序该项目包含 包含了Eclipse下构建swt的基本工程
💻 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 + -