Пишу GUI электронной истории болезни.
GUI — многодокументный. Каждый документ содержит кнопки Save (Принятие изменений), Cancel (Отмена и закрытие документа).
Некоторые документы содержат не только линейные поля, но и списки (как правило 1 список подсущностей).
Пример: редактируемая сущность — история болезни (дата госпитализации, диагноз и т.д.),
списки подсущностей — список событий в истории болезни.
Непонятно как вписать редактирование списка событий в концепцию с Save и Cancel.
Получается, что на форме есть кнопки Save, Cancel и список событий с кнопками Add, Remove.
При нажатии на Add должен открываться новый документ (опять таки с кнопками Save, Cancel), описывающий событие в истории болезни. При его сохранении в первой форме в списке событий появится новое событие.
Непонятно как это соотнести с необходимостью сохранять изменения (1-я форма кнопка Save).
Варианты решения проблемы:
1. Add/Remove должен быть подтвержден Save
2. Вынести список событий в отдельную форму (соответственно со своими кнопками Save, Cancel)
3. Add/Remove не требует Save.
Вариант 1 на мой взгляд крайне непрозрачен: при Add открывается новый документ, нажимая в нем на Save пользователь будет думать, что изменения попадут в БД
Вариант 2 — не хочется плодить документы в MDI.
Склоняюсь к п.3.: визуально разделить документ на 2 части — линейные поля с кнопками Save/Cancel и список с Add/Remove. Подход имеет еще один плюс при реализации корректного параллельного редактирования одной и той же истории болезни. Добавление нового event'а — не будет считаться изменением данной ИБ соответственно врачи смогут не мешая друг-другу добавлять их.