From e8fa5343a0b13991b38de061927ba3d3f017e688 Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Wed, 6 Jun 2007 15:45:47 +0000 Subject: [PATCH] 1. Fix to not build the non-initialized project 2. small UI fixes --- .../internal/core/CommonBuilder.java | 17 ++++++++ .../cdt/ui/actions/ChangeConfigAction.java | 5 +++ .../eclipse/cdt/ui/newui/AbstractPage.java | 3 ++ .../cdt/ui/newui/CDTPropertyManager.java | 42 ++++++++++++++++++- .../cdt/ui/newui/ManageConfigDialog.java | 4 ++ .../cdt/ui/newui/ManageConfigRunner.java | 16 ++++++- 6 files changed, 85 insertions(+), 2 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java index 44e180c0a74..2d552e1cc04 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/CommonBuilder.java @@ -30,10 +30,12 @@ import org.eclipse.cdt.core.ConsoleOutputStream; import org.eclipse.cdt.core.ErrorParserManager; import org.eclipse.cdt.core.envvar.IEnvironmentVariable; import org.eclipse.cdt.core.envvar.IEnvironmentVariableManager; +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICModelMarker; import org.eclipse.cdt.core.resources.ACBuilder; import org.eclipse.cdt.core.resources.IConsole; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.core.settings.model.util.ListComparator; import org.eclipse.cdt.internal.core.ConsoleOutputSniffer; import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; @@ -466,6 +468,11 @@ public class CommonBuilder extends ACBuilder { return true; } } + + protected boolean isCdtProjectCreated(IProject project){ + ICProjectDescription des = CoreModel.getDefault().getProjectDescription(project, false); + return des != null && !des.isCdtProjectCreating(); + } /** * @see IncrementalProjectBuilder#build @@ -474,6 +481,9 @@ public class CommonBuilder extends ACBuilder { fBuildSet.start(this); IProject project = getProject(); + + if(!isCdtProjectCreated(project)) + return project.getReferencedProjects(); if(VERBOSE) outputTrace(project.getName(), ">>build requested, type = " + kind); //$NON-NLS-1$ @@ -488,6 +498,9 @@ public class CommonBuilder extends ACBuilder { } protected IProject[] build(int kind, IProject project, IBuilder[] builders, boolean isForeground, IProgressMonitor monitor) throws CoreException{ + if(!isCdtProjectCreated(project)) + return project.getReferencedProjects(); + int num = builders.length; IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project); IConfiguration activeCfg = info.getDefaultConfiguration(); @@ -1456,6 +1469,10 @@ public class CommonBuilder extends ACBuilder { protected void clean(IProgressMonitor monitor) throws CoreException { IProject curProject = getProject(); + + if(!isCdtProjectCreated(curProject)) + return; + IBuilder[] builders = ManagedBuilderCorePlugin.createBuilders(curProject, null); for(int i = 0; i < builders.length; i++){ IBuilder builder = builders[i]; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java index 85501d61b5b..99cb0b4f33f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/actions/ChangeConfigAction.java @@ -50,6 +50,7 @@ public class ChangeConfigAction extends Action { while (iter.hasNext()) { IProject prj = (IProject)iter.next(); ICProjectDescription prjd = CDTPropertyManager.getProjectDescription(prj); + boolean changed = false; ICConfigurationDescription[] configs = prjd.getConfigurations(); if (configs != null && configs.length > 0) { for (int i = 0; i < configs.length; i++) { @@ -57,10 +58,14 @@ public class ChangeConfigAction extends Action { configs[i].setActive(); CDTPropertyManager.performOk(null); AbstractPage.updateViews(prj); + changed = true; break; } } } + + if(!changed) + CDTPropertyManager.performCancel(null); } } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java index b50296a9951..82b64959fca 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java @@ -389,6 +389,9 @@ implements public boolean performCancel() { if (! noContentOnPage && displayedConfig) forEach(ICPropertyTab.CANCEL); + + CDTPropertyManager.performCancel(this); + return true; } public void performDefaults() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPropertyManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPropertyManager.java index 9e6ed288d71..a3d1befd1ad 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPropertyManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/CDTPropertyManager.java @@ -98,8 +98,25 @@ public class CDTPropertyManager { */ public static void performOk(Object p) { if (saveDone) return; + performOkForced(p); - } + + if (pages.size() == 0) { + project = null; + prjd = null; + saveDone = false; + } + } + + public static void performCancel(Object p) { + saveDone = true; + + if (pages.size() == 0) { + project = null; + prjd = null; + saveDone = false; + } + } /** * Performs mandatory saving @@ -112,6 +129,12 @@ public class CDTPropertyManager { } catch (CoreException e) { CUIPlugin.getDefault().logErrorMessage(UIMessages.getString("AbstractPage.11") + e.getLocalizedMessage()); //$NON-NLS-1$ } + + if (pages.size() == 0) { + project = null; + prjd = null; + saveDone = false; + } } // pages utilities @@ -137,6 +160,23 @@ public class CDTPropertyManager { } } } + + + if (pages.size() == 0) { +// if(!saveDone){ +// if(prjd != null){ +// saveDone = !prjd.isModified(); +// } +// } + + saveDone = true; + +// if(saveDone){ + project = null; + prjd = null; + saveDone = false; +// } + } } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigDialog.java index c0ff2040d94..decb75e2d45 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigDialog.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigDialog.java @@ -273,4 +273,8 @@ public class ManageConfigDialog extends Dialog { table.setFocus(); updateButtons(); } + + ICProjectDescription getProjectDescription(){ + return des; + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigRunner.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigRunner.java index 90f8a39e8ac..655a1e4ebc8 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigRunner.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/ManageConfigRunner.java @@ -12,8 +12,11 @@ package org.eclipse.cdt.ui.newui; import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.window.Window; +import org.eclipse.cdt.core.model.CoreModel; +import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.ui.CUIPlugin; public class ManageConfigRunner implements IConfigManager { @@ -41,10 +44,21 @@ public class ManageConfigRunner implements IConfigManager { boolean result = false; if (d.open() == Window.OK) { if (doOk) { - CDTPropertyManager.performOk(d.getShell()); +// CDTPropertyManager.performOk(d.getShell()); + ICProjectDescription des = d.getProjectDescription(); + if(des != null){ + try { + CoreModel.getDefault().setProjectDescription(obs[0], des); + } catch (CoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } AbstractPage.updateViews(obs[0]); result = true; + } else if (doOk) { + CDTPropertyManager.performCancel(d.getShell()); } return result; }