Если применить прилагающийся патч - то будет 2 проблемы:
1) Некоторые команды (может даже большинство) не восстанавливаются корректно, например удаление элемента. Визуально он возвращается, но если переоткрыть БП - его не будет. Связано это видимо с тем что в коде (ru.runa.gpd.editor.graphiti.update.DeleteElementFeature) производятся прямые дейтсвия над моделью, в обход стека комманд GEF. Нужно везде использовать существующие команды из пакета ru.runa.gpd.editor.gef.command - должно решить проблему.
2) Если при открытии БП нажать Ctrl+Z - то всё очищается
По п.1)выяснил что недостаточно подключить стек команд GEF и существующие команды типа ru.runa.gpd.editor.gef.command.NodeDeleteCommand, потому что реализация org.eclipse.graphiti.ui.internal.editor.GFCommandStack работает как-то по-другому (в отличие от org.eclipse.gef.commands.CommandStack).
Нужно либо разобраться с EMF, либо с org.eclipse.graphiti.pattern.ICustomUndoablePattern
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Может быть полезно:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=389380
https://bugs.eclipse.org/bugs/show_bug.cgi?id=412877
Если применить прилагающийся патч - то будет 2 проблемы:
1) Некоторые команды (может даже большинство) не восстанавливаются корректно, например удаление элемента. Визуально он возвращается, но если переоткрыть БП - его не будет. Связано это видимо с тем что в коде (ru.runa.gpd.editor.graphiti.update.DeleteElementFeature) производятся прямые дейтсвия над моделью, в обход стека комманд GEF. Нужно везде использовать существующие команды из пакета ru.runa.gpd.editor.gef.command - должно решить проблему.
2) Если при открытии БП нажать Ctrl+Z - то всё очищается
По п.1)выяснил что недостаточно подключить стек команд GEF и существующие команды типа ru.runa.gpd.editor.gef.command.NodeDeleteCommand, потому что реализация org.eclipse.graphiti.ui.internal.editor.GFCommandStack работает как-то по-другому (в отличие от org.eclipse.gef.commands.CommandStack).
Нужно либо разобраться с EMF, либо с org.eclipse.graphiti.pattern.ICustomUndoablePattern
[r6146] - бранч для работ над стеком команд graphiti
Related
Commit: [r6146]
[r6147] - применение патча включающего ctrl+z
Related
Commit: [r6147]
[r6149] - имплементация undo через org.eclipse.graphiti.features.ICustomUndoableFeature
Related
Commit: [r6149]
Undo and Redo сейчас реализовано не для всех операций. - Только для удаления. Надо будет доделать.