Можете ли вы отключить кнопку возврата в мастере JFace?

Пишу мастер для приложения Eclipse RCP. После некоторой обработки файла и ввода некоторого пользовательского ввода я не хочу позволять пользователю возвращаться для внесения изменений. На этом этапе они должны либо принять, либо отклонить изменения, которые они собираются внести в систему.

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

Кто-нибудь нашел способ сделать это с помощью Мастер JFace и WizardPage?

С точки зрения юзабилити, нарушаю ли я условности волшебников? Стоит ли рассматривать другой подход к проблеме?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
4 356
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете вернуть значение null из метода getPreviousPage () в реализации страницы мастера.

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

Невозможно сделать это с помощью стандартных API-интерфейсов мастера JFace. Моя команда достигла этого, написав собственный WizardDialog. Мы сделали это в приложении Eclipse RCP, а не в плагине eclipse. Отключение кнопки «Назад» нарушает общепринятые правила, но нашим бизнес-аналитикам действительно нужна была функциональность.

Расширяя ответ jodonell:

Отключить кнопку «Назад» сложнее, чем следовало бы, из-за неинтуитивного поведения в реализации WizardPage.getPreviousPage () по умолчанию. Вы можете вызвать setPreviousPage (null), а getPreviousPage () по-прежнему возвращает предыдущую страницу. Вам нужно переопределить реализацию getPreviousPage (), чтобы отключить кнопку возврата:

public abstract class MyWizardPage extends WizardPage {
    private boolean backButtonEnabled = true;

    public void setBackButtonEnabled(boolean enabled) {
        backButtonEnabled = enabled;
        getContainer().updateButtons();
    }

    @Override
    public IWizardPage getPreviousPage() {
        if (!backButtonEnabled) {
            return null;
        }
        return super.getPreviousPage();
    }
}

В моем блоге есть еще несколько советов и приемов мастера JFace:

http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html

Другие вопросы по теме