Java 从Eclipse RCP MPartStack中删除“分离”右键单击

Java 从Eclipse RCP MPartStack中删除“分离”右键单击,java,eclipse-rcp,e4,Java,Eclipse Rcp,E4,有没有办法从MPartStack的上下文菜单中删除“分离右键单击” 通过添加标记,您可以告诉e4零件是不可拆卸的 节点 添加到Application.e4xmi中的零件或零件描述符标记。 也可以使用自定义堆栈渲染器完全替换选项卡菜单。您可以覆盖populateTabMenu方法: 使用渲染器工厂设置渲染器: public class MyRendererFactory extends WorkbenchRendererFactory { private MyStackRenderer my

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


通过添加标记,您可以告诉e4零件是不可拆卸的

节点 添加到Application.e4xmi中的零件或零件描述符标记。

也可以使用自定义堆栈渲染器完全替换选项卡菜单。您可以覆盖populateTabMenu方法:

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

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);
  }
}

您可以在产品定义中使用RenderFactoryURI向Eclipse介绍渲染器工厂


节点位于零件堆栈中的各个零件上,而不是零件堆栈上。堆栈渲染器使用当前零件计算菜单。我在这里测试了NoDetach,它确实有效。
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);
  }
}