如何在 Eclipse RCP 中将 TableViewer 绑定到 java.util.List

发布于 2024-09-13 15:44:39 字数 596 浏览 6 评论 0原文

我正在尝试将 TableViewer 绑定到 a

models = List<ModelObject>

,但我并没有真正掌握它的窍门。绑定应该可以通过主从和数据绑定上下文(DataBindingContext)进行,以便我能够仅根据请求将列表(及其元素)的更改写入模型(dbc 设置为 POLICY_ON_REQUEST),即在编辑器的保存操作中。 对于简单的文本字段,这就像一个魅力,但我找不到 TableViewers 的任何类似示例。 当我查看 ViewerSupport 实例的 API 时,我只能绑定它,但不能选择提供 DBC 或主从。这是有效的:

ViewerSupport.bind(aViewer, new WritableList(models, ModelObject.class), BeanProperties.value(ModelObject.class, "name")));

但正如所述,它不允许使用 dbc 或主从。

有没有解决方案,或者 TableViewer 只是不支持数据绑定,因为我打算使用它? 是否有解决方法或我错过的一些 API?

谢谢您提前的答复!

I'm trying to bind a TableViewer to a

models = List<ModelObject>

, but I don't really get the hang of it. The binding should be possible via master-detail and a databinding context (DataBindingContext), so that I'm able to write the changes of the list (and its elements) to the model only on request (dbc being set to POLICY_ON_REQUEST), i.e. in a saving action of an editor.
With simple Text fields this works like a charm, but I can't find any similar example for TableViewers.
When I look at the API for instance of ViewerSupport, then I can only bind it, but without the option of giving a DBC or a master-detail. This works:

ViewerSupport.bind(aViewer, new WritableList(models, ModelObject.class), BeanProperties.value(ModelObject.class, "name")));

But as stated it doesn't allow to use a dbc nor a master-detail.

Is there a solution to that, or does TableViewer just not support databinding as I intend to use it?
Is there a workaround or some API i missed?

Thx for the answers in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清引 2024-09-20 15:44:39

现在我进一步了解了如何使用主从:

tmp = BeansObservables.observeDetailList(masterObservable,
                            "name", ModelObject.class)
ViewerSupport.bind(aViewer, tmp, BeanProperties.value(ModelObject.class, "name")));

问题仍然存在,如何使列表中的更改和列表元素不直接持久化(即 POLICY_ON_REQUEST),以便我可以将它们保存在用户上要求。更具体地说:如何在某处注入 DataBindingContext...

Now that I looked a bit further I figured out how to use master-detail:

tmp = BeansObservables.observeDetailList(masterObservable,
                            "name", ModelObject.class)
ViewerSupport.bind(aViewer, tmp, BeanProperties.value(ModelObject.class, "name")));

The question remains, how to make the changes in the list and the list elements not directly persisting (that is POLICY_ON_REQUEST), so that I can save them on user request. More specifically: How do I inject a DataBindingContext somewhere...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文