【问题标题】:Remove "Detach" right click from Eclipse RCP MPartStack从 Eclipse RCP MPartStack 中删除“分离”右键单击
【发布时间】:2020-10-04 09:44:17
【问题描述】:

有没有办法从 MPartStack 的上下文菜单中删除“分离”右键单击?

【问题讨论】:

    标签: java eclipse-rcp e4


    【解决方案1】:

    你可以通过添加标签告诉e4该部分不可拆卸

    NoDetach
    

    到 Application.e4xmi 中的部件(或部件描述符)标签。

    或者您可以使用自定义堆栈渲染器完全替换选项卡菜单。你重写 populateTabMenu 方法:

    public class MyStackRenderer extends StackRenderer
    {
      @Override
      protected void populateTabMenu(Menu menu, MPart part)
      {
         // TODO your menu items
      }
    }
    

    您使用渲染器工厂设置渲染器:

    public class MyRendererFactory extends WorkbenchRendererFactory
    {
      private MyStackRenderer myStackRenderer;
    
      @Override
      public AbstractPartRenderer getRenderer(MUIElement uiElement, Object parent)
      {
        if (uiElement instanceof MPartStack) {
           if (myStackRenderer == null) {
              myStackRenderer = MyStackRenderer();
              initRenderer(myStackRenderer);
           }
    
           return myStackRenderer; 
        }
    
        return super.getRenderer(uiElement, parent);
      }
    }
    
    

    您在产品定义中使用 rendererFactoryUri 告诉 Eclipse 渲染器工厂。

    <extension
          id="product"
          point="org.eclipse.core.runtime.products">
       <product
             .... 
    
          <property
                name="rendererFactoryUri"
                value="bundleclass://xxxxx.MyRendererFactory">
          </property>
    

    【讨论】:

    • NoDetach 位于零件堆栈中的各个零件上,而不是零件堆栈上。堆栈渲染器使用当前部分计算菜单。我在这里测试了 NoDetach,它确实有效。
    猜你喜欢
    • 2019-12-25
    • 1970-01-01
    • 2010-09-12
    • 2021-07-08
    • 1970-01-01
    • 2023-01-11
    • 2019-07-30
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多