Eclipse 插件开发 - Detect/Listen 文件在编辑器中打开
Eclipse Plugin Development - Detect/Listen File open in editor
我需要检测文件(任何类型)何时在 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
来进行设置。
我需要检测文件(任何类型)何时在 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
来进行设置。