从this thread起
Have your class implement 07001.
Then you get notified when a workbench part (an IEditorPart, etc.) just got opened/closed. You can actually filter out which parts you want to pay attention to.
(注意:从3.5开始,IPartListener2还可以实现IPageChangedListener,以通知有关实现IPageChangeProvider和发布PageChangedEvents的任何部分.)
The tricky part (no pun intended) is to register the listener to workbench.
So, the first thing to do is get a valid IWorkbenchPage so that you can call IWorkbenchPage.addPartListener().
以下是如何获取工作台页面.
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;
}
}
}
IPartListener2 partlistener = new IPartListener2(){
public void partActivated( IWorkbenchPartReference partRef ) {
if (partRef.getPart(false) == MapEditor.this){
registerFeatureFlasher();
ApplicationGIS.getToolManager().setCurrentEditor(editor);
}
}
[...]
或者这个通用PartListener用于PartListener2的一般用法.