• eclipse插件开发:属性视图


    在项目中遇到一些小问题,现在记录下来,备忘,也能帮助初学者。

         在自己的RCP应用中使用PropertySheet大概有两种方法,我现在只介绍一种方法。这种方法我觉得要简单一点。

         首先,自己定义的model要继承org.eclipse.ui.views.properties.IPropertySource接口,这个接口中有几个方法要实现:

         第一个:

    Java代码


    • @Override
    • public Object getEditableValue() {  
    •     //返回模型自身作为可编辑的属性
    •     return
      this;  
    • }  

    Java代码


    • @Override
    • public Object getEditableValue() {  
    •     //返回模型自身作为可编辑的属性
    •     return
      this;  
    • }  

           这个方法如代码中所示,返回model自身就可以了。

           第二个:

    Java代码

    • @Override
    •     public IPropertyDescriptor[] getPropertyDescriptors() {  
    •         IPropertyDescriptor[] descriptors = new IPropertyDescriptor[] {   
    •                 new TextPropertyDescriptor(P_TEXT, "Name"),  
    •                 new ComboBoxPropertyDescriptor(P_TYPE, "Type"new String[] { "True""False"}),  
    •         };  
    •         return descriptors;  
    •     }  

    Java代码

    • @Override
    •     public IPropertyDescriptor[] getPropertyDescriptors() {  
    •         IPropertyDescriptor[] descriptors = new IPropertyDescriptor[] {   
    •                 new TextPropertyDescriptor(P_TEXT, "Name"),  
    •                 new ComboBoxPropertyDescriptor(P_TYPE, "Type"new String[] { "True""False"}),  
    •         };  
    •         return descriptors;  
    •     }  


            这个方法返回一个IPropertyDescriptor数组,它包括了在属性视图中要显示的项。

            第三个:

    Java代码

    • @Override
    •     public Object getPropertyValue(Object id) {  
    •         if(id.equals(P_TEXT)) {  
    •             return
      this.getName();  
    •         } else
      if(id.equals(P_TYPE)) {  
    •             return
      this.getType().equals("Real") ? new Integer(0) : new Integer(1);  
    •         }   
    •         return
      null;  
    •     }  

    Java代码

    • @Override
    •     public Object getPropertyValue(Object id) {  
    •         if(id.equals(P_TEXT)) {  
    •             return
      this.getName();  
    •         } else
      if(id.equals(P_TYPE)) {  
    •             return
      this.getType().equals("Real") ? new Integer(0) : new Integer(1);  
    •         }   
    •         return
      null;  
    •     }  

           在实现这个方法的时候要注意,在上面那个方法中的:

    Java代码

    • new ComboBoxPropertyDescriptor(P_TYPE, "Type"new String[] { "True""False"}),  

    Java代码

    • new ComboBoxPropertyDescriptor(P_TYPE, "Type"new String[] { "True""False"}),  

    所对应的在这个方法中的返回值是Integer的,而不是String,这一点一定要注意,要不然显示出来的属性视图是无法编辑的。

            第四个:

    Java代码


    • @Override
    • ublic boolean isPropertySet(Object id) {  
    • return
      true;  

     

    Java代码


    • @Override
    • ublic boolean isPropertySet(Object id) {  
    • return
      true;  


             这个方法返回true就可以了。

             最后一个要我么实现的方法:

     

    Java代码

    • @Override
    •     public
      void setPropertyValue(Object id, Object value) {  
    •         if(id.equals(P_TEXT)) {  
    •             this.setName(value.toString());  
    •         } else
      if(id.equals(P_TYPE)) {  
    •             this.setType(((Integer)value).equals(new Integer(0)) ? "Real" : "Integer");  
    •         }  
    •     }  

     

    Java代码

    • @Override
    •     public
      void setPropertyValue(Object id, Object value) {  
    •         if(id.equals(P_TEXT)) {  
    •             this.setName(value.toString());  
    •         } else
      if(id.equals(P_TYPE)) {  
    •             this.setType(((Integer)value).equals(new Integer(0)) ? "Real" : "Integer");  
    •         }  
    •     }  
  • 相关阅读:
    [转]经典SQL语句大全
    listview分页
    verticalalign属性和用法
    在后台.cs页面往前台插入html代码的方法
    前台js改变Session的值(用ajax)
    2012.10笔记
    添加收藏夹(兼容部分)
    使textbox无法手动修改,但可以代码修改
    题目审批表
    任务书
  • 原文地址:https://www.cnblogs.com/eclipsetech/p/8625102.html
Copyright © 2020-2023  润新知