我想在我的eclipse插件中實現一個ISelectionListener,它將跟蹤我的項目瀏覽器中的選擇並告訴我哪些項目被選中。因此,它與構建工具欄按鈕找出每次選擇構建哪些項目的方式相同。我實現了這個監聽器,但只有當用戶點擊實際項目而不是項目下的任何其他項目時(如源代碼,文件夾,包...),我纔可以選擇項目。我的代碼是:實現一個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,然後您可以在訪問(IResourceDelta delta)函數中使用IResource resource = delta.getResource()獲取所有IResource實例。 ISelectionListener是否有類似的東西?
謝謝,解決了我的問題:) – Kyriakos