2017-02-12 8 views
0

Workspace Browse을 구현하고 싶습니다. 아래 코드를 작성합니다.ElementTreeSelectionDialog를 제한하십시오.

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

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

".ecore"파일이 포함 된 루트 요소 (프로젝트 또는 폴더)만으로 코드를 변경할 수 있습니까? 그리고 사용자가 루트 요소를 접을 때 .ecore 파일 만 표시됩니까?

+0

을 기반으로 당신은 새로운 질문 당신이 질문 완전히 오래된 질문을 변경하지를 할 때마다 작성해야합니다. –

답변

1

표시된 내용을 제한하기 위해 대화 상자에 뷰어 필터를 추가 할 수 있습니다.

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