0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Eclipse插件开发之简单控件封装—那些年冗长的裹脚布

电子设计 来源:电子设计 作者:电子设计 2020-12-24 17:28 次阅读

Hello,大家好~不知道还有没有老朋友记得我。N年前那个写流程自动化测试的程序媛就是我,可能看完那篇文章很多人认为我是自动化测试方向。No,No,No~今天破案了,我真正的主要技术方向——Eclipse插件开发。是的,如此小众的技术,有点疑惑都满网找不到答案的技术。思考了很久这块可以写点啥,基础开发我也不多说了,愿意看这篇文章的我也就默认已经是Eclipse插件开发入门了。

Eclipse插件开发,接触过这块的同学们都知道,无论是控件也好,向导视图也罢。但凡每次开发个不起眼的小功能,从零开始堆代码,都很烦躁,各种composite开始套,各种GridLayout布局开始调。当你的公司要求你开发大量的插件功能时,可能多数的时间你都在堆砌这种烦躁的代码。

在我司的EOS Platform里封装了进行了大量的swt封装,今天我们就来说说其中最基础的控件类封装,即属性编辑器。我们先来看下我们的UI框架。

每个Tab页中我们进行了完整的对象编辑器的封装,每个对象编辑器上,放置了多个属性编辑器。

StringPropertyEditor就是一个属性编辑器,ObjectEditor为一个对象编辑器,我们可以在一个ObjectEditor上添加多个StringPropertyEditor。StringPropertyEditor基础方法(不仅限于所展示的方法):setLabel(String label):标签名称。setPropertyName(String name):Text中value的数据映射key。doAddValidator(IValidator validator):添加校验器。这个时候我们是不是可以看出SWT控件开发和属性编辑器开发的差异了?总结一下:

可以看下我们可以进行多少种不同的控件封装。

看到类名大家应该差不多都清楚每个属性编辑器的大体功能。我们就拿一个StringPropertyEditor看看它是如何封装的吧。

StringPropertyEditor

StringPropertyEditor就是Label+Text,例如:

1.首先它一定是先有一个对象属性的基类AbstractPropertyAccessor,基类中的方法:

这个基类涉及到三个属性:propertyName:value的数据映射key。element:默认为当前对象编辑器中的value对象,可给单个属性编辑器设置单独的value对象。But!该value对象中必须包含propertyName设置的key值。introspector:这是个什么?这是个数据访问接口对象Introspector。该接口定义了如何根据一个名称(propertyName)来访问一个对象(element)中的值。这样设计为了提供灵活性,因为通常访问数据有两种方式。一种是根据Bean的属性进行访问,还有一种是使用Map中的Key进行访问,所以设计这个接口来访问对象中的数据,用户如果需要的话,也可以提供新的实现,如直接访问对象的Field或者其它。简单看下该接口的一个实现类所提供的方法。

通过Property的方式来访问一个Bean对象,在Property 不存在的情况会抛出异常。对于对象的存储用ognl.Ognl来实现。2.AbstractPropertyAccessor基类只是提供了数据层的封装,我们还需要一层封装来提供属性编辑器的基本实现AbstractPropertyEditor,这个类封装了所有控件的布局以及可能的操作。

其实这是相当长的一个封装,抽取出核心事务,我们来说一说。添加控件

这是一个核心的方法,你不需要去调用这个方法,在对象编辑器中的基类里会自动调用来这个方法来绘制所有添加的属性编辑器。buildEditorControl创建用来编辑的SWT控件,即控件,控件的基本提示信息,控件的GridData,控件的错误信息的图片等等。该方法中通过调用保护方法protected abstract IControlCreator createControlCreator()来获取真实的子类控件。getLayoutDataBuilder用来封装控件的布局,同样,子类可以通过重构来改变自己的布局。

这个方法同样是对控件的处理,之所以同控件的添加分开,是因为这个方法中的操作并不是每个控件必须的,根据需要继承开发。这个封装方法中做了两件事,一个是binding,也就是处理控件的联动,这里封装了控件的属性值绑定联动,以及反向绑定的联动处理。另一个就是为当前的编辑控件增加焦点监听器。动态更改控制值

这个方法除了在load的时候会调用,在对象编辑器使用的过程中,控件的联动也会使用到,比如最常见到的,浏览资源,点击浏览的button弹出资源选择框,根据选中的对象回填对象编辑器中的值,就会用到该方法。在这个setValue方法中,是通过数据改变的封装接口去实现的。我们可以看下这个数据改变的容器接口。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    124

    文章

    7286

    浏览量

    141111
  • Eclipse
    +关注

    关注

    1

    文章

    114

    浏览量

    21319
收藏 人收藏

    评论

    相关推荐

    鸿蒙实战开发学习:【HiView插件开发

    Hiview是一个跨平台的终端设备维测服务集,其中是由插件管理平台和插件实现的各自功能构成整套系统。 本文描述了hiview插件开发的全部流程。
    的头像 发表于 03-12 11:52 658次阅读
    鸿蒙实战<b class='flag-5'>开发</b>学习:【HiView<b class='flag-5'>插件</b><b class='flag-5'>开发</b>】

    插件型功率电感封装类型对使用有影响吗

    插件型功率电感封装类型对使用有影响吗 编辑:谷景电子 插件型功率电感在电子电路中是特别重要的一种电感元件,它对于保证电路的稳定运作有着特别重要的影响。要想充分发挥插件型功率电感的功能作
    的头像 发表于 02-18 13:52 160次阅读

    2.0间距排针排母插件贴片封装简析

    包含了我们平时常用的2.0间距的排针,排母,贴片的插件的都有,总共100种封装及精美3D模型。
    的头像 发表于 12-18 10:03 555次阅读

    idea可以运行eclipse项目吗

    可以运行Eclipse项目。Eclipse是一个开发环境,主要用于Java程序的开发,但它也支持其他编程语言如C++、Python等。通过Eclip
    的头像 发表于 12-06 13:57 1036次阅读

    eclipse安装web插件步骤

    Eclipse 是一款功能强大的集成开发环境 (IDE),广泛用于 Java 开发和各种 Web 应用程序的开发。通过安装适当的插件,可以将
    的头像 发表于 12-06 13:48 457次阅读

    怎么用eclipse创建web项目

    使用Eclipse创建Web项目是一种常见的方式,下面将分步骤详解如何使用Eclipse创建Web项目。在开始之前,请确保已经安装了Java开发工具包(JDK)和Eclipse集成
    的头像 发表于 12-06 13:40 878次阅读

    如何在eclipse配置jdk环境

    Eclipse中配置JDK环境非常重要,它是开发Java程序的基础。本文将详细介绍如何在Eclipse中配置JDK环境。 下载和安装JDK 首先,在Oracle官网上下载适用于您的操作系统的JDK
    的头像 发表于 12-06 11:49 703次阅读

    eclipse中没有web怎么办

    Eclipse中没有Web的情况下,可以采取以下的解决方法: 第一种方法是通过Eclipse插件来添加Web开发功能。原始的Eclipse
    的头像 发表于 12-06 11:30 1255次阅读

    eclipse怎么使用命令行

    Eclipse是一种功能强大的集成开发环境(IDE),可用于开发各种类型的应用程序,包括Java、C/C++、Python等。虽然Eclipse提供了用户友好的图形用户界面,但有时候我
    的头像 发表于 12-06 11:26 967次阅读

    eclipse怎么和navicat连接

    在进行软件开发和数据库管理时,常常需要将Eclipse与数据库进行连接以便于进行开发、调试和测试工作。Navicat是一款强大的数据库管理工具,可以与Eclipse进行无缝连接。本文将
    的头像 发表于 12-06 11:10 1661次阅读

    怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例

    本篇应用指南主要描述怎样用现成的Eclipse插件来调试AT32系列芯片以及SLIB的配置范例。本文档仅以AT32F403A为例进行说明,关于AT32F403A SLIB的详细说明,请详阅《AT32F403ASecurity Library Application Not
    发表于 10-24 07:41

    怎样用现成的Eclipse插件来调试AT32系列芯片

    Eclipse是著名的跨平台的自由集成开发环境(IDE),通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C/C++等,Eclipse
    发表于 10-24 07:12

    eclipse的快捷键汇总

    由于新的公司使用的 eclipse+myEclipe 的插件开发,myEclipse 的插件对 Hibernate 和 Struts 的支持要比 IDEA 操作容易的多,原来制作 Hi
    发表于 09-28 07:59

    揭秘插件磁环电感封装尺寸变动对电性能有影响吗

    的影响吗?今天谷景就与大家来一起探讨一下这个问题。 插件磁环电感封装尺寸的改变,首先会对它在电路板上的安装产生直接影响。当然,尺寸变化对它的电性能的影响才是关键。我们可以简单总结一下: 1、尺寸变化对电感值的影响:
    的头像 发表于 09-05 22:36 388次阅读

    单片机的上位机简单开发(4)

    单片机的上位机简单开发(4) 界面设计增加了外部的自定义温度插件,chart图表插件 1.自定义温度插件 打开项目,右键单击工具箱中任意一个控件
    发表于 05-10 11:12 0次下载
    单片机的上位机<b class='flag-5'>简单开发</b>(4)