2008-09-05 3 views
6

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

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

Кто-нибудь нашел способ сделать это, используя JFace Wizard и WizardPage?

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

ответ

11

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

3

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

0

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

6

Развивая ответ 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

Смежные вопросы