Как динамически добавлять JFace WizardPage

В настоящее время я пытаюсь реализовать "мастер импорта" для приложения с помощью JFace Wizard.

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

Итак, в конструкторе WizardImport я бы добавил первую страницу, используя:

addPage(new WizardImportSourcePage(data));

На этой странице (WizardImportSourcePage) я хотел бы добавить следующую страницу в зависимости от выбранного источника, например:

btnCsv.addSelectionListener(new SelectionAdapter() {
 @Override
 public void widgetSelected(SelectionEvent arg0) {

 data.getWizard().addPage(new WizardImportSourcePage(data));

 setPageComplete(true);

 }
 });

Как вы можете видеть, все это происходит в соответствующем прослушивателе. К сожалению, это не работает. Мастер не нажал кнопку "Далее", но отображает только кнопку "Готово", поскольку она ничего не знает о следующей странице, пока кнопка не будет нажата. Я уже пытался вызвать updateButtons(), но ничего не изменил.

Итак, какие-либо предложения, как заставить его работать? Каким будет правильный способ создания страниц мастера динамически? Большинство учебных пособий, по-видимому, предполагают, что страницы создаются в начале и только порядок изменяется с помощью getNextPage().

1 ответ

В коде расширения Wizard можно переопределить

public IWizardPage getNextPage(IWizardPage page)

который позволяет вам решить, какая страница будет возвращена следующей, с учетом текущей страницы мастера (также есть getPreviousPage.

licensed under cc by-sa 3.0 with attribution.