Eclipse插件开发-检测/监听文件在编辑器中打开



我需要检测一个文件(任何类型的)何时在Eclipse中打开,并在发生这种情况时运行一些代码。

我已经尝试过下面的代码,但它似乎调用函数多次:

Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new IPartListener2() {
@Override
public void partOpened(IWorkbenchPartReference partRef) {
System.out.println("File opened");
}

});
}
});

在Eclipse RCP中有办法做到这一点吗?

使用IPartListener2.partOpened是正确的。请确保只设置一次侦听器。

partOpened将调用所有部件,因此您需要检查您感兴趣的部件。

@Override
public void partOpened(final IWorkbenchPartReference partRef)
{
// Check for editor reference and get the editor part
if (partRef instanceof IEditorReference && 
partRef.getPart(false) instanceof IEditorPart editorPart) {
// Example getting current IFile being edited:
IFile file = editorPart.getEditorInput().getAdapter(IFile.class);
}
}

注意:示例代码使用Java 16类型模式,对于旧版本将需要修改。

还要注意Display.asyncExec通常不需要设置这个

最新更新