您可以IEditorPart
通过IWorkbenchPage
.
IEditorPart editor = ((IWorkbenchPage) PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()).getActiveEditor();
从那里,您可以访问各种其他类,包括编辑器的IEditorInput
、File
由该编辑器加载的类或底层的 GUIControl
元素。(请注意,根据编辑器的类型(文本文件、图表等),您可能需要转换为不同的类。)
FileEditorInput input = (FileEditorInput) editor.getEditorInput();
StyledText editorControl = ((StyledText) editor.getAdapter(Control.class));
String path = input.getFile().getRawLocationURI().getRawPath();
现在,您可以向 中添加一个监听器Control
,例如KeyAdapter
用于监视在相应编辑器中发生的所有击键。
editorControl.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Editing in file " + path);
}
});
或者,如果监控所有击键过多,您可以IPropertyListener
向编辑器注册一个。例如,每当编辑器“脏”或保存时,都会通知此侦听器。的含义propId
可以在 中找到IWorkbenchPartConstants
。
editor.addPropertyListener(new IPropertyListener() {
@Override
public void propertyChanged(Object source, int propId) {
if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
System.out.println("'Dirty' Property Changed");
}
}
});