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");  
    •         }  
    •     }  
  • 相关阅读:
    07四则运算三
    第一阶段冲刺01
    构建之法——阅读笔记01
    四则运算
    Windows32位或64位下载安装配置Scala
    Windows32或64位下载安装配置Spark
    在Hadoop中ResourceManager是干什么的?
    什么是NameNode和DataNode?他们是如何协同工作的?
    Hadoop1和Hadoop2的区别是什么?
    什么是yarn?
  • 原文地址:https://www.cnblogs.com/eclipsetech/p/8625102.html
Copyright © 2011-2022 走看看