我提出了一个新的 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 渲染器将表单彼此相邻地标记,这正是我想要的。将它们作为表单添加到页面会导致渲染器在激活页面时关闭其他表单,因此一次只显示一个表单。
我对这个实现的问题是:
- 只能在 RAP 客户端中重新激活选项卡。对于 RAP 客户端,只需调用表单的 activate() 方法即可重新激活并聚焦相应的选项卡。另一方面,SWT 客户端(我依赖它)似乎根本不关心 activate() 调用,因此不会重新激活页面。所以我正在寻找一种安全简单的方法来说服 SWT 渲染器
- 最好在不使用 Scout TabField 的情况下将表单彼此相邻。如上所述,这已经有效,但我不确定这是否是推荐的方式。
- 像 RAP 客户端一样重新激活 NodeClick 上的选项卡
- 单击关闭选项卡的选项卡时接收事件(SWT 中的 X 按钮,RAP 中的无按钮 -.-)或其他任何内容。我认为这个问题有点宽泛,因为进入特定于产品的流程是 Scout 中的一个普遍问题,而这些流程不属于 Scout 的抽象编程模型的一部分。尽管如此,最好在不调整特定渲染产品的情况下从全球客户端处理这些事件和其他事件。
在屏幕截图中,第五个表单被激活为视图,左侧大纲树中的相应节点也被标记。如您所见,添加了多个表单,它们都属于大纲树中的一个节点。当我单击树中的一个节点时,如果之前没有打开过,我希望激活相应的表单并聚焦它。除此之外,选项卡应保持不变。我不想重新初始化已经存在的表单。
我正在使用 Scout 5.0 版