前文Eclipse JFace Binding/绑定 (1)”和Eclipse JFace Binding/绑定 (2)”分别讲述了JavaBean API的事件机制和Eclipse JFace Binding的SWT控件属性和JavaBean属性的绑定。本文是本系列的最后一篇,讲述JFace中TableViewer、TreeViewer和ListViewer的绑定,由于TableViewer比较有代表性,因此使用TableViewer作为示例。
为什么需要WritableList、WritableSet和WritableMap
在做任何事情之前,先要提出一个为什么,“当你保持一颗好奇的心,当你愿意去问“为什么”,而不是一味得不假思索得接受,你便能够从一件事物的不同角度去审度,你就站得更高,看得更远”——这是 《Sandra Lee: 人生很短,做自己喜欢的事 》中的一句话,我很喜欢。
提出这个问题,潜台词肯定是为什么不能直接用List、Set、Map呢?原因在于集合对象不同于普通对象,集合对象包括了一组对象,这组对象本身的属性改变需要监听自然不必说,对象的添加、删除也是需要监听的,因此Java Collection API中的List、Set和Map就不够用了,更何况几何对象中所包括的那一组对象还必须封装到一个WritableValue对象中,不然元素和GUI的绑定又得失效了。
Continue reading