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