我正在开发一个监视工作区中事件的Eclipse插件。我的一个类实现了IPropertyListener,这意味着它继承了propertyChanged方法。当插件工作空间中的文件变脏时,会触发此方法。我需要知道什么IResource与propertyChanged事件相关联,但我当前的实现不起作用。
public void propertyChanged(Object source, int propId)
{
if(propId == IEditorPart.PROP_DIRTY)
{
IResource resource = (IResource)source;
}
}
我认为这不起作用,因为source不是IResource类型,但我不知道如何获得与此属性更改相关联的资源。
关于如何获得IResource的任何想法?
答案 0 :(得分:4)
尝试将源代码转换为IEditorPart。然后调用getEditorInput()。并非所有编辑器输入都是工作空间资源,因此请检查其中一个子类型(可能是FileEditorInput)并从那里开始。
或者,只需通过IWorkspace.addResourceChangeListener()自己监听资源更改,而不是依赖第三方。