百度空间 | 百度首页 
 
查看文章
 
IPartListener和IPartListener2作用于eclipse视图之间的联系。
2009年09月25日 星期五 21:27

来自:http://blog.csdn.net/starshus/archive/2006/01/04/570540.aspx

1.判断这个view当前是否为active的好方法:

private boolean isActivePart() {
        IWorkbenchPart part 
= getViewSite().getPage().getActivePart();
        
return part != null && part.equals(this);        
}


2.自己的rcp程序里有多个view,它们之间是有联系的,如果关掉其中一个view时,
要做些事,怎么知道它是什么时候关掉的呢?我在rcp的新闻组上找到了答案:

关掉Editor或Viewer时调用自己逻辑的方法:

1)如果是editor,那么让它实现org.eclipse.ui.ISaveablePart2接口.

2)如果是view,在view class里面加上下面这个方法,并且调用它,比如:
在ViewPart#init()里面:

private void initPartListener() {
getSite().getPage().addPartListener(
new IPartListener() {

    
public void partOpened(IWorkbenchPart part) {
        
if (part != YourPartView.this{
            
return;
        }
 else {
            
// your logics
        }

    }


    
public void partDeactivated(IWorkbenchPart part) {
        
if (part != YourPartView.this{
            
return;
        }
 else {
        
// your logics
        }

    }


    
public void partClosed(IWorkbenchPart part) {
        
if (part != YourPartView.this{
            
return;
        }
 else {
            
// your logics
        }

    }


    
public void partBroughtToTop(IWorkbenchPart part) {
        
if (part != YourPartView.this{
            
return;
        }
 else {
            
// your logics
        }

    }


    
public void partActivated(IWorkbenchPart part) {
        
if (part != YourPartView.this{
            
return;
        }
 else {
            
// your logics
        }

        }

    }
);
}


或者这样写也可以:
让这个view类实现PartListener接口
然后在这个view的createPartControl()里加上:
getViewSite().getPage().addPartListener(this);

或是这样写:


public void createPartControl(Composite parent) {
                
            getSite().getWorkbenchWindow(). getPartService().addPartListener(
this);
}

public void dispose() 
           getSite().getWorkbenchWindow(). getPartService().removePartListener(
this);
}


注意:

1)Views也能实现ISaveablePart2

2)在view关闭时要做什么事时,建议就用IPartListener2

3)View上的X是与关闭动作关联在一起的,要用别的方法达到目的你只有写自己的
关闭动作.

4)ISaveablePart有意义吗?
当然有,有些程序的data model在view上,它们能被修改,所以它们必须有在view
关闭时保存的能力.(所以用户的修改不会丢失)
有些时候editors不适合展示数据model.

-----------------------------------------------------------------------------------------------


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

     

©2009 Baidu