多重删除确认-EclipseGMF

多重删除确认-EclipseGMF,eclipse,eclipse-plugin,eclipse-rcp,eclipse-emf,eclipse-gmf,Eclipse,Eclipse Plugin,Eclipse Rcp,Eclipse Emf,Eclipse Gmf,我想在从EclipseGMF中删除对象时向用户显示一个确认删除对话框。我已覆盖特定EditPart的组件角色编辑策略中的createDeleteSemanticCommand,以包含删除确认对话框。下面是我已经完成的代码片段 ///////安装了editpolicy的各个编辑部件类 受保护的void CreateDefaultEditPolicys(){ installEditPolicy(EditPolicy.COMPONENT_角色,新建 ComponentRoleEditPolicy())

我想在从EclipseGMF中删除对象时向用户显示一个确认删除对话框。我已覆盖特定EditPart的组件角色编辑策略中的createDeleteSemanticCommand,以包含删除确认对话框。下面是我已经完成的代码片段

///////安装了editpolicy的各个编辑部件类

受保护的void CreateDefaultEditPolicys(){
installEditPolicy(EditPolicy.COMPONENT_角色,新建
ComponentRoleEditPolicy());

///////各自的EDITPOLICY类,在其中执行自定义删除对话框操作(ComponentRoleEditPolicy)

受保护的命令createDeleteSemanticCommand(GroupRequestDeleteRequest)
{
if(删除GroupRequestViaKeyboard的请求实例){
if(deleteDialog(foo.getName()))
{
返回super.createDeleteSemanticCommand(deleteRequest);
} 
否则{
返回UnexecutableCommand.INSTANCE;
}
}
返回UnexecutableCommand.INSTANCE;
}

//////删除确认方法

公共静态布尔删除对话框(字符串名称){
Shell Shell=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
boolean delete=MessageDialog.openConfirm(shell,“delete”,“确定要删除吗”
+名称+“?”;
返回删除;
}
对于每个不同的编辑部分,我最初编写这段代码是为了请求删除确认。后来,我意识到在图表中选择多个编辑部分并执行删除按钮,我在图表中选择的“n”个部分会得到“n”个删除确认框。如何解决此问题。请帮助我解决此问题


谢谢。

这是我用来解决这个问题的方法

在自定义生成的DeleteAction类中,重写以下方法

// confirm dialog for rightclicking and selecting "Delete from Model"
@Override
public void runWithEvent(Event event) {
    if(deleteDialog("the selected element(s)"))
        super.runWithEvent(event);
}
// Confirm dialog for pressing delete key. 
@Override
public void run() {
    if(deleteDialog("the selected element(s)")) {
        super.run();
    }
}
要在生成的xxxDiagrameEditor类中添加delete键操作

// In the generated configureGraphicalViewer() - Change to @Generated NOT
KeyHandler keyHandler = getDiagramGraphicalViewer().getKeyHandler();
keyHandler.put(KeyStroke.getPressed(SWT.DEL, 127, 0), new DeleteElementAction(this)/*Custom generated delete action*/);
getDiagramGraphicalViewer().setKeyHandler(keyHandler);

添加这些代码后,一切都很顺利。当我们按delete键时,它会请求确认对话框(即使选择了任意数量的元素)并执行所需的操作。此外,当我们右键单击并选择“从模型中删除”时,它会工作。此外,我们不需要组件角色编辑策略。我已将其从
installEditPolicy()
[以及editPolicy文件]中删除.

不确定如何正确执行此操作,但这里有一个非常糟糕的解决方案:在第一次删除后,您可以设置一些静态布尔标志“DonotaskReach”然后在几分之一秒后,使用一些线程将其取消设置。是的,通过线程和其他东西,这可以很好地工作。但是,是否有任何特定的eclipse gmf API,包括元素的删除确认对话框.有什么帮助吗?仍然没有“正确”的解决方案,但是你也可以不使用线程,只需记住上次删除的时间戳,并在显示对话之前检查上次删除是何时发出的。。。