Я хотел показать пользователю диалог удаления подтверждения при удалении объектов из Eclipse GMF. Я переопределил createDeleteSemanticCommand в политике редактирования роли компонента для отдельного EditPart, чтобы включить диалог подтверждения удаления. Ниже приведены фрагменты кода, которые я сделал.Несколько подтверждений удаления - Eclipse GMF
/////// СООТВЕТСТВУЮЩИЙ EDIT ЧАСТЬ КЛАСС, где editpolicy установлен
protected void createDefaultEditPolicies() {
installEditPolicy(EditPolicy.COMPONENT_ROLE, new
ComponentRoleEditPolicy());
/////// СООТВЕТСТВУЮЩЕГО 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», выбранных на диаграмме. Как решить эту проблему. Пожалуйста, помогите мне в этом.
Спасибо.
Не уверен, как это сделать правильно, но здесь очень уродливое решение: после первого удаления вы можете установить некоторый статический булевский флаг «doNotAskAgain» и отбросить его на долю секунды позже, используя некоторый поток. –
Да, Thats отлично работает благодаря ниткам и материалам. Но существует ли какой-либо конкретный gmf API eclipse, чтобы включить диалог подтверждения удаления для элемента (ов). Любая помощь в этом? – Logan
По-прежнему нет «правильного» решения, но вы можете обойтись и без потоков, просто запомнив отметку времени последнего удаления и проверки, когда последний выпуск был выпущен перед показом диалога ... –