/** Creates or returns import wizard for the specified importer. */ private ImportWizard getWizardForImporter(@NotNull ProjectImporterDescriptor importer) { if (wizardsCache.containsKey(importer)) { return wizardsCache.get(importer); } final ImportWizardRegistrar wizardRegistrar = wizardRegistry.getWizardRegistrar(importer.getId()); if (wizardRegistrar == null) { // should never occur throw new IllegalStateException( "WizardRegistrar for the importer " + importer.getId() + " isn't registered."); } List<Provider<? extends WizardPage<ProjectConfigDto>>> pageProviders = wizardRegistrar.getWizardPages(); final ImportWizard importWizard = createDefaultWizard(); for (Provider<? extends WizardPage<ProjectConfigDto>> provider : pageProviders) { importWizard.addPage(provider.get(), 1, false); } wizardsCache.put(importer, importWizard); return importWizard; }
@Override public void onImporterSelected(ProjectImporterDescriptor importer) { final ProjectConfigDto prevData = wizard.getDataObject(); wizard = getWizardForImporter(importer); final ProjectConfigDto 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<ProjectConfigDto> firstPage = wizard.navigateToFirst(); if (firstPage != null) { firstPage.init(dataObject); } WizardPage<ProjectConfigDto> importerPage = wizard.navigateToNext(); importerPage.go(mainPage.getImporterPanel()); }