在我的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
}
因此,当我打开自定义零件,对其进行一些更改然后关闭时,此工作正常。但是如果打开了多个部分,它们都会继承自定义处理程序,直到我关闭自定义部分。 还有其他想法吗?
答案 0 :(得分:0)
不,在MWindow
上下文中查找了保存处理程序,因此您无法仅针对单个部分进行设置。
您必须在其他部分的保存处理程序中重现标准行为。