2012-07-08 81 views
0

我有一個擴展了CommonNavigator的視圖。查看擴展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()]); 
} 

上進行調試,getCommonViewer()。刷新()調用的getChildren( )方法在內容提供者中。 getCommonViewer()刷新(newProject)不會對ContentProvider的

expandtolevel和setExpandedState一個電話都沒有工作...

如何實現在特定刷新到新創建的項目? 如何擴展創建的項目?

問候, 亞拉文

+0

你還有org.eclipse.ui.navigator.resources插件嗎?這提供了一些東西來監聽資源更改事件,並確保ProjectExplorer與這些事件同步。我不記得如何將它與您自己的CommonNavigator掛鉤,但我認爲這是一種方法。 – 2012-07-12 07:08:10

回答

1

你確定這個問題是在普通導航儀?如果您已經通過使用非Eclipse資源訪問方法(這是普通的Java文件IO而不是IResource,IFile和相關代碼)在新項目中創建了工件,那麼該模型並不知道新內容。如果是這種情況,您首先需要yourProjectResource.refreshLocal()

+0

我正在創建包含IFile的IProject。但在我的內容提供者中,創建的項目被包裝在返回的模型對象(新CustomProject(IProject))上。這是否會成爲普通導航器無法檢測到新內容的原因? – Aravind 2012-07-09 04:01:27

+0

是的,這就是原因,CNF將跟蹤資源變化,但由於它不知道模型對象,資源變更機制不會幫助你。您必須訪問CommonViewer並在模型對象更改時自行刷新對象。 – 2012-07-18 22:58:24