首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Eclipse-RAP应用程序中发生验证错误时禁用保存按钮

在Eclipse-RAP应用程序中发生验证错误时禁用保存按钮
EN

Stack Overflow用户
提问于 2011-01-30 03:57:36
回答 1查看 463关注 0票数 0

我们在RAP中使用Eclipse API,application.This使用Eclipse Modeling框架。当页面被编辑时,Model变为Dirty,因此,Save Button被启用。

在我们的编辑器页面中,当页面中出现错误时,我们将编辑器页面的验证标志设置为false,这将反过来在page.Then上显示红色标记,通常保存按钮也会变为启用状态。

但是,我想改变这个behavior.When一些错误标记出现在页面上,我不想启用保存按钮,.It不应该允许用户在错误阶段保存模型。保存按钮应该被禁用,我如何才能做到这一点。请澄清我的疑虑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-30 04:41:51

EMF生成的编辑器使用命令来触发编辑器的PROP_DIRTY。如果触发此属性,底层框架将向编辑器#isDirty方法询问脏状态。这是你可以实现你的逻辑的地方。

代码语言:javascript
复制
@Override
public boolean isDirty() {
    Diagnostic diagnostic = validateMyModel();
    return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded() && diagnostic.getSeverity() == Diagnostic.OK;
}

这种情况没有涵盖用例,即当用户在模型上进行无效编辑时,编辑器可能已经脏了。

但这不是最好的方式。因为如果用户关闭编辑器,模型的所有更改都会丢失,没有任何通知(因为缺少脏标志)。因此,他可能做了100次有效的修改,1次无效,并丢失了更改后的模型。

如果用户想要保存对话框,更好的方法是显示一条警告消息。如果对话框中存在错误,编辑器无法将其状态从脏更改为非脏,用户必须这样做

  • 更正编辑器中的所有错误,并丢失

中的所有更改

要实现这一点,您必须在doSave(IProgressMonitor progressMonitor)方法中实现一个显示错误的对话框。更棘手的部分是覆盖关闭脏编辑器的默认行为。工作台将显示一个对话框,其中包含Yes、No和Cancel。要覆盖此行为,必须在编辑器中实现接口org.eclipse.ui.ISaveablePart2以覆盖promptToSaveOnClose()方法。在此方法中,必须再次使用您的逻辑来检查模型中的错误。如果有错误,这个方法必须返回ISaveablePart2.CANCEL,这样只要脏模型中有错误,编辑器就不能关闭。

HTH汤姆

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4839083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档