e4自定义部件的savehandler对话框

时间:2017-08-23 04:56:09

标签: java eclipse eclipse-plugin rcp e4

在我的e4应用程序中,我有多个部分,所有部分都包含一个MDirtyable。现在有一个特定的,我想在提示用户保存时显示自定义对话框。 我试图在MWindow上下文中设置一个自定义处理程序,但这将改变所有活动部分的行为,而不仅仅是我感兴趣的部分。有什么方法可以实现这一点吗?我正在考虑只为一部分获取上下文,并更改其中的处理程序,但我不知道这是否可能。提前谢谢。

更新:感谢您的回答。到目前为止,我尝试在保存自定义部件后更改回默认处理程序。这是一些代码:

//custom part
@PostConstruct
public void createComposite(Composite parent, MWindow window) {

    this.windowContext = window.getContext(); //get current context
    this.old = windowContext.get(ISaveHandler.class); //save current handler
    windowContext.set(ISaveHandler.class, new CustomSaveHandler()); //set a custom handler
}

并在保存完成后更改回默认处理程序

@Persist
public void save() {
    dirty.setDirty(false);
    windowContext.set(ISaveHandler.class, old); //switch to old handler
}

因此,当我打开自定义零件,对其进行一些更改然后关闭时,此工作正常。但是如果打开了多个部分,它们都会继承自定义处理程序,直到我关闭自定义部分。 还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

不,在MWindow上下文中查找了保存处理程序,因此您无法仅针对单个部分进行设置。

您必须在其他部分的保存处理程序中重现标准行为。