2011-10-07 3 views
2

플러그인이 있고 작업 공간에 프로젝트가 추가되면이를 감지하고 플러그인 코드에서 프로젝트 설정을 지정합니다.프로젝트의 Eclipse 플러그인이로드 됨

특별히이 파생 된 일부 리소스에서는 setHidden을 호출하려고합니다.이 설정은 프로젝트의 일부가 아닌 것처럼 보이므로 새 작업 영역에서 프로젝트를 가져올 때 리소스가 숨겨져있을 때마다 숨겨져있는 것처럼 보입니다. .

답변

8

아이러니하게도, 나는 어제 이런 것을 썼습니다. 그것은 당신이 원하는 것보다 조금 더 복잡합니다.

ResourcesPlugin.getWorkspace().addResourceChangeListener(ProjectListener.LISTENER, IResourceChangeEvent.POST_CHANGE); 

그리고 당신을 :

public class ProjectListener implements IResourceChangeListener { 

public void resourceChanged(IResourceChangeEvent event) { 
    if (event.getType() == IResourceChangeEvent.POST_CHANGE) { 
     List<IProject> projects = getProjects(event.getDelta()); 
     // do something with new projects 
    } 
} 

private List<IProject> getProjects(IResourceDelta delta) { 
    final List<IProject> projects = new ArrayList<IProject>(); 
    try { 
     delta.accept(new IResourceDeltaVisitor() { 
      public boolean visit(IResourceDelta delta) throws CoreException { 
       if (delta.getKind() == IResourceDelta.ADDED && 
        delta.getResource().getType() == IResource.PROJECT) { 
        IProject project = (IProject) delta.getResource(); 
        if (project.isAccessible()) { 
         projects.add(project); 
        } 
       } 
       // only continue for the workspace root 
       return delta.getResource().getType() == IResource.ROOT; 
      } 
     }); 
    } catch (CoreException e) { 
     // handle error 
    } 
    return projects; 
} 

그런 다음, 당신이 바람직 플러그인 활성제의 start 방법, 작업 공간이 ProjectListener을 추가해야합니다 : 여기 당신이 재생을위한 코드입니다 stop 방법으로 제거하고 싶습니다. 나는 문자 그대로이 코드를 어제 썼다. 나는 그것이 도움이되기를 바랍니다.

+0

하지만 액티베이터가 시작될 때 어떻게 호출 할 수 있습니까? 프로젝트가 처음 빌드 될 때 광산이 호출됩니다. 플러그인은 IDL의 맞춤 빌더입니다. –

+0

org.eclipse.ui.startup 확장 점이 시작 중에 Activator가 시작되지 않는 문제를 해결했습니다. –

+1

정확히 그렇게하는 방법입니다. –

관련 문제