Имеется GUI-приложение, в котором пользователь может работать со списком некоторых объектов (неважно каких именно).
С ними пользователь может делать некоторые действия, причем как с одиночным объектом, так и с группой объектов.
Список объектов получается из некоторого источника данных и может обновляться по команде пользователя.
Проблема в том, что список может быть очень большим и его обновление может занимать долгое время.
Как, по-вашему, это приложение должно вести себя при обновлении списка, чтобы пользователю было удобно работать?
Вариант 1.
При обновлении списка показываем песочные часы, окно с прогрессбаром и т.п. — в общем, ждем-с, при этом операции с объектами
списка заблокированы.
Чем плохо — пока список обновляется, пользователь ничего полезного сделать не может
Вариант 2.
Обновляем список по частям: подгрузили очередной кусок — добавили в список — отрисовали, и т.д., при этом пользователь может выполнять
операции с объектами из уже подгруженной части списка
Чем плохо — если пользователь, например, нажмет Ctrl+A, непонятно как быть:
2а) Выделить уже подгруженную часть списка — плохо тем, что пользователь, будучи уверенным, что выделил все, выполнит
какую-нибудь групповую опреацию и получит совсем не то что хотел
2б) Ожидать полной загрузки списка — а если пользователь задолбается ждать и захочет отменить "выделить все" — что тогда?
Вариант 3.
То же, что и в.2, но до полного обновления списка разрешаем пользователю только операции с одиночными объектами, а групповые операции блокируем
Чем плохо — непривычно для неподготовленного пользователя: почему одни операции работают, а другие нет?
Может быть, есть еще какие-нибудь разумные варианты?
P.S. Возможность делать групповые операции с полным списком объектов или с большим его подмножеством — принципиальна, так
что вариант "Отказаться от Ctrl+A" не годится