From a032fbd206134de5bf0c16e29e28c9d48f9f0344 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Fri, 8 Jun 2007 16:00:45 +0000 Subject: [PATCH] 1. Fix NPE in the New Project Wizard 2. Fix to [Bug 189125] [New project model] Stroage modules don't get copied 3. Fix to build path settings --- .../managedbuilder/internal/core/Builder.java | 56 +++++++++++++------ .../ConfigurationDataProvider.java | 6 ++ .../ui/properties/BuilderSettingsTab.java | 3 +- .../ui/wizards/MBSWizardHandler.java | 2 +- .../ui/wizards/STDWizardHandler.java | 2 +- .../model/CProjectDescriptionBasicTests.java | 24 +++++++- .../model/CConfigurationDescription.java | 5 +- .../model/CConfigurationSpecSettings.java | 6 ++ .../model/CProjectDescriptionManager.java | 6 ++ 9 files changed, 87 insertions(+), 23 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java index 58ce88063cc..82eacbd8861 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java @@ -1693,41 +1693,65 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider } public String getBuildPathAttribute(){ + return getBuildPathAttribute(true); + } + + public String getBuildPathAttribute(boolean querySuperClass){ if(buildPath == null){ - if(superClass != null){ - return ((Builder)superClass).getBuildPathAttribute(); + if(querySuperClass && superClass != null){ + return ((Builder)superClass).getBuildPathAttribute(true); } } return buildPath; } public void setBuildPath(String path){ + setBuildPathAttribute(path); + } + + public void setBuildPathAttribute(String path){ buildPath = path; setDirty(true); } public String getBuildPath(){ + if(isManagedBuildOn()) + return getDefaultBuildPath(); + String path = getBuildPathAttribute(); if(path == null){ - boolean initBuildPathVar = false; - Configuration cfg = (Configuration)getConfguration(); - if(cfg != null && !cfg.isPreference()){ + path = getDefaultBuildPath(); +// if(isManagedBuildOn() && !isExtensionElement()) { +// buildPath = path; +// } + } + return path; + } + + public String getDefaultBuildPath(){ + Configuration cfg = (Configuration)getConfguration(); + String path = null; + if(cfg != null){ + if(isManagedBuildOn()){ + path = cfg.getName(); + } + + if(!isExtensionElement() && !cfg.isPreference()){ IProject project = cfg.getOwner().getProject(); - IPath projPath = project.getFullPath(); - if(isManagedBuildOn()){ - path = projPath.append(cfg.getName()).toString(); - initBuildPathVar = !isExtensionBuilder; - } else { - path = projPath.toString(); - } + IPath buildPath = project.getFullPath(); IStringVariableManager mngr = VariablesPlugin.getDefault().getStringVariableManager(); + if(path != null) + buildPath = buildPath.append(path); + + path = buildPath.toString(); path = mngr.generateVariableExpression("workspace_loc", path); //$NON-NLS-1$ - if(initBuildPathVar) - buildPath = path; - } else { - path = ""; //$NON-NLS-1$ } } + + if(path == null){ + path = ""; //$NON-NLS-1$ + } + return path; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java index dc9187c5b8c..3da6ce0b9ce 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/dataprovider/ConfigurationDataProvider.java @@ -41,6 +41,7 @@ import org.eclipse.cdt.managedbuilder.core.ITool; import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin; +import org.eclipse.cdt.managedbuilder.internal.core.Builder; import org.eclipse.cdt.managedbuilder.internal.core.BuilderFactory; import org.eclipse.cdt.managedbuilder.internal.core.Configuration; import org.eclipse.cdt.managedbuilder.internal.core.ISettingsChangeListener; @@ -106,6 +107,11 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem rootElement.setAttribute(VERSION_ATTRIBUTE, ManagedBuildManager.getVersion().toString()); ICStorageElement cfgElemen = rootElement.createChild(IConfiguration.CONFIGURATION_ELEMENT_NAME); Configuration cfg = (Configuration)appliedCfg.getConfiguration(); + Builder b = (Builder)cfg.getEditableBuilder(); + if(b != null && b.isManagedBuildOn() && b.getBuildPathAttribute(false) == null){ + String bPath = b.getDefaultBuildPath(); + b.setBuildPathAttribute(bPath); + } // cfg.setConfigurationDescription(des); // ManagedBuildManager.performValueHandlerEvent(cfg, IManagedOptionValueHandler.EVENT_APPLY); cfg.serialize(cfgElemen); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java index 7cff6a25a5a..4b8a6ca4050 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuilderSettingsTab.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.managedbuilder.ui.properties; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.managedbuilder.core.IBuilder; import org.eclipse.cdt.managedbuilder.core.IConfiguration; +import org.eclipse.cdt.managedbuilder.internal.core.Builder; import org.eclipse.cdt.managedbuilder.internal.core.Configuration; import org.eclipse.cdt.ui.newui.AbstractCPropertyTab; import org.eclipse.cdt.ui.newui.TriButton; @@ -296,7 +297,7 @@ public class BuilderSettingsTab extends AbstractCBuildPropertyTab { b2.setParallelizationNum(b1.getParallelizationNum()); if (b2.canKeepEnvironmentVariablesInBuildfile()) b2.setKeepEnvironmentVariablesInBuildfile(b1.keepEnvironmentVariablesInBuildfile()); - b2.setBuildPath(null); + ((Builder)b2).setBuildPath(((Builder)b1).getBuildPathAttribute()); b2.setAutoBuildEnable((b1.isAutoBuildEnable())); b2.setBuildAttribute(IBuilder.BUILD_TARGET_AUTO, (b1.getBuildAttribute(IBuilder.BUILD_TARGET_AUTO, EMPTY_STR))); 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 a3006c3c5c7..45ed8c99b33 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 @@ -95,7 +95,7 @@ public class MBSWizardHandler extends CWizardHandler { private IWizardPage startingPage; // private EntryDescriptor entryDescriptor = null; private EntryInfo entryInfo; - private CfgHolder[] cfgs = null; + protected CfgHolder[] cfgs = null; protected static final class EntryInfo { private SortedMap tcs; 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 185d4107c1c..3d9062b95cc 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 @@ -55,7 +55,7 @@ public class STDWizardHandler extends MBSWizardHandler { ManagedProject mProj = new ManagedProject(des); info.setManagedProject(mProj); - CfgHolder[] cfgs = fConfigPage.getCfgItems(defaults); + cfgs = fConfigPage.getCfgItems(defaults); for (int i=0; i