如何在 nattable 和 Jface 视图之间交叉更新视图

How to cross update of view between nattable and Jface view

Eclipse RCP 视图通信,其中一个视图包含 nattable,另一个视图包含 jface 控件,如按钮、下拉列表。

目前例如有3个view/Editor如下图

View1 - 包含员工详细信息,它是一个 Nattable 和 它的单元格包含字符串、长整型、布尔值、日期值等数据。 每行代表一个数据,其他视图是对应的数据 所选行

View2 - 显示与视图 1 中选定行对应的地址, 用户可以修改view2的数据。

View3 - 显示employee的部门详情,也可以修改

所以所有 3 个视图都显示了一个模型的数据,比如员工

   Employee 
     |_Name 
     |_EmpId
     |_Married
     |_DOJ
     |_Address
         |_Type
         |_City Name
         |_State
         |_PinCode
     |_Department Details
         |_Department
         |_Project
         |_Manager

问题:

我想知道视图 1 和其他视图之间的最佳通信方式是什么

  1. 在 view1 中选择行,然后其他两个视图应相应更新;

  2. 如果 view2/view3 中的任何数据发生变化,那么视图 1 应该收到其他视图中数据变化的通知

  3. 当条件 2 发生时,我想在视图 1 中显示脏行。

与您描述的场景相关的 E4 应用程序中视图间通信的典型方法是使用 ESelectionService 触发处理选择以打开另一个视图,并通过 Eclipse 4 事件进行通信系统.

对于场景一,根据 NatTable 中的选择打开视图,您可以使用 NatTable Eclipse 4 扩展功能 中的E4SelectionListenerILayerListener 将选择转发给 ESelectionService。可以在 NatTable examples.

中找到示例

为了通知视图 1 关于另一个视图的更改,我建议使用 IEventBroker 从 view2/view3 发送事件并在视图 1 中对事件做出反应。这样,视图就会尽可能地解耦。 Eclipse 4 event system 是了解事件系统的良好起点。