databinding
10km
这个作者很懒,什么都没留下…
展开
-
jface databinding:可多选的widget List组件selection项目与java.util.List对象的双向数据绑定
需求说明如下图,一个可多选的List组件,初始表有3个值,希望实现与一个java.util.List对象(保存选中的值)的双向数据绑定。当List组件中选中的内容变化时,java.util.List对象的内容也同步变化。实现Observable对象我们知道,org.eclipse.jface.databinding.swt.WidgetProperties工厂类的items()方法中为CCombo、原创 2017-01-02 17:39:38 · 909 阅读 · 4 评论 -
jface databinding:label provider 实现多列表格(Table)数据绑定的两个途径
显示需求如下图,希望将一组拥有两个字段的表与两列的table绑定在一起,实现自动显示。 在jface viewer中label provider用于提供数据对象到视图对象(viewer)显示内容的数据映射关系。也就是实现将数据模型中的不同字段的内容显示为viewer(如表格Table组件)中的文字或图像。 如下图IBaseLabelProvider是所有label provider的顶层抽象原创 2017-01-06 13:56:02 · 1674 阅读 · 0 评论 -
jface databinding:List,Set,Map对象的Observable代理封装
需求描述对于一个已经存在的集合/映射对象(普通的List,Set,Map,非observable),我们希望把将它转换成一个observable对象,这个observable对象就像是原对象的代理一样,当对observable对象操作(增加删除元素)时,实际是对原对象的操作。 jface为List,Set,Map三种类型提供了对应的三种可写对象WritableList,WritableSet,Wr原创 2017-01-05 14:57:02 · 918 阅读 · 0 评论 -
jface databinding:延迟计算--ComputedValue和WritableList使用的例子
org.eclipse.core.databinding.observable.value.ComputedValue类实现IObservableValue接口,提供对象T的延迟计算特性,它提供了一个抽象方法calculate,实现这个方法就可以实现根据多个可监控对象(IObservableValue)计算更新当前对象的需求。 尼玛,好抽象,我自己都不知道在说什么,还是举个例子吧。 比如我们有一原创 2016-12-21 15:06:23 · 1126 阅读 · 0 评论 -
jface databinding(数据挷定)中的数据转换(IConverter)和数据验证(IValidator )
前几天在做对话框界面过程中,对行文本框中的输入数值需要进行验证,于是对Text组件做了扩展,做了一个可以验证输入的字符串是否为数值的NumText组件,参见 《java SWT:限制数值输入的Text文本框通用组件》,但是在使用过程中发现,这种方式有缺陷,就是如果用户输入非法的字符,结果就是输不进去,界面上不会有报错也不会有任何提示,用户体验不好。 之前对databinding有过简单的了解,知道原创 2016-12-22 00:15:19 · 1459 阅读 · 0 评论 -
jface databinding/PojoBindable实现对POJO对象的支持
POJO对象无法被监控在jface databinding中,将普通的java bean(有get/set方法但没有通过PropertyChangeSupport实现属性监控)定义为POJO对象。 我们可以对POJO对象通过PojoProperties.value(String propertyName)方法提供IObservableValue实例,但返回的PojoValueProperty实例并原创 2016-12-22 12:04:55 · 878 阅读 · 1 评论 -
jface databinding:部分实现POJO对象的监测
在前一篇博文《jface databinding/PojoBindable实现对POJO对象的支持 》中,已经知道直接对POJO对象进行修改,是不能被绑定的UI组件知道的,在上一篇文章中虽然说到PojoBindable这个项目可以解决这个问题,但这个项目并不成熟,所以我没有采用这个方案,而且如果要改造所有的POJO类支持PropertyChangeSupport又实在太麻烦了。 仔细想想我的需求原创 2016-12-23 14:46:53 · 1314 阅读 · 1 评论 -
jface databinding:UpdateValueStrategy(数值更新策略)类详解
在jface databinding(数据绑定框架)中,org.eclipse.core.databinding.UpdateValueStrategy 更新策略类是个比较重要的类,通过了解它可以更容易理解数据绑定的整个框架,起到提纲挈领的作用。 这个类的作用是定义被绑定的源/目标两个可观察值(observable value)之间数据更新、验证、转换的方式。数据更新步骤数据更新步骤分为:原创 2016-12-24 17:52:34 · 1082 阅读 · 0 评论 -
jface databinding:构建一个改进版的通用型数值验证器StringToNumberValidator
jface已经提供了基于AbstractStringToNumberValidator的基本类型数值验证器IValidator 但是在项目实际使用中发现这些验证器有缺点:空字符串被视为合法,可以通过验证,而且一般情况下,我们会视空字符串为无效输入数值解析错误时返回的信息为英文而且太详细,用户体验不好。其实如果用户输入了非数字导致解析错误时只要提示输入无效就可以了,没必要太详细,更不能是英文原创 2016-12-25 11:13:28 · 686 阅读 · 0 评论 -
jface databinding:更简单的ISideEffect实现多目标单边数据绑定塈其原理分析
Eclipse 4.6 提供了名为 ISideEffect的数据绑定工具. ISideEffect可以实现当一个或多个观察对象(IObservable)改变时执行特定代码。 ISideEffect很像一个侦听器,但它却不需要开发者像侦听器那样作任何依附对象的动作(addChangeListener/removeChangeListener)。当被监控的观察对象改变时它会自动反应执行指定的代码。原创 2016-12-25 17:49:15 · 1028 阅读 · 1 评论 -
jface databinding: Radio Button group及ISideEffect绑定数据对象的例子
下图左侧是三个Radio button,设计的要求是选择不同的radio button,右侧的三个group会分别有不同的可见状态(visible),并且将radio button状态与数据对象绑定 下面是用SelectObservableValue来实现数据绑定,并在ISideEffect的帮助下完成右边三个组件的可见状态控制。 // 创建SelectObservableValue原创 2016-12-25 18:25:06 · 1285 阅读 · 0 评论 -
jface databinding: 创建readonly(只读)可观察对象(observable)
java与C++有一点不同:C++有const关键字,使用const关键字,用于指定一个参数、成员变量或函数是只读不可修改的,通过const参数让对象成为readonly的,可以严格禁止外部调用修改对象的内容。而java没有类似的限制,只有一个final指定变量不可以被赋值,但还是可以通过调用变量的方法任意修改变量指向的对象内部状态。也就是说,java没有像C++那样有绝对readonly的限制。原创 2016-12-27 13:17:54 · 779 阅读 · 0 评论 -
jface databinding:使用CheckboxTableViewer实现表中(Set)对象与CheckTable中选中条目数据绑定
上一篇博文《jface databinding:可多选的widget List组件selection项目与java.util.List对象的双向数据绑定》讲述了如何实现List组件的多选项与List数据绑定的问题。 实际使用中觉得用List组件来给用户做多选,用户体验不太好,比如用户可能不知道按下shift或ctrl键才能多选。经过比对,还是觉得用checkTable来实现比较好, 如下图,左上原创 2017-01-03 12:12:03 · 1823 阅读 · 0 评论 -
jface databinding:重写doSetValue方法ComputedValue实现双向多对一的数据绑定
需求说明如下是一个简单的测试对话框,我们希望当”起始日期”按钮为勾选时,数据对象dataBean的date属性为日期组件DateTime选择的值,否则为null. ISideEffect在这个场景中,是两个widget组件的状态绑定到一个数据对象的属性 实现上面的需求,参考我之前的博文《jface databinding:更简单的ISideEffect实现多目标单边数据绑定塈其原理分析》,可以很原创 2017-01-01 11:32:39 · 727 阅读 · 0 评论