gpt4 book ai didi

java - 限制 ElementTreeSelectionDialog

转载 作者:行者123 更新时间:2023-12-01 08:53:47 25 4
gpt4 key购买 nike

我想实现工作区浏览。我编写了以下代码。

ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(
Display.getDefault().getActiveShell(),
new WorkbenchLabelProvider(),
new BaseWorkbenchContentProvider());

dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
dialog.open();

如何将代码更改为仅包含显示的“.ecore”文件的根元素(项目或文件夹)?当用户折叠任何根元素时,仅显示 .ecore 文件?

最佳答案

您可以向对话框添加查看器过滤器以限制显示的内容。

dialog.addFilter(new FileExtensionFilter("ecore"));

添加过滤器。

文件扩展名过滤器看起来像:

public class FileExtensionFilter extends ViewerFilter {

private String fTargetExtension;

public FileExtensionFilter(String targetExtension) {
fTargetExtension = targetExtension;
}

@Override
public boolean select(Viewer viewer, Object parent, Object element) {
if (element instanceof IFile) {
return ((IFile)element).getName().toLowerCase().endsWith("." + fTargetExtension);
}

if (element instanceof IProject && !((IProject)element).isOpen())
return false;

if (element instanceof IContainer) { // i.e. IProject, IFolder
try {
IResource[] resources = ((IContainer)element).members();
for (IResource resource : resources) {
if (select(viewer, parent, resource))
return true;
}
} catch (CoreException e) {
// Ignore
}
}

return false;
}
}

这是基于org.eclipse.pde.internal.ui.util.FileExtensionFilter

对于 Java 16 及更高版本,可以使用“instanceof 类型模式”简化 select 方法:

@Override
public boolean select(Viewer viewer, Object parent, Object element) {
if (element instanceof IFile file) {
return file.getName().toLowerCase().endsWith("." + fTargetExtension);
}

if (element instanceof IProject project && !project.isOpen())
return false;

if (element instanceof IContainer container) { // i.e. IProject, IFolder
try {
IResource[] resources = container.members();
for (IResource resource : resources) {
if (select(viewer, parent, resource))
return true;
}
} catch (final CoreException e) {
// Ignore
}
}

return false;
}

关于java - 限制 ElementTreeSelectionDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com