diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java index 66cb34f0fd1..7e323f4f552 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/MBSWizardHandler.java @@ -535,11 +535,11 @@ public class MBSWizardHandler extends CWizardHandler { cfgFirst = cfgDes; } mngr.setProjectDescription(project, des); - doPostProcess(project); - doCustom(); + doTemplatesPostProcess(project); + doCustom(project); } - protected void doPostProcess(IProject prj) { + protected void doTemplatesPostProcess(IProject prj) { if(entryInfo == null) return; @@ -648,7 +648,7 @@ public class MBSWizardHandler extends CWizardHandler { return null; } - protected void doCustom() { + protected void doCustom(IProject newProject) { IRunnableWithProgress[] operations = MBSCustomPageManager.getOperations(); if(operations != null) for(int k = 0; k < operations.length; k++) @@ -661,11 +661,21 @@ public class MBSWizardHandler extends CWizardHandler { } } - public void postProcess(IProject newProject) { + public void postProcess(IProject newProject, boolean created) { deleteExtraConfigs(newProject); - doCustom(); + // calls are required only if the project was + // created before for feature. + if (created) { + doTemplatesPostProcess(newProject); + doCustom(newProject); + } } + /** + * Deletes configurations + * + * @param newProject - affected project + */ private void deleteExtraConfigs(IProject newProject) { if (isChanged()) return; // no need to delete if (listener != null && listener.isCurrent()) return; // nothing to delete diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java index fad96e83347..b246ad481fd 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/STDWizardHandler.java @@ -80,9 +80,8 @@ public class STDWizardHandler extends MBSWizardHandler { } mngr.setProjectDescription(project, des); - doPostProcess(project); - // process custom pages - doCustom(); + doTemplatesPostProcess(project); + doCustom(project); } public boolean canCreateWithoutToolchain() { return true; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java index 3c821a6ec04..81495d48f55 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java @@ -181,13 +181,14 @@ implements IExecutableExtension, IWizardWithMemory } public boolean performFinish() { + boolean needsPost = (newProject != null && !isChanged()); // create project if it is not created yet - if (getProject(fMainPage.isCurrent(), true) == null) return false; - fMainPage.h_selected.postProcess(newProject); + if (getProject(fMainPage.isCurrent(), true) == null) + return false; + fMainPage.h_selected.postProcess(newProject, needsPost); try { setCreated(); } catch (CoreException e) { - // TODO log or display a message e.printStackTrace(); return false; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CWizardHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CWizardHandler.java index d03a078b9e8..2549fe7df6f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CWizardHandler.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/CWizardHandler.java @@ -171,9 +171,14 @@ public class CWizardHandler implements Cloneable { /** * Called when Finish button pressed, * even if project was created before. - * @param proj + * + * @param prj - affected project + * @param created - true if the project was created before */ - public void postProcess(IProject proj) {} + public void postProcess(IProject prj, boolean created) { + doTemplatesPostProcess(prj); + doCustom(prj); + } /** * Checks whether this item can be added to Wizard tree @@ -214,4 +219,37 @@ public class CWizardHandler implements Cloneable { } return sb.toString(); } + + /** + * Called after project creation in order to apply + * template-specific settings. + * + * Can be called 2 or more times: + * - each time when user presses button + * - when user presses button. + * If were not invoked, called once. + * + * Since the project is cleared before each method call, + * no need to check whether it has been called before. + * + * @param prj - affected project. + */ +protected void doTemplatesPostProcess(IProject prj) {} + +/** + * Called after project creation in order to apply + * settings from custom pages. + * + * Can be called 2 or more times: + * - each time when user presses button + * - when user presses button. + * If were not invoked, called once. + * + * Since the project is cleared before each doCustom() call, + * no need to check whether it has been called before. + * @param prj - affected project. + */ + +protected void doCustom(IProject prj) {} + }