如何刷新显示相同数据的所有ExplorerView?

时间:2012-04-03 21:22:16

标签: netbeans nodes netbeans-platform

什么是最顺畅(设计简单,设计好)在更改后刷新所有数据的方式?我有一个应用程序,其中可能会打开多个显示相同数据的窗口。用户可以在其中一个窗口中编辑一个节点,但我需要在每个视图中刷新该节点(或其子节点)

示例: 我使用TopComponent中的 OutlineView ExplorerView ,它以树形结构显示所有章节。但是我可以多次打开这个窗口(比如MS Word中的“新窗口”,这是对同一数据的另一个“视图”)。当我更改一章的标题时,我需要在任何地方刷新它,在那里可见(在所有扩展节点中)。

我看到一个解决方案,但它有一些优点和缺点: 自己查找并在其中存储所有打开的ExplorerViews的所有打开的根节点。然后在每次编辑时,只需遍历所有打开的根节点并调用它们上的某个方法来重新创建已查看的结构(调用setChildren ...就像第一次显示时一样)。但树视图崩溃了。如果我要创建一些机制,一些我的OutlineView实现,它将记住所有扩展的节点,所以它将重新创建扩展的树(但不是整个树,只是它),它可能需要一些时间,当有太多的数据,对吗?

1 个答案:

答案 0 :(得分:1)

每个视图都使用一组节点构建。如果修改一个节点中的数据,则修改将反映在包含该节点的视图中,但不会反映在其他视图中(而不是其他节点中): - (。

当我构建一个基于NB RCP的应用程序时,我构建了一个model with "entities"。这些实体具有我使用NetBeans Lookup建模的“能力”。这些通常是普通的POJO。

然后,当我想“看到”一个实体时,我为它创建了一个“节点”。 You can have as many nodes you want(尽可能多的“MS Word”视图),但您希望在模型中保留一个“树”。

如果我更改“实体”中的属性,则此更改将传播到侦听它的所有节点。您可能希望看到how to relate 'abilities' with 'actions'