【问题标题】:How to make part tab inactive (disable) in Eclipse RCP?如何在 Eclipse RCP 中使部分选项卡处于非活动状态(禁用)?
【发布时间】:2015-12-07 10:09:48
【问题描述】:

我有 partStack,标签中有很多部分。我想知道如何让标签在不需要时不活动,在需要时激活。

不活动是指可见但我无法单击它的选项卡,它就像禁用功能(例如,它上面的文本是灰色而不是黑色)。

我使用 e4 RCP(带有 Application.e4xmi)。

感谢您的帮助。

【问题讨论】:

  • 这是 e4 RCP(使用 Application.e4xmi)还是兼容 3.x 的 RCP?
  • 我使用 e4 RCP(已更新)。

标签: java eclipse-rcp desktop-application e4


【解决方案1】:

部件堆栈中部件选择的处理由部件堆栈渲染器org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer 处理,该渲染器基本上使用CTabFolder

您可以使用渲染器工厂来覆盖堆栈渲染器see here

您可以扩展现有的StackRenderer 类并覆盖方法以更改其行为。在这种情况下,可能是 hookControllerLogic 方法。但是你必须仔细研究源代码,看看需要做什么。

【讨论】:

    【解决方案2】:

    您可以尝试使用 EPartService 来操作部件,但我认为活动/非活动部件只是表示可见或不可见。

    或者你可以自己手动循环和禁用所有 swt 控件?

    【讨论】:

      【解决方案3】:

      使用渲染器工厂覆盖堆栈渲染器。 扩展现有的 StackRenderer 类并使用空实现覆盖 hookControllerLogic() 或 activate() 方法。

      例子-

      public class MyE4Part extends ContributedPartRenderer {
      
      /*
       * Don't activate the Part on part selection. part should not be gain the focus on any
       * selection on part .
       */
      
      @Override
      public void hookControllerLogic( MUIElement me )
      {
          //Don't do anything.
          //super.hookControllerLogic( me );
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 2020-01-19
        相关资源
        最近更新 更多