百度空间 | 百度首页 
 
查看文章
 
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退出。

而用户自己建立的view,好像就不是这样运作的,当第一次打开的时候,会触发open和visible事件,当关闭时,会触发hidden和close事件。

这种情况,就要使用IPartListener2来实现了。

类别:技术 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu