使编辑器不可关闭

Make Editor Not-Closeable

我在现在的E4世界里有一个标准的E3编辑器:

public class ProjectEditor extends EditorPart {
     // implement
}

这样注册的:

<extension point="org.eclipse.ui.editors">
   <editor
        class="com.qualitype.gpm.project.rcp.ProjectEditor"
        icon="icons/obj16/project.gif"
        id="com.qualitype.gpm.project.rcp.ProjectEditor"
        name="%view.project" >
   </editor>
</extension>

我希望该编辑器始终处于打开状态。但是扩展点中缺少像视图这样的参数。

此外,对于视图,这会起作用:

public class ProjectPerspective implements IPerspectiveFactory {

    public void createInitialLayout(IPageLayout layout) {
        final IViewLayout projectLayout = layout.getViewLayout(ProjectEditor.ID);
        projectLayout.setCloseable(false);
    }
}

但当然不适合编辑。由于编辑器和视图在技术上是相同的东西(workbench 部分),所以应该是可能的。

如何防止用户关闭我的编辑器?

编辑器在概念上并不意味着可以关闭。它们在特定资源(或其他输入)上打开,并按用户意愿关闭。

如果您需要不可关闭的部件,请使用视图。您可以让视图实现 ISaveable 以使其参与保存生命周期。

您可以通过清除 MPart 可关闭标志来删除编辑器选项卡上的关闭 'X'。您可以在编辑器的 init 方法中执行此操作:

@Override
public void init(IEditorSite site, IEditorInput editorInput) throws PartInitException
{
  super.init(site, editorInput);

  MPart part = getSite().getService(MPart.class);
  part.setCloseable(false);

但是 'File > Close' 操作仍然能够关闭编辑器,因为它不检查可关闭标志并且没有不可关闭编辑器的概念。