1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug # 219950 : TemplateEngine: Changes made to wizard fields are lost if Advanced Settings is first pressed

This commit is contained in:
Oleg Krasilnikov 2008-02-26 14:38:39 +00:00
parent 364c506b26
commit 69f1f56382
4 changed files with 62 additions and 14 deletions

View file

@ -535,11 +535,11 @@ public class MBSWizardHandler extends CWizardHandler {
cfgFirst = cfgDes; cfgFirst = cfgDes;
} }
mngr.setProjectDescription(project, des); mngr.setProjectDescription(project, des);
doPostProcess(project); doTemplatesPostProcess(project);
doCustom(); doCustom(project);
} }
protected void doPostProcess(IProject prj) { protected void doTemplatesPostProcess(IProject prj) {
if(entryInfo == null) if(entryInfo == null)
return; return;
@ -648,7 +648,7 @@ public class MBSWizardHandler extends CWizardHandler {
return null; return null;
} }
protected void doCustom() { protected void doCustom(IProject newProject) {
IRunnableWithProgress[] operations = MBSCustomPageManager.getOperations(); IRunnableWithProgress[] operations = MBSCustomPageManager.getOperations();
if(operations != null) if(operations != null)
for(int k = 0; k < operations.length; k++) 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); deleteExtraConfigs(newProject);
doCustom(); // calls are required only if the project was
// created before for <Advanced Settings> feature.
if (created) {
doTemplatesPostProcess(newProject);
doCustom(newProject);
}
} }
/**
* Deletes configurations
*
* @param newProject - affected project
*/
private void deleteExtraConfigs(IProject newProject) { private void deleteExtraConfigs(IProject newProject) {
if (isChanged()) return; // no need to delete if (isChanged()) return; // no need to delete
if (listener != null && listener.isCurrent()) return; // nothing to delete if (listener != null && listener.isCurrent()) return; // nothing to delete

View file

@ -80,9 +80,8 @@ public class STDWizardHandler extends MBSWizardHandler {
} }
mngr.setProjectDescription(project, des); mngr.setProjectDescription(project, des);
doPostProcess(project); doTemplatesPostProcess(project);
// process custom pages doCustom(project);
doCustom();
} }
public boolean canCreateWithoutToolchain() { return true; } public boolean canCreateWithoutToolchain() { return true; }

View file

@ -181,13 +181,14 @@ implements IExecutableExtension, IWizardWithMemory
} }
public boolean performFinish() { public boolean performFinish() {
boolean needsPost = (newProject != null && !isChanged());
// create project if it is not created yet // create project if it is not created yet
if (getProject(fMainPage.isCurrent(), true) == null) return false; if (getProject(fMainPage.isCurrent(), true) == null)
fMainPage.h_selected.postProcess(newProject); return false;
fMainPage.h_selected.postProcess(newProject, needsPost);
try { try {
setCreated(); setCreated();
} catch (CoreException e) { } catch (CoreException e) {
// TODO log or display a message
e.printStackTrace(); e.printStackTrace();
return false; return false;
} }

View file

@ -171,9 +171,14 @@ public class CWizardHandler implements Cloneable {
/** /**
* Called when Finish button pressed, * Called when Finish button pressed,
* even if project was created before. * 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 * Checks whether this item can be added to Wizard tree
@ -214,4 +219,37 @@ public class CWizardHandler implements Cloneable {
} }
return sb.toString(); 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 <Advanced Settings> button
* - when user presses <Finish> button.
* If <Adv. settings> 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 <Advanced Settings> button
* - when user presses <Finish> button.
* If <Adv. settings> 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) {}
} }