Как лучше всего обрабатывать отсутствующие обязательные поля в редакторе Eclipse RCP?

В приложении Eclipse RCP я создаю редактор, в котором некоторые поля являются обязательными.

Если пользователь сохраняет редактор с незаполненными полями тезисов, как лучше всего справиться с этим?

(мое первое предположение - показать диалоговое окно с ошибкой, если эти поля пусты в методе doSave(), но я не уверен, что это способ "затмения" для решения такого рода проблемы)


person paulgreg    schedule 20.03.2009    source источник


Ответы (3)


Я согласен с VonC и отключил бы кнопку «Сохранить», если пользователь заполнил все важные поля. Показ предупреждения о том, какие поля должен заполнить пользователь, очень поможет.

РЕДАКТИРОВАТЬ:

Создайте компонент, который добавил себя в качестве прослушивателя изменений. Когда кто-то изменяет компонент, вы можете проверить правильность ввода. Создайте окно со всеми компонентами самопроверки и добавьте окно в качестве прослушивателя для всех компонентов.

Когда кто-то изменяет компонент, вы можете напрямую проверить правильность ввода, и пользователь может перейти на следующую страницу или сохранить страницу.

В RCP (пример FieldEditorPreferencePage) многие компоненты имеют методы doSave() и isValid(). В isValid() вы можете проверить все компоненты, которые вы можете найти в окне, а в doSave() вы должны проверить состояние isValid(), когда это не делается автоматически, и выполнить некоторые дополнительные действия по сохранению.

person Markus Lausberg    schedule 20.03.2009
comment
Я согласен. Итак, есть ли способ добавить метку или значок к ярлыку? - person paulgreg; 20.03.2009
comment
Я обновил свое сообщение и надеюсь, что вы справитесь с этим, внедрив isValid(). - person Markus Lausberg; 20.03.2009

Если вы рассмотрите какое-то диалоговое окно, например «Создать новый проект Java»,

  • вы просто не можете выполнить какое-либо действие (например, "Далее" или "Готово", пока не заполните одно обязательное поле ("Название проекта")
    Так что это отличается от проверки события doSave().

  • Если это поле недействительно (например, если имя проекта уже существует), в зоне вверху отображается предупреждение.

  • Если поле заполнено правильно, то можно сохранить.

(Примечание: я знаю, что это не редактор, но он может дать вам представление об управлении обязательными полями в eclipse)

http://ds.informatik.uni-marburg.de/MAGE/gdt/images/tutorial/NewJavaProject.png

person VonC    schedule 20.03.2009
comment
Спасибо за этот ответ. Это очень умная идея. Однако я нахожусь не в мастере, а в редакторе (например, в виде редактора для plugin.xml). Итак, у меня нет кнопки в моей форме, но у меня есть кнопка сохранения на панели инструментов (которую, кстати, я не знаю, как отключить, см. вопрос 650775). - person paulgreg; 20.03.2009
comment
Аргх... Я тоже ответил на этот вопрос! Я по-прежнему считаю, что декларативный вариант — не лучший способ управлять состоянием действия сохранения. - person VonC; 20.03.2009
comment
Да, это правда ! Но я хотел бы, чтобы это работало декларативно... Если я не смогу, я воспользуюсь вашим решением. - person paulgreg; 20.03.2009

Вы можете использовать FieldDecorations, чтобы пометить обязательные поля и предоставить визуальную обратную связь, если содержимое поля неверно.

person ftl    schedule 29.05.2009