如何阻止Eclipse RCP中的编辑器关闭

3
我正在开发一个基于Eclipse的RCP,我们需要防止用户关闭其中一个打开的编辑器。
期望的行为是:
1. 用户单击编辑器窗口中的X或按下“CTRL+W”。 2. 弹出对话框,显示:“如果您关闭此编辑器,您的活动将停止。是否要继续?” 3. 如果他们点击是,则关闭,否则保持打开状态。
噢,还有,这个是否可能实现?
谢谢, gk
3个回答

6

我考虑过“肮脏”方法,但不想让用户看到肮脏标志。也许我可以有两个肮脏标志,一个仅用于确保它不关闭,另一个用于实际肮脏度。 - GreenKiwi
1
@GreenKiwi:两个“脏”状态可能可行,但需要您在使用自己的ISaveablePart实现时进行一些专门化处理。 - VonC
我觉得我最终会找到另一种方法来完成这个任务,而不是试图保持编辑器开启。当我们试图让一个框架做一些它通常不喜欢做的事情时,问题总是会悄悄地出现。谢谢。 - GreenKiwi
1
@GreenKiwi: 在Eclipse中,任务与编辑器是独立运行的。对我来说,一个编辑器可以显示正在运行的任务的详细信息,提供设置和启动任务的方式等是合理的。但是编辑器并不是任务本身;任务有自己的生命周期,并且可以在Eclipse的“进度”视图中显示。(如果编辑器就是一个任务,那么当某人右键点击编辑器选项卡并选择“新建编辑器”时会发生什么呢?)如果你的用户很难找到“进度”视图,可以将其添加到默认透视图中,在任务启动时显示出来等。 - Woody Zenfell III

4
您可以在此取消保存。
@Override
public void doSave(IProgressMonitor monitor) {

通过调用
monitor.setCanceled(true);

EditorPart 实现中。

1

虽然不是直接相关的,但我正在寻找一种防止编辑器关闭的方法,并发现了这个小技巧,希望能有所帮助。

page.addPartListener(new IPartListener2() {
    // [...]
    @Override
    public void partClosed(IWorkbenchPartReference partRef) {
        try {
            page.openEditor(input, id);
        } catch (PartInitException e) {
            e.printStackTrace();
        }
    }
});

这样做不行,因为它仍然在技术上处置旧编辑器...所以如果您处置编辑器中的任何内容,就会出现错误。 - ssnyder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接