0

我提出了一个新的 Eclipse Scout 问题:

在我大致基于模板“大纲树和表格表单”的 Scout 应用程序中,我设法通过单击节点来添加(搜索)表单的新实例。我的表单的显示属性配置如下:

  @Override
  protected int getConfiguredDisplayHint() { return DISPLAY_HINT_VIEW; }    
  @Override
  protected String getConfiguredDisplayViewId() { return VIEW_ID_PAGE_DETAIL; }

我没有使用内置方法(例如 setDetailForm(IForm form))将表单添加到页面,但我将它们设置为页面的新属性并通过它们的 FormHandler 启动它们。通过这种方式,我实现了 Scout 渲染器将表单彼此相邻地标记,这正是我想要的。将它们作为表单添加到页面会导致渲染器在激活页面时关闭其他表单,因此一次只显示一个表单。

我对这个实现的问题是:

  1. 只能在 RAP 客户端中重新激活选项卡。对于 RAP 客户端,只需调用表单的 activate() 方法即可重新激活并聚焦相应的选项卡。另一方面,SWT 客户端(我依赖它)似乎根本不关心 activate() 调用,因此不会重新激活页面。所以我正在寻找一种安全简单的方法来说服 SWT 渲染器
    1. 最好在不使用 Scout TabField 的情况下将表单彼此相邻。如上所述,这已经有效,但我不确定这是否是推荐的方式。
    2. 像 RAP 客户端一样重新激活 NodeClick 上的选项卡
  2. 单击关闭选项卡的选项卡时接收事件(SWT 中的 X 按钮,RAP 中的无按钮 -.-)或其他任何内容。我认为这个问题有点宽泛,因为进入特定于产品的流程是 Scout 中的一个普遍问题,而这些流程不属于 Scout 的抽象编程模型的一部分。尽管如此,最好在不调整特定渲染产品的情况下从全球客户端处理这些事件和其他事件。

我的程序 UI 的屏幕截图,以使事情更容易理解: Scout 应用程序的屏幕截图

在屏幕截图中,第五个表单被激活为视图,左侧大纲树中的相应节点也被标记。如您所见,添加了多个表单,它们都属于大纲树中的一个节点。当我单击树中的一个节点时,如果之前没有打开过,我希望激活相应的表单并聚焦它。除此之外,选项卡应保持不变。我不想重新初始化已经存在的表单。


我正在使用 Scout 5.0 版

4

1 回答 1

0

与 SWT 相比,RAP UI 更接近 SWING UI。这就是为什么,开箱即用,不能用xRAP 关闭视图(类似于 Swing)。

对于 SWT,我们依赖 Eclipse 平台提供的工作台。这定义了视图如何在视图堆栈中打开和选项卡。

对我来说,以这种方式使用 scout(SWT 渲染器)是可以的。这里有一个例子:

表单作为视图打开

ComplexForm已打开的表单旁边作为 SWT 视图打开。


我很惊讶听到activate()童子军表格对你不起作用。我遇到了类似的问题,提出了错误 433010,我们决定关闭它,正是因为activate()方法就是解决方案。

ComplexForm form = new ComplexForm();
form.startNew();
form.activate();

我想在任何事件中(单击菜单或节点上的某处),您都可以调用activate()表单实例。

您使用的是哪个版本的 Scout?

也许你可以在你的问题中添加一个截图,因为我错过了你的观点。

于 2015-10-01T11:37:40.637 回答