今天在中国Eclipse社区中看到有人问
RCP中如何捕获视图关闭事件,由于在项目中客户也没这方面的需求,所以也没去研究过,今天看到,就试着自己搞了一下,刚开始的时候试着去重写dispose()方法,可是不管怎么样,一点视图上的X,视图就关闭了!后来看了看
trukey的回复,让视图实现ISaveablePart2接口,然后实现里面的相关方法就可以搞定了!
其中
isDirty() 和
isSaveOnCloseNeeded() 这两个方法一定要返回true。具体的可以去看看ISaveablePart2和ISaveablePart两个接口的源码。
public
int
promptToSaveOnClose()
{
// TODO Auto-generated method stub
if(true){
MessageDialog.openInformation(null, "提示", "您不能关闭次视图!");
return 2;
}else{
return 0;
}
}
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
public void doSaveAs() {
// TODO Auto-generated method stub
}
public boolean isDirty() {
// TODO Auto-generated method stub
return true;
}
public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}
public boolean isSaveOnCloseNeeded() {
// TODO Auto-generated method stub
return true;
}
// TODO Auto-generated method stub
if(true){
MessageDialog.openInformation(null, "提示", "您不能关闭次视图!");
return 2;
}else{
return 0;
}
}
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub
}
public void doSaveAs() {
// TODO Auto-generated method stub
}
public boolean isDirty() {
// TODO Auto-generated method stub
return true;
}
public boolean isSaveAsAllowed() {
// TODO Auto-generated method stub
return false;
}
public boolean isSaveOnCloseNeeded() {
// TODO Auto-generated method stub
return true;
}