private void initModuleWizard( final Project project, final ModulesProvider modulesProvider, @Nullable final String defaultPath) { myWizardContext = new WizardContext(project); if (defaultPath != null) { myWizardContext.setProjectFileDirectory(defaultPath); myWizardContext.setProjectName( defaultPath.substring( FileUtil.toSystemIndependentName(defaultPath).lastIndexOf("/") + 1)); } myWizardContext.addContextListener( new WizardContext.Listener() { public void buttonsUpdateRequested() { updateButtons(); } public void nextStepRequested() { doNextAction(); } }); myRootStep = new ProjectCreateModeStep(defaultPath, myWizardContext) { protected void update() { updateButtons(); } }; addStep(myRootStep); for (WizardMode mode : myRootStep.getModes()) { appendSteps(mode.getSteps(myWizardContext, modulesProvider)); } init(); }
@Override public void updateDataModel() { myWizardContext.setProjectBuilder(myModuleBuilder); myWizardContext.setProjectName(myNamePathComponent.getNameValue()); myWizardContext.setProjectFileDirectory(myNamePathComponent.getPath()); myFormatPanel.updateData(myWizardContext); if (myModuleBuilder != null) { final String moduleName = getModuleName(); myModuleBuilder.setName(moduleName); myModuleBuilder.setModuleFilePath( FileUtil.toSystemIndependentName(myModuleFileLocation.getText()) + "/" + moduleName + ModuleFileType.DOT_DEFAULT_EXTENSION); myModuleBuilder.setContentEntryPath(FileUtil.toSystemIndependentName(getModuleContentRoot())); if (myModuleBuilder instanceof TemplateModuleBuilder) { myWizardContext.setProjectStorageFormat(StorageScheme.DIRECTORY_BASED); } } if (mySettingsStep != null) { mySettingsStep.updateDataModel(); } }
/** * Applies external system-specific settings like project files location etc to the given context. * * @param context storage for the project/module settings. */ public void applyProjectSettings(@NotNull WizardContext context) { if (myExternalProjectNode == null) { assert false; return; } context.setProjectName(myExternalProjectNode.getData().getName()); context.setProjectFileDirectory( myExternalProjectNode.getData().getIdeProjectFileDirectoryPath()); applyExtraSettings(context); }