【问题标题】:e4 RCP: how to tell if a part is showinge4 RCP:如何判断零件是否正在显示
【发布时间】:2016-02-09 19:13:18
【问题描述】:

我正在编写一个 RCP 应用程序,它的应用程序模型可以简化如下:

==================================================
= lpart                ||  rpart1 | rpart2       =
= -------------------- || ---------------------- =
=     <a table>        ||  <some sfuff about     =
=                      ||   the selected item>   =
==================================================
  1. 窗口分为左右两部分栈
  2. 左侧PS包含一个部分,该部分只包含一个表格
  3. 右边的 PS 包含两部分,每部分都会显示表格中所选项目的一些详细信息

问题:

  1. 似乎 Eclipse 正在懒惰地初始化我的部分实现类。如果我在单击选项卡之前在 rpart2 上调用 MPart.getObject(),它会返回 null。我可以让 Eclipse 在启动时初始化我所有的部分实现类吗?
  2. 如何判断 rpart1 和 rpart2 中的哪一个正在显示。我想避免在表的选择发生变化时为这两个部分加载数据,毕竟只有其中一个真正显示出来。

我想要达到的目标:

  1. Whenever an item gets selected, both rpart1 and rpart2 get notified and remember the selection (item id or sth. similar).如果 rpart2 被延迟初始化,那将是不可能的。
  2. 只有当前显示的部分才能获取所需的详细信息。如果某个部分无法判断它是否正在显示,那将是不可能的。
  3. 当其他部分被选中时,它将根据记住的选择获取并显示其数据。嗯,这是我唯一知道的部分。

任何帮助将不胜感激!非常感谢!

【问题讨论】:

    标签: java eclipse rcp e4


    【解决方案1】:

    您可以使用EPartService addPartListener 方法添加一个监听器,该监听器会收到有关所有部件激活(和其他)事件的通知。

    【讨论】:

    • 这可以解决我的第二个问题,但是第一个呢?谢谢!顺便说一句,似乎 MPart.isVisible() 和 MPart.isOnTop() 没有返回正确的值,而是 MPart.isVisible() 总是返回 true 而 MPart.isOnTop() 总是返回 false。我是不是错过了什么。在这里?
    • 我认为 isVisible 值只是代表应用程序模型中的 Visible 设置,而不是该部分实际上是可见的。我不知道 isOnTop 是做什么的。除了第一次渲染之外,我不知道有什么方法可以初始化部件。您可以将选择状态保存在 eclipse 上下文中存储的对象中。
    【解决方案2】:

    我认为EPartService.isPartVisible(MPart)(而不是MPart.isVisible())可以解决您的第一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多