2011-04-13 62 views
1

在RCP應用程序中,我想創建一個Common Navigator Framework視圖,僅從本地文件系統上的資源開始。Eclipse RCP:沒有IDE插件的CNF是否需要自定義ContentProvider?

我已經在一個項目中完成了這項工作,其中包括org.eclipse.ui.ide插件。但是,這會創建一個過於複雜且不適合此應用程序的UI。 (例如,它增加了大約20個偏好面板,其中一些與構建和版本控制相關聯。)

所以現在我試圖做到這一點,沒有〜.ide插件 - 沒有org.eclipse .ui.navigator.resources取決於它的插件。

在RCP應用程序,我已經成功地創建一個新的工作區項目(我認爲)用下面的代碼中,如下所示的〜navigator.viewer擴展插件。但CNF視圖中沒有任何內容出現。

問題:

  • 因爲我不包括org.eclipse.ui.navigator.resources插件,我需要定義自己的內容提供商?
  • 是在org.eclipse.ui.navigator.resources插件用來實現內容綁定org.eclipse.ui.navigator.resourceContent類ResourceExtensionContentProvider?

的plugin.xml摘錄

<extension 
    point="org.eclipse.ui.navigator.viewer"> 
    <viewerActionBinding 
     viewerId="com.mycompany.app.gen.workspace"> 
    <includes> 
     <actionExtension pattern="org.eclipse.ui.navigator.resources.*" /> 
    </includes> 
    </viewerActionBinding> 
    <viewerContentBinding 
     viewerId="com.dnastar.app.gen.workspace"> 
     <includes> 
     <contentExtension pattern="org.eclipse.ui.navigator.resourceContent" />      
    <contentExtension pattern="org.eclipse.ui.navigator.resources.filters.*"/> 
     <contentExtension pattern="org.eclipse.ui.navigator.resources.linkHelper"/> 
     <contentExtension pattern="org.eclipse.ui.navigator.resources.workingSets"/> 
     </includes> 
    </viewerContentBinding> 
</extension> 

代碼用於創建一個新的項目(完整包含):

 Path path = new Path(sPath); 
     File filePath = new File(sPath); 
     String fileBaseName = filePath.getName(); 
     String projectName = fileBaseName; // For now 

     IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
     IProjectDescription projDescr = workspace.newProjectDescription(projectName); 
     projDescr.setLocation(path); 

     IWorkspaceRoot root = workspace.getRoot(); 
     IProject project = root.getProject(projectName); 

     try { 
      project.create(projDescr, null); 

      if (! project.isOpen()) { 
       project.open(null); 
      } 
     } catch (CoreException e) { 
      MessageDialog.openError(Display.getCurrent().getActiveShell(), 
        "New Project Error", "Could not create new project." + "\n[" + e + "]"); 
     } 

回答

2

而不是使用CommonNavigator類,你需要擴展它,然後重寫getInitialInput()方法。有返回IWorkpaceRoot

+0

仍然沒有得到任何東西顯示在導航窗口中。 SubClassed CommonNavigator,並在getInitialInput()中返回ResourcesPlugin.getWorkspace()。getRoot()。在plugin.xml中,將CommonNavigator視圖的類替換爲子類。感謝您的幫助。我錯過了什麼? – 2011-04-14 14:33:31

+0

不,這應該可行。你有沒有在工作區的任何項目?如果是這樣,我建議你在Eclipse Bugzilla中引發一個bug。 – 2011-04-14 17:40:59

+0

我需要在某處提供自定義標籤提供程序嗎? – 2011-04-14 21:18:46