查看文章 |
IPartListener和IPartListener2作用于eclipse视图之间的联系2
2009年09月25日 星期五 21:27
以上文章转载自:http://blog.csdn.net/starshus/archive/2006/01/04/570540.aspx 感谢原作者。 实际使用中,发现其实有两个,IPartListener 和 IPartListener2 ,都在包org.eclipse.ui中。他们的区别在于IPartListener2 更加丰富一些,多了 Hidden,Visible,InputChanged 这三个事件,而且参数也有区别。 IPartListener 里面的方法的参数为 :IWorkbenchPart part IPartListener2 里面的方法的参数为:IWorkbenchPartReference partRef 当使用 IPartListener2 时,要获取到part,这样就行: partRef.getPart(false) 关于IPartListener(2)结合view或action使用的方式,转载的文章已经讲得很清楚了,感觉不错,谢谢原作者。 在action中,我是在构造函数和dispose函数中分别加入和取消的,代码如下:
public class MenuHandler extends AbstractHandler implements ISelectionChangedListener , IPartListener { /** * The constructor. * * @throws EngineException */ public MenuHandler() { AuditPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() .getActivePage().addPartListener(this); }![]() @Override public void dispose() { AuditPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() .getActivePage().removePartListener(this); super.dispose(); }![]() ![]() @Override public void partActivated(IWorkbenchPart part) { System.out.println(); } ![]() @Override public void partBroughtToTop(IWorkbenchPart part) { // TODO Auto-generated method stub System.out.println(); }![]() @Override public void partClosed(IWorkbenchPart part) { // TODO Auto-generated method stub![]() }![]() @Override public void partDeactivated(IWorkbenchPart part) { // TODO Auto-generated method stub![]() }![]() @Override public void partOpened(IWorkbenchPart part) { // TODO Auto-generated method stub if (part instanceof MyShootView) { ((MyShootView) part) .addSelectionChangedListener(this);![]() }![]() ![]() ![]() ![]() ![]() ![]() } 不过需要注意,eclipse里面有些视图,例如 ContentOutline 视图即大纲视图,当你第一次打开它,会触发partOpen 事件,然后立刻触发 partVisible 事件,当你再关掉它,则只会触发 partHidden 事件,而不会触发close。所以他们实际上是没有真正的关闭,当第一次打开以后,都会一直存在,知道eclipse退出。 |
最近读者:




* The constructor.