我正在尝试在我的 Eclipse 插件中实现 ISelectionListener,它将跟踪我的项目资源管理器中的选择并告诉我选择了哪些项目。所以它与构建工具栏按钮查找每次选择要构建的项目的方式相同。我实现了那个监听器,但只有当用户点击实际项目而不是项目下的任何其他项目(如源代码、文件夹、包......)时,我才能选择项目我的代码是:
@Override
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
Object[] allselections= null;
selectedProjects.clear();
// TODO Auto-generated method stub
if(selection instanceof IStructuredSelection) {
//Object element = ((IStructuredSelection)selection).getFirstElement();
allselections = ((IStructuredSelection)selection).toArray();
for(Object element: allselections){
if (element instanceof IResource) {
selectedProjects.add(((IResource)element).getProject());
}
}
};
当元素不是 IResource 的实例并且是 CModelManager、来自 CDT 的 cSource/cxxSource ......以及可以成为项目一部分的任何其他内容时,是否有通用方法来获取它所属的项目?
对于 IResourceChangeListener,您可以使用 IResourceDeltaVisitor,然后您可以使用以下方法将所有内容作为 IResource 实例获取:访问(IResourceDelta delta)函数中的 IResource resource = delta.getResource()。ISelectionListener 有类似的东西吗?