如何以编程方式定义项目浏览器在WizardNewFileCreationPage中将显示的项目类型
我正在开发一个实现导入文件向导的Eclipse插件项目,该项目专为与自定义项目类型相关的文件而设计。向导的其中一个页面是WizardNewFileCreationPage
页面,其中显示了项目浏览器自动(据我所知)。该项目浏览器显示工作区中可用的所有项目。但是,正如我所说的,由于该向导处理的文件对于一个特定的项目类型非常有用,因此我想限制该浏览器并仅显示该自定义类型的项目。如何以编程方式定义项目浏览器在WizardNewFileCreationPage中将显示的项目类型
我知道如何选择一个自定义类型的项目:
List<IProject> projectList = new LinkedList<IProject>();
try {
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
IProject[] projects = workspaceRoot.getProjects();
for(int i = 0; i < projects.length; i++) {
IProject project = projects[i];
if(project.hasNature("com.example.www.myNature")) {
projectList.add(project);
}
}
}
catch(CoreException ce) {
ce.printStackTrace();
}
在这个环节发现:Get a list of all java projects open in an Eclipse workspace
我假设WizardNewFileCreationPage
类包括,在幕后,一个TreeViewer
或类似的东西。无论如何,我如何过滤此向导页面中项目资源管理器的内容? 我看了一下以下问题:How to programmatically change the selection within package explorer,但在我的情况下,activePart
变量是
org.eclipse.ui.navigator.resources.ProjectExplorer
类型不具有getTreeViewer()
方法。它有一个createPartControl()
方法:
public void createPartControl(Composite aParent);
这对我想要的有用吗?或者是使用扩展点的情况?
非常感谢您的回答。
没有办法做到这一点。
尽管WizardNewFileCreationPage
中显示的树与项目浏览器看起来很相似,但它并不基于该代码。
用于显示树的代码是org.eclipse.ui.internal.ide.misc.ContainerSelectionGroup
,它本身包含在org.eclipse.ui.internal.ide.misc.ResourceAndContainerGroup
中。这些类不支持太多的定制,并且在任何情况下都不能在WizardNewFileCreationPage
之外访问。
谢谢Greg,我很害怕这个。我会等一会儿,但我怀疑这是你的答案,我会接受。 – zerzevul