Eclipse RCP:没有IDE插件的CNF是否需要自定义ContentProvider?

| 在RCP应用程序中,我想创建一个Common Navigator Framework视图,仅从本地文件系统上的资源开始。 我已经在一个包含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插件中的ResourceExtensionContentProvider类是否用于实现内容绑定org.eclipse.ui.navigator.resourceContent? 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 + \"]\");
        }
    
已邀请:
无需使用CommonNavigator类,您需要对其进行扩展,然后重写getInitialInput()方法。有返回IWorkspaceRoot     

要回复问题请先登录注册