如何以编程方式定义项目浏览器在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之外访问。

+0

谢谢Greg,我很害怕这个。我会等一会儿,但我怀疑这是你的答案,我会接受。 – zerzevul