Eclipse GMF からオブジェクトを削除するときに、削除の確認ダイアログをユーザーに表示したいと考えていました。特定の EditPart のコンポーネント ロール編集ポリシーで createDeleteSemanticCommand をオーバーライドして、削除確認ダイアログを含めました。以下は、私が行ったコードスニペットです。
/////// editpolicy がインストールされている RESPECTIVE EDIT PART CLASS
protected void createDefaultEditPolicies() {
installEditPolicy(EditPolicy.COMPONENT_ROLE, new
ComponentRoleEditPolicy());
/////// RESPECTIVE EDITPOLICY CLASS、カスタム削除ダイアログ操作が行われる場所 (ComponentRoleEditPolicy)
protected Command createDeleteSemanticCommand(GroupRequest deleteRequest)
{
if(deleteRequest instanceof GroupRequestViaKeyboard) {
if(deleteDialog(foo.getName()))
{
return super.createDeleteSemanticCommand(deleteRequest);
}
else {
return UnexecutableCommand.INSTANCE;
}
}
return UnexecutableCommand.INSTANCE;
}
////// 削除確認方法
public static boolean deleteDialog(String name) {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
boolean delete = MessageDialog.openConfirm(shell, "Delete", "Are you sure you want to delete "
+ name + " ?");
return delete;
}
編集部分ごとに、最初にこのコードを作成して、削除の確認を求めました。後で、ダイアグラムで複数の編集パーツを選択して削除ボタンを実行すると、ダイアグラムで選択された 'n' 個のピースに対して 'n' 個の削除確認ボックスが表示されることに気付きました。この問題を解決する方法。これで私を助けてください。
ありがとう。