问题描述
|
在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