/** * Add page to wizard. * * @param page page to add */ public void addPage(@NotNull WizardPage<T> page) { page.setUpdateDelegate(delegate); page.setContext(context); page.init(dataObject); wizardPages.add(page); }
@Override public boolean canComplete() { for (WizardPage<T> page : wizardPages) { if (!page.isCompleted()) { return false; } } return true; } }
@Override public boolean hasPrevious() { for (int i = currentPageIndex - 1; i >= 0; i--) { WizardPage<T> page = wizardPages.get(i); if (!page.canSkip()) { return true; } } return false; }
@Override public void onImporterSelected(ProjectImporterDescriptor importer) { final MutableProjectConfig prevData = wizard.getDataObject(); wizard = getWizardForImporter(importer); final MutableProjectConfig dataObject = wizard.getDataObject(); dataObject.getSource().setType(importer.getId()); // some values should be shared between wizards for different project types dataObject.setName(prevData.getName()); dataObject.setDescription(prevData.getDescription()); WizardPage<MutableProjectConfig> firstPage = wizard.navigateToFirst(); if (firstPage != null) { firstPage.init(dataObject); } WizardPage<MutableProjectConfig> importerPage = wizard.navigateToNext(); importerPage.go(mainPage.getImporterPanel()); } }
@Override public void setUpdateDelegate(@NotNull UpdateDelegate delegate) { this.delegate = delegate; for (WizardPage<T> page : wizardPages) { page.setUpdateDelegate(delegate); } }
private void setPage(@NotNull WizardPage<T> page, int index) { page.setUpdateDelegate(delegate); page.setContext(context); page.init(dataObject); wizardPages.set(index, page); }
@Override public void onEnterKeyPressed() { if (wizard.hasNext() && currentPage.isCompleted()) { onNextClicked(); } else if (wizard.canComplete()) { onImportClicked(); } }
@Override public boolean hasNext() { for (int i = currentPageIndex + 1; i < wizardPages.size(); i++) { WizardPage<T> page = wizardPages.get(i); if (!page.canSkip()) { return true; } } return false; }
@Override public void updateControls() { view.setBackButtonEnabled(false); view.setNextButtonEnabled(wizard.hasNext() && currentPage.isCompleted()); view.setImportButtonEnabled(wizard.canComplete()); }
@Nullable @Override public WizardPage<T> navigateToPrevious() { while (--currentPageIndex >= 0) { final WizardPage<T> page = wizardPages.get(currentPageIndex); if (!page.canSkip()) { return page; } } return null; }
@Override public void updateControls() { view.setPreviousButtonEnabled(wizard.hasPrevious()); view.setNextButtonEnabled(wizard.hasNext() && currentPage.isCompleted()); view.setFinishButtonEnabled(wizard.canComplete()); }
/** Returns next page that may be shown. */ @Nullable private WizardPage<T> getNextPage() { while (++currentPageIndex < wizardPages.size()) { WizardPage<T> page = wizardPages.get(currentPageIndex); if (!page.canSkip()) { return page; } } return null; }