1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-05 08:46:02 +02:00

Core fix for [Bug 203160] no warning message for unsupported configuration -

Configuration status info (tool-chain support) exposed to the core
This commit is contained in:
Mikhail Sennikovsky 2007-09-14 10:40:09 +00:00
parent 772175ca5d
commit dc96be8fcc
11 changed files with 117 additions and 1 deletions

View file

@ -11,6 +11,7 @@
package org.eclipse.cdt.managedbuilder.internal.dataprovider;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICSettingBase;
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
@ -26,6 +27,7 @@ import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.internal.core.Configuration;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@ -151,4 +153,18 @@ public class BuildConfigurationData extends CConfigurationData {
}
}
}
public CConfigurationStatus getStatus() {
int flags = 0;
String msg = null;
if(!fCfg.isSupported()){
flags |= CConfigurationStatus.TOOLCHAIN_NOT_SUPPORTED;
msg = DataProviderMessages.getString("BuildConfigurationData.0"); //$NON-NLS-1$
}
if(flags != 0)
return new CConfigurationStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), flags, msg, null);
return CConfigurationStatus.CFG_STATUS_OK;
}
}

View file

@ -22,3 +22,4 @@ ProjectConverter.6=the project conversion failed
ProjectConverter.7=targets conversion
ProjectConverter.8=the project conversion failed due to unknown reason
ProjectConverter.9=the given project is not a valid CDT project
BuildConfigurationData.0=The configuration support is not installed on the system

View file

@ -28,6 +28,7 @@ import org.eclipse.cdt.core.internal.index.provider.test.Providers;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@ -683,6 +684,10 @@ class MockConfig implements ICConfigurationDescription {
public ICSourceEntry[] getResolvedSourceEntries() {
return null;
}
public CConfigurationStatus getConfigurationStatus() {
return CConfigurationStatus.CFG_STATUS_OK;
}
}
/*

View file

@ -0,0 +1,55 @@
/*******************************************************************************
* Copyright (c) 2007 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.settings.model;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.internal.core.settings.model.SettingsModelMessages;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
public final class CConfigurationStatus extends Status {
// public static final int WRONG_TARGET_ARCH = 1;
// public static final int WRONG_TARGET_OS = 1 << 1;
public static final int TOOLCHAIN_NOT_SUPPORTED = 1 << 2;
public static final int SETTINGS_INVALID = 1 << 3;
public static final CConfigurationStatus CFG_STATUS_OK = new CConfigurationStatus(0, ""); //$NON-NLS-1$
public static final CConfigurationStatus CFG_STATUS_ERROR = new CConfigurationStatus(SETTINGS_INVALID, SettingsModelMessages.getString("CConfigurationStatus.1")); //$NON-NLS-1$
public CConfigurationStatus(String pluginId, int code,
String message, Throwable exception) {
super(calcSeverity(code), pluginId, code, message, exception);
}
public CConfigurationStatus(int code, String message,
Throwable exception) {
this(CCorePlugin.PLUGIN_ID, code, message, exception);
}
public CConfigurationStatus(int code, String message) {
this(CCorePlugin.PLUGIN_ID, code, message, null);
}
private static boolean checkFlags(int flags, int value){
return (flags & value) == value;
}
private static int calcSeverity(int flags){
if(checkFlags(flags, SETTINGS_INVALID))
return IStatus.ERROR;
else if(flags != 0)
return IStatus.WARNING;
return IStatus.OK;
}
}

View file

@ -387,4 +387,6 @@ public interface ICConfigurationDescription extends ICSettingContainer, ICSettin
* @see ICProjectDescriptionManager#updateExternalSettingsProviders(String[])
*/
void updateExternalSettingsProviders(String[] ids) throws WriteAccessException;
CConfigurationStatus getConfigurationStatus();
}

View file

@ -11,6 +11,7 @@
package org.eclipse.cdt.core.settings.model.extension;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
@ -58,4 +59,8 @@ public abstract class CConfigurationData extends CDataObject {
public abstract ICdtVariablesContributor getBuildVariablesContributor();
public abstract void setName(String name);
public CConfigurationStatus getStatus(){
return CConfigurationStatus.CFG_STATUS_OK;
}
}

View file

@ -14,6 +14,7 @@ import java.util.Arrays;
import java.util.HashMap;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICSettingBase;
import org.eclipse.cdt.core.settings.model.ICSourceEntry;
import org.eclipse.cdt.core.settings.model.extension.CBuildData;
@ -39,6 +40,7 @@ public class CDefaultConfigurationData extends CConfigurationData {
protected ICSourceEntry[] fSourceEntries;
private CDataFacroty fFactory;
protected boolean fIsModified;
private CConfigurationStatus fStatus = CConfigurationStatus.CFG_STATUS_OK;
protected CDefaultConfigurationData(CDataFacroty factory){
if(factory == null)
@ -103,6 +105,10 @@ public class CDefaultConfigurationData extends CConfigurationData {
fSourceEntries = base.getSourceEntries();
fBuildData = copyBuildData(base.getBuildData(), clone);
fStatus = base.getStatus();
if(fStatus == null)
fStatus = CConfigurationStatus.CFG_STATUS_OK;
CFolderData baseRootFolderData = base.getRootFolderData();
fRootFolderData = copyFolderData(baseRootFolderData.getPath(), baseRootFolderData, clone);
addRcData(fRootFolderData);
@ -304,6 +310,9 @@ public class CDefaultConfigurationData extends CConfigurationData {
fFactory.setModified(rcDatas[i], false);
}
}
}
public CConfigurationStatus getStatus() {
return fStatus;
}
}

View file

@ -17,6 +17,7 @@ import java.util.Map;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@ -746,4 +747,10 @@ public class CConfigurationDescription extends CDataProxyContainer implements IC
ICSourceEntry[] entries = getSourceEntries();
return CDataUtil.resolveEntries(entries, this);
}
public CConfigurationStatus getConfigurationStatus() {
CConfigurationData data = getConfigurationData(false);
CConfigurationStatus status = data.getStatus();
return status != null ? status : CConfigurationStatus.CFG_STATUS_OK;
}
}

View file

@ -16,6 +16,7 @@ import java.util.Map;
import org.eclipse.cdt.core.cdtvariables.ICdtVariable;
import org.eclipse.cdt.core.cdtvariables.ICdtVariablesContributor;
import org.eclipse.cdt.core.settings.model.CConfigurationStatus;
import org.eclipse.cdt.core.settings.model.ICBuildSetting;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
@ -507,4 +508,10 @@ public class CConfigurationDescriptionCache extends CDefaultConfigurationData
}
return fResolvedSourceEntries;
}
public CConfigurationStatus getConfigurationStatus() {
CConfigurationStatus status = getStatus();
return status != null ? status : CConfigurationStatus.CFG_STATUS_OK;
}
}

View file

@ -337,7 +337,10 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
IResourceDelta projDelta = projs[i];
if(!shouldVisit((IProject)projDelta.getResource()))
continue;
if((projDelta.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED)
continue;
IResourceDelta children[] = projDelta.getAffectedChildren();
for(int k = 0; k < children.length; k++){
IResourceDelta child = children[k];
@ -349,6 +352,11 @@ public class ResourceChangeHandler extends ResourceChangeHandlerBase implements
continue;
//the .cproject file is changed
if((child.getFlags() & IResourceDelta.REMOVED) == IResourceDelta.REMOVED){
//project file does not exist or corrupted, remove
((RcMoveHandler)handler).setProjectDescription(rc.getProject(), null);
}
try {
CProjectDescription des = CProjectDescriptionManager.getInstance().checkExternalProjectFileModification(rc);
if(des != null){

View file

@ -15,6 +15,7 @@ CConfigurationDescription.0=data was not created
CConfigurationDescription.1=expected proxy of type ICFileDescription, but was
CConfigurationDescription.2=data was not created
CConfigurationDescription.3=expected proxy of type ICFolderDescription, but was
CConfigurationStatus.1=configurations settings invalid
CConfigurationDescriptionCache.0=description is read only
CProjectConverterDesciptor.0=illegal provider implementation
CProjectConverterDesciptor.1=no provider defined