Привет всем!
Чисто - общий вопрос ("взагали по загалям"):

Предположим, что производится (периодический или - "по событиям") анализ применимости некоторого набора действий/операций в состояниях системы.
Для каждого из действий (их применимости), получается значение истинности.

Как вы думаете, как будет лучше поступать с элементами Главного Меню и элементами Контекстных/Всплывающих Меню?

1) Не выводить вообще пункты, которые вызывают Действия, не применимые по результатам такого анализа?

2) Делать их недействительными/запрещёнными?

В принципе, первый вариант делает меню компактнее.
Но, в то же время, это может привести к "прыгающему размеру" менюшек. Этто будет неудобно пользователям (особенно - начинающим), которые часто "на автомате" "тыкают" мышкой в привычное, для "мышечной памяти", место.
Кроме того, понятно, что, наряду с пунктами меню, получается, что по этой логике, надо скрывать/делать видимыми и разного рода кнопки, например. Получается эдакий "прыгающий" GUIи его панели. Если, тем более, панели "подстраиваются" под общий размер, определяемый содержимым, то может получится постоянно "мельтешащий" набор контролов на экране.

Второй вариант удобен тем, что предоставляет, на постоянной основе (в смысле расположения и порядка), набор (почти) всех операций, которые теоретически МОГУТ быть вызваны из данного состояния системы/контекста, но показывает явно их применимость в текущий момент времени и состоянии системы.
С другой стороны, сам интерфейс может оказаться настолько "переполненным" контролами и пунктами меню, что, с начала, на просто его изучение и запоминание, "что-где", может затрачиваться огромное количество внимания и интеллектуальных усилий.

Есть и третий вариант.
Когда "исчезают/появляются" только пункты меню, а кнопки и группирующие панели (де)активируются.

Каковы ваши предпочтения и - почему вы на них остановились?
Или вы - в разных типах проектов применяете разные подходы?