我们有以下问题:
在我们的Eclipse RCP 4应用程序中,有多个部件,部件是可关闭的。当用户关闭零件时,应该有一个自定义弹出窗口(取决于某个内部零件状态),该弹出窗口询问用户是否确实要关闭零件。 在Eclipse RCP 4中实现它似乎并不容易,或者我们完全监督了某些事情。 我只想简单介绍一下我们尝试过的事情:
我们最后一次尝试是集成自定义部件监听器,简单示例如下所示:
partService.addPartListener(new IPartListener() {
public void partVisible(MPart part) {
}
public void partHidden(MPart part) {
partService.showPart(part, PartState.ACTIVATE);
}
public void partDeactivated(MPart part) {
}
public void partBroughtToTop(MPart part) {
}
public void partActivated(MPart part) {
}
});
这个问题是我们遇到了一个连续的循环。在上一条评论中发布了类似的内容:Detect tab close in Eclipse editor
所以我可以写一些关于这个问题的更多内容,但我认为现在已经足够了。如果您需要更多输入,请给我一个提示。 谢谢你的帮助。
答案 0 :(得分:1)
保存提示是由ISaveHandler
在包含MWindow
的上下文中注册的MPart
生成的。您可以编写自己的ISaveHandler
并在窗口上下文中设置它以替换默认值。
您可能还想在窗口上下文中查看IWindowCloseHandler
。
答案 1 :(得分:1)
感谢greg,这有所帮助,当用户关闭部件时,我能够实现更改弹出窗口。这是我所做的简短描述:
在应用程序启动时注册此处理程序(我刚刚选择了一个在启动时调用的方法):
@Inject
private MWindow window;
...
ISaveHandler saveHandler = new CustomSaveHandler(shell);
window.getContext().set(ISaveHandler.class, saveHandler);
请注意,通过模型处理器进行注册显然不是那么容易,因为模型处理器的调用过早。 (看看:http://www.eclipse.org/forums/index.php/t/369989/)
完整窗口关闭时只需要IWindowCloseHandler,但这不是我们的要求:)。