2013-07-14 3 views
1

리소스 변경 수신기를 사용하여 프로젝트의 변경 사항을 추적하고 있습니다. 이 리스너는 프로젝트에서 파일을 삭제하거나 파일의 변경 내용을 만들거나 저장하면 호출됩니다. ResourceDelta 객체가 있습니다. 이렇게하면 파일을 만들거나 삭제하려고하는 경우 어떻게 찾을 수 있습니까? 내가 가진, 파일 삭제 또는 파일 만들기 확인

내 플러그인의 활성화 클래스에서 : 다음은 내 코드입니다 MyResourceChangeListener 클래스에서

IResourceChangeListener  listener = new MyResourceChangeListener(); 
this.workspace.addResourceChangeListener(this.listener); 

내가 가진 :

System.out.println(event.getBuildKind()); 
System.out.println(event.getSource()); 
System.out.println(event.getType()); 
if (event.getType() == IResourceChangeEvent.POST_CHANGE) { 
    System.out.println("this is post change event"); 
    final IResourceDelta delta = event.getDelta(); 

System.out.println(delta.getFlags()); 
System.out.println(delta.getKind()); 
System.out.println(delta.getFlags()); 

if (delta.getKind() == IResourceDelta.ADDED) { 
    System.out.println("this is ADD event"); 
} 

if (delta.getKind() == IResourceDelta.CHANGED) { 
    System.out.println("this is CHANGED event"); 
} 

if ((delta.getFlags() & IResourceDelta.CONTENT) == 0) { 
     System.out.println("this is CONTENT event"); 
} 
} 

출력은 다음과 같이 항상 어느 내가 만들 클래스를 삭제하거나 클래스를 변경하거나 클래스를 저장하면됩니다.

0 
[email protected] 
1 
this is post change event 
0 
4 
0 
this is CHANGED event 
this is CONTENT event 

이벤트 저장, 삭제 또는 작성을 구분할 수있는 방법은 무엇입니까?

답변

2

PRE_DELETE 비트에 대해 IResourceChangeEvent.getType()에 의해 반환 된 비트 맵을 테스트하십시오. 해당 이벤트 유형에 맞는 수신기를 등록하십시오. IWorkspace.addResourceChangeListener(IResourceChangeListener, int)

article도 유용 할 수 있습니다.