Java 限制ElementTreeSelection对话框
我想实现工作区浏览。我写下面的代码Java 限制ElementTreeSelection对话框,java,swt,jface,Java,Swt,Jface,我想实现工作区浏览。我写下面的代码 ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( Display.getDefault().getActiveShell(), new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider()); dialog.setInput(Resou
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的,您应该在每次有问题时创建一个新问题,而不是完全更改旧问题。