Можете ли вы отключить кнопку «Назад» в мастере JFace? - PullRequest
6 голосов
/ 05 сентября 2008

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

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

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

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

Ответы [ 4 ]

11 голосов
/ 05 сентября 2008

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

6 голосов
/ 21 июля 2011

Расширяя ответ Джодонелла:

Отключить кнопку «Назад» сложнее, чем должно быть, из-за неинтуитивного поведения в реализации по умолчанию 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

3 голосов
/ 05 сентября 2008

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

0 голосов
/ 18 сентября 2008

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

...