我想在Eclipse中打开编辑器时得到通知。最好的方法是什么?
最佳答案
从this thread
让您的 class 实现 org.eclipse.ui.IPartListener2
。
然后,当工作台部件(一个IEditorPart
等)刚刚打开/关闭时,您会收到通知。您实际上可以过滤出要关注的部分。
(注意:从3.5开始,IPartListener2还可以实现IPageChangedListener
,以通知有关实现IPageChangeProvider
并发布PageChangedEvents
的任何部分。)
棘手的部分(无双关语)是将侦听器注册到工作台。
因此,首先要做的是获取有效的IWorkbenchPage
,以便您可以调用IWorkbenchPage.addPartListener(<your class that implements IPartListener>)
。
这是获取工作台页面的方法。
IWorkbenchPage page = null;
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null)
{
page = window.getActivePage();
}
if (page == null)
{
// Look for a window and get the page off it!
IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
for (int i = 0; i < windows.length; i++)
{
if (windows[i] != null)
{
window = windows[i];
page = windows[i].getActivePage();
if (page != null)
break;
}
}
}
另请参见here。以this class为例
IPartListener2 partlistener = new IPartListener2(){
public void partActivated( IWorkbenchPartReference partRef ) {
if (partRef.getPart(false) == MapEditor.this){
registerFeatureFlasher();
ApplicationGIS.getToolManager().setCurrentEditor(editor);
}
}
[...]
或者此通用PartListener用于PartListener2的通用用法。或者这个EditorTracker