/******************************************************************************* * 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.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; import org.eclipse.cdt.core.settings.model.extension.CConfigurationData; import org.eclipse.cdt.core.settings.model.extension.CFileData; import org.eclipse.cdt.core.settings.model.extension.CFolderData; import org.eclipse.cdt.core.settings.model.extension.CLanguageData; import org.eclipse.cdt.core.settings.model.extension.CResourceData; import org.eclipse.cdt.core.settings.model.extension.CTargetPlatformData; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IFileInfo; 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; import org.eclipse.osgi.util.NLS; public class BuildConfigurationData extends CConfigurationData { private Configuration fCfg; // private BuildVariablesContributor fCdtVars; public BuildConfigurationData(IConfiguration cfg){ fCfg = (Configuration)cfg; } public IConfiguration getConfiguration(){ return fCfg; } @Override public CFileData createFileData(IPath path, CFileData base) throws CoreException { String id = ManagedBuildManager.calculateChildId(fCfg.getId(),null); IFileInfo info = fCfg.createFileInfo(path, ((BuildFileData)base).getFileInfo(), id, path.lastSegment()); return info.getFileData(); } @Override public CFileData createFileData(IPath path, CFolderData base, CLanguageData baseLangData) throws CoreException { String id = ManagedBuildManager.calculateChildId(fCfg.getId(),null); ITool baseTool; if(baseLangData instanceof BuildLanguageData){ baseTool = ((BuildLanguageData)baseLangData).getTool(); } else { baseTool = null; } IFileInfo info = fCfg.createFileInfo(path, ((BuildFolderData)base).getFolderInfo(), baseTool, id, path.lastSegment()); return info.getFileData(); } @Override public CFolderData createFolderData(IPath path, CFolderData base) throws CoreException { String id = ManagedBuildManager.calculateChildId(fCfg.getId(),null); IFolderInfo folderInfo = fCfg.createFolderInfo(path, ((BuildFolderData)base).getFolderInfo(), id, base.getName()); return folderInfo.getFolderData(); } @Override public String getDescription() { return fCfg.getDescription(); } @Override public CResourceData[] getResourceDatas() { IResourceInfo infos[] = fCfg.getResourceInfos(); CResourceData datas[] = new CResourceData[infos.length]; for(int i = 0; i < infos.length; i++){ datas[i] = infos[i].getResourceData(); } return datas; } @Override public CFolderData getRootFolderData() { return fCfg.getRootFolderInfo().getFolderData(); } @Override public void removeResourceData(CResourceData data) throws CoreException { fCfg.removeResourceInfo(data.getPath()); } @Override public void setDescription(String description) { fCfg.setDescription(description); } @Override public String getId() { return fCfg.getId(); } @Override public String getName() { return fCfg.getName(); } @Override public void setName(String name) { fCfg.setName(name); } @Override public boolean isValid() { return fCfg != null; } @Override public CTargetPlatformData getTargetPlatformData() { return fCfg.getToolChain().getTargetPlatformData(); } @Override public ICSourceEntry[] getSourceEntries() { return fCfg.getSourceEntries(); } @Override public void setSourceEntries(ICSourceEntry[] entries) { fCfg.setSourceEntries(entries); } @Override public CBuildData getBuildData() { return fCfg.getBuildData(); } @Override public ICdtVariablesContributor getBuildVariablesContributor() { // if(fCdtVars == null) // fCdtVars = new BuildVariablesContributor(this); // return fCdtVars; return new BuildVariablesContributor(this); } void clearCachedData(){ fCfg.clearCachedData(); CResourceData[] datas = getResourceDatas(); CResourceData data; // BuildLanguageData lData; // BuildLanguageData[] lDatas; for(int i = 0; i < datas.length; i++){ data = datas[i]; if(data.getType() == ICSettingBase.SETTING_FOLDER){ ((BuildFolderData)data).clearCachedData(); } else { ((BuildFileData)data).clearCachedData(); } } } @Override public CConfigurationStatus getStatus() { int flags = 0; String msg = null; if(!fCfg.isSupported()){ flags |= CConfigurationStatus.TOOLCHAIN_NOT_SUPPORTED; msg = DataProviderMessages.getString("BuildConfigurationData.NoConfigurationSupport"); //$NON-NLS-1$ } else if (ManagedBuildManager.getExtensionConfiguration(fCfg)==null){ flags |= CConfigurationStatus.SETTINGS_INVALID; msg = NLS.bind(DataProviderMessages.getString("BuildConfigurationData.OrphanedConfiguration"), fCfg.getId()); //$NON-NLS-1$ } if(flags != 0) return new CConfigurationStatus(ManagedBuilderCorePlugin.getUniqueIdentifier(), flags, msg, null); return CConfigurationStatus.CFG_STATUS_OK; } }