zoukankan      html  css  js  c++  java
  • 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");  
    •         }  
    •     }  
  • 相关阅读:
    SpringMVC---REST POST时出现415 Unsupported Media Type
    Unsupported major.minor version 51.0 错误解决方案
    CSS---清除inline-block元素4px右边距
    CSS---div一行显示,超出以省略号代替
    CSS---h3标题、横线、和圆形按纽共处一行
    输入输出 逻辑运算
    进制转换
    OC中文件读取类(NSFileHandle)介绍和常用使用方法
    iOS:KVO/KVC 的概述与使用
    iOS设计模式——Category和 Extension
  • 原文地址:https://www.cnblogs.com/eclipsetech/p/8625102.html
Copyright © 2011-2022 走看看