2011-02-28 4 views
2

작업 공간의 이벤트를 모니터하는 Eclipse 플러그인을 개발 중입니다. 내 클래스 중 하나가 IPropertyListener를 구현합니다. 즉,이 클래스는 propertyChanged 메서드를 상속받습니다. 이 메소드는 플러그인의 작업 영역에있는 파일이 더러워지면 시작됩니다. IResource가 propertyChanged 이벤트와 어떤 연관이 있는지 알 필요가 있지만 현재 구현이 작동하지 않습니다. Eclipse에서 propertyChanged 이벤트와 관련된 IResource를 얻으려면 어떻게해야합니까?

public void propertyChanged(Object source, int propId) 
{ 
    if(propId == IEditorPart.PROP_DIRTY) 
    { 
     IResource resource = (IResource)source; 
    } 
} 

나는 소스가 입력하여 IResource의하지 않기 때문에이 작동하지 않는 생각하지만, 나는이 속성 변경과 관련된 자원에서 얻는 방법을 다른 모른다.

IResource에서 어떻게 얻을 수 있을지에 대한 아이디어가 있습니까?

+0

출처는 어떤 유형입니까? 연관된 IResource를 검색하려면 해당 클래스의 API를 사용해야 할 것입니다. –

+0

WorkbenchPart에는 propertyChanged를 호출하는 firePropertyChanged 메소드가 있습니다. WorkbenchPart를 소스 매개 변수로 사용합니다. 이것은 EventManager를 확장합니다. 그 경로가 저에게 자원을 갖게 할 것이라고 생각하지 않습니다. 다른 방법이 있는지 궁금합니다. – jbranchaud

답변

4

소스를 IEditorPart로 전송 해보세요. 그런 다음 getEditorInput()을 호출하십시오. 모든 편집기 입력이 작업 공간 리소스 인 것은 아니므로 하위 유형 중 하나 (FileEditorInput 일 가능성이 있음)를 확인하고 거기에서 이동하십시오.

또는 타사에 의존하는 대신 IWorkspace.addResourceChangeListener()를 통해 직접 리소스 변경 내용을 수신하십시오.

+0

완벽하게 작동합니다. 감사합니다! – jbranchaud

관련 문제