我有一个扩展CommonNavigator的视图。
我正在通过CustomProjectCreation向导创建一个自定义项目。
只有下面给出的刷新才有效,但是每次创建一个应该避免的新项目时它会刷新所有项目,
CommonNavigator resNav;
try {
resNav = (CommonNavigator)activePage.findView("view id");
resNav.getCommonViewer().refresh();
//resNav.getCommonViewer().refresh(newProject); //doesn't work
} catch (PartInitException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ContentProvider looks as below
if(parentElement instanceof IWorkspaceRoot){
List customProjects = getCustomProjects();
return customProjects.toArray(new CustomProject[customProjects.size()]);
}
在Debug上,getCommonViewer()。refresh()调用内容提供程序中的getChildren()方法。 getCommonViewer()。refresh(newProject)不调用ContentProvider
expandtolevel和setExpandedState无效...
如何实现刷新特别是新创建的项目? 如何扩展创建的项目?
此致 阿拉汶
答案 0 :(得分:1)
您确定问题出在常见的导航器中吗?如果您通过使用非Eclipse资源访问方法(即普通的Java文件IO而不是IResource,IFile和相关代码)在新项目内部创建了工件,那么模型就不知道新内容。如果是这种情况,您首先需要yourProjectResource.refreshLocal()
。