Пишу мастер для приложения Eclipse RCP. После некоторой обработки файла и ввода некоторого пользовательского ввода я не хочу позволять пользователю возвращаться для внесения изменений. На этом этапе они должны либо принять, либо отклонить изменения, которые они собираются внести в систему.
Что я не могу найти, так это вызов метода, который позволяет мне переопределить отображаемые кнопки или возможность пользователя нажать кнопку «Назад». Я бы предпочел, чтобы его там не было или хотя бы отключили.
Кто-нибудь нашел способ сделать это с помощью Мастер JFace и WizardPage?
С точки зрения юзабилити, нарушаю ли я условности волшебников? Стоит ли рассматривать другой подход к проблеме?




Вы можете вернуть значение 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