FormEditor 开发记录6 最后一步,FormEditor持久化

前面的开发基本已经完成了。接下来的工作是使得Editor能够持久化到本地。

在下一次启动时,能够自动打开原来已经打开的Editor.

第一步:将EditorInput持久化

让EditInput实现IPersistableElement,并且在getPersistable()返回this.

ExpandedBlockStart.gif 代码
    @Override
    
public  IPersistableElement getPersistable() {
        
return   this ;
    }

    @Override
    
public  String getFactoryId() {
        
//  TODO Auto-generated method stub
         return   null ;
    }

    @Override
    
public   void  saveState(IMemento memento) {
        
//  TODO Auto-generated method stub
        
    }


 

第二步:定义Factory的扩展以及在getFactory中返回这个ID

ExpandedBlockStart.gif 代码
    < extension
         point
= " org.eclipse.ui.elementFactories " >
      
< factory
            
class = " com.sg.intellifmea.editor.ProjectEditorInputFactory "
            id
= " com.sg.intellifmea.editor.ProjectEditorInputFactory " >
      
</ factory >
   
</ extension >
    @Override
    
public  String getFactoryId() {
        
return   " com.sg.intellifmea.editor.ProjectEditorInputFactory " ;
    }

第三步:实现saveState(IMemento memento),将EditorInput保存到本地的memento中

 

    @Override
    
public   void  saveState(IMemento memento) {
        
if (data != null && data.getOuid() != null ){
            memento.putString(
" ouid " , data.getOuid());
        }        
    }


第四步:实现 IElementFactory

ExpandedBlockStart.gif 代码
public   class  ProjectEditorInputFactory  implements  IElementFactory {

    @Override
    
public  IAdaptable createElement(IMemento memento) {
        String ouid 
=  memento.getString( " ouid " );
        
return   new  ProjectInput( new  LazyDTO(ouid));
    }

}


看起来已经完成了 ,但是,似乎还是不能自动打开上次退出系统时没有关闭的编辑器

检查后,发现EditorInput中还有一个方法要改:

 

    @Override
    
public   boolean  exists() {
        
return   true ;
    }

exists返回ture,告知系统这个input是否还存在。

可以理解editor是面向客户端文件设计的,而显示来自数据库的数据时,应当考虑数据库的这条记录以及所编辑的记录是否还存在或者完整。上面的内容我不详细写完了。可以根据自己的逻辑需要来写。

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/seag/archive/2009/12/03/1616163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值