使编辑器不可关闭
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' 操作仍然能够关闭编辑器,因为它不检查可关闭标志并且没有不可关闭编辑器的概念。
我在现在的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' 操作仍然能够关闭编辑器,因为它不检查可关闭标志并且没有不可关闭编辑器的概念。