1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-22 06:02:11 +02:00

Bug 514244: ability to add custom wizard page prior project creation one

See : https://www.eclipse.org/forums/index.php/t/1084842/

Original (WizardNewProjectCreationPage) getStartingPage() cast within
getMainPageData() method was obviously forcing first wizard page type
... provided basic trick is opening some opportunities more !

Change-Id: Ie9b7c4ef63040df6a419af8348f088be79cc2611
Signed-off-by: cartu38 opendev <cartu38.opendev@gmail.com>
This commit is contained in:
cartu38 opendev 2017-03-21 19:28:58 +01:00 committed by Jonah Graham
parent 2268403e02
commit 6b88578458
2 changed files with 38 additions and 11 deletions

View file

@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2 Bundle-ManifestVersion: 2
Bundle-Name: %pluginName Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.ui; singleton:=true Bundle-SymbolicName: org.eclipse.cdt.managedbuilder.ui; singleton:=true
Bundle-Version: 9.0.0.qualifier Bundle-Version: 9.1.0.qualifier
Bundle-Activator: org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin Bundle-Activator: org.eclipse.cdt.managedbuilder.ui.properties.ManagedBuilderUIPlugin
Bundle-Vendor: %providerName Bundle-Vendor: %providerName
Bundle-Localization: plugin Bundle-Localization: plugin

View file

@ -102,7 +102,7 @@ public class MBSWizardHandler extends CWizardHandler {
protected CDTConfigWizardPage fConfigPage; protected CDTConfigWizardPage fConfigPage;
private IToolChain[] savedToolChains = null; private IToolChain[] savedToolChains = null;
private IWizard wizard; private IWizard wizard;
private IWizardPage startingPage; private IWizardPage newProjectCreationPage;
// private EntryDescriptor entryDescriptor = null; // private EntryDescriptor entryDescriptor = null;
private EntryInfo entryInfo; private EntryInfo entryInfo;
protected CfgHolder[] cfgs = null; protected CfgHolder[] cfgs = null;
@ -346,21 +346,47 @@ public class MBSWizardHandler extends CWizardHandler {
propertyId = val.getId(); propertyId = val.getId();
setWizard(w); setWizard(w);
} }
private void setWizard(IWizard w) { private void setWizard(IWizard w) {
if (w != null) { if (w != null) {
if (w.getStartingPage() instanceof IWizardItemsListListener)
listener = (IWizardItemsListListener)w.getStartingPage();
wizard = w; wizard = w;
startingPage = w.getStartingPage(); for (IWizardPage page : w.getPages()) {
if (page instanceof WizardNewProjectCreationPage) {
newProjectCreationPage = page;
break;
}
}
if (newProjectCreationPage instanceof IWizardItemsListListener)
listener = (IWizardItemsListListener) newProjectCreationPage;
} }
} }
/**
* Gets the starting page.
*
* @return the starting page
*
* @deprecated use {@link #getNewProjectCreationPage()} instead. Starting page is expected to be wizard's
* new project creation page.
*/
@Deprecated
protected IWizardPage getStartingPage(){ protected IWizardPage getStartingPage(){
return startingPage; return newProjectCreationPage;
}
/**
* Gets the new project creation page.
*
* @return the wizard's new project creation page. New project creation page may differ from wizard's
* starting page.
* @since 9.1
*/
protected IWizardPage getNewProjectCreationPage() {
return newProjectCreationPage;
} }
public Map<String, String> getMainPageData() { public Map<String, String> getMainPageData() {
WizardNewProjectCreationPage page = (WizardNewProjectCreationPage)getStartingPage(); WizardNewProjectCreationPage page = (WizardNewProjectCreationPage) getNewProjectCreationPage();
Map<String, String> data = new HashMap<String, String>(); Map<String, String> data = new HashMap<String, String>();
String projName = page.getProjectName(); String projName = page.getProjectName();
projName = projName != null ? projName.trim() : EMPTY_STR; projName = projName != null ? projName.trim() : EMPTY_STR;
@ -452,7 +478,7 @@ public class MBSWizardHandler extends CWizardHandler {
ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)getWizard(); ICDTCommonProjectWizard wz = (ICDTCommonProjectWizard)getWizard();
MBSCustomPageManager.init(); MBSCustomPageManager.init();
MBSCustomPageManager.addStockPage(getStartingPage(), CDTMainWizardPage.PAGE_ID); MBSCustomPageManager.addStockPage(getNewProjectCreationPage(), CDTMainWizardPage.PAGE_ID);
MBSCustomPageManager.addStockPage(getConfigPage(), CDTConfigWizardPage.PAGE_ID); MBSCustomPageManager.addStockPage(getConfigPage(), CDTConfigWizardPage.PAGE_ID);
// load all custom pages specified via extensions // load all custom pages specified via extensions
@ -626,7 +652,8 @@ public class MBSWizardHandler extends CWizardHandler {
if(entryInfo == null) if(entryInfo == null)
return; return;
Template template = entryInfo.getInitializedTemplate(getStartingPage(), getConfigPage(), getMainPageData()); Template template = entryInfo.getInitializedTemplate(getNewProjectCreationPage(), getConfigPage(),
getMainPageData());
if(template == null) if(template == null)
return; return;
@ -651,7 +678,7 @@ public class MBSWizardHandler extends CWizardHandler {
@Override @Override
public IWizardPage getSpecificPage() { public IWizardPage getSpecificPage() {
return entryInfo.getNextPage(getStartingPage(), getConfigPage()); return entryInfo.getNextPage(getNewProjectCreationPage(), getConfigPage());
} }
/** /**
@ -872,7 +899,7 @@ public class MBSWizardHandler extends CWizardHandler {
if (!getConfigPage().isCustomPageComplete()) if (!getConfigPage().isCustomPageComplete())
return false; return false;
if(!entryInfo.canFinish(startingPage, getConfigPage())) if(!entryInfo.canFinish(newProjectCreationPage, getConfigPage()))
return false; return false;
if (customPages != null) if (customPages != null)