Можете ли вы отключить кнопку «Назад» в мастере JFace?
Вопрос
Я пишу мастер для приложения Eclipse RCP.После некоторой обработки файла и ввода данных пользователем я не хочу, чтобы пользователь возвращался для внесения изменений.На этом этапе они должны либо принять, либо отклонить изменения, которые они собираются внести в систему.
Чего я не могу найти, так это вызова метода, который позволяет мне переопределить отображаемые кнопки или возможность пользователя нажать кнопку «Назад».Я бы предпочел, чтобы его там не было или хотя бы отключили.
Кто-нибудь нашел способ сделать это с помощью Мастер JFace и Страница мастера?
С точки зрения юзабилити, нарушаю ли я соглашения мастера?Стоит ли мне рассмотреть другой подход к проблеме?
Решение
Вы можете вернуть значение null из метода getPreviousPage() в реализации страницы мастера.
Другие советы
Расширение ответа Джодонелла:
Отключить кнопку «Назад» сложнее, чем должно быть, из-за неинтуитивного поведения реализации 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
С точки зрения пользовательского интерфейса это кажется довольно плохим.Ваши пользователи будут разочарованы, если они допустят ошибку и захотят вернуться и исправить ее, а вы им этого не позволите.Я думаю, что было бы гораздо лучше изменить приложение, чтобы разрешить возврат, а не искать способы предотвратить это.
Невозможно сделать это с помощью стандартных API-интерфейсов мастера JFace.Моя команда достигла этого, написав собственный WizardDialog.Мы сделали это в приложении Eclipse RCP, а не в плагине Eclipse.Отключение кнопки «Назад» нарушает общепринятые правила, но нашим бизнес-аналитикам очень нужна была такая функциональность.