/******************************************************************************* * Copyright (c) 2007, 2010 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.ui.properties; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICMultiConfigDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IFolderInfo; import org.eclipse.cdt.managedbuilder.core.IHoldsOptions; import org.eclipse.cdt.managedbuilder.core.IResourceInfo; 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.internal.core.MultiConfiguration; import org.eclipse.cdt.ui.newui.AbstractCPropertyTab; import org.eclipse.core.runtime.IPath; /** * Proposed parent for Build System property tabs. * * In addition to AbstractCPropertyTab functionality, * provides several utility methods for configurations * handling. */ public abstract class AbstractCBuildPropertyTab extends AbstractCPropertyTab { public IConfiguration getConfigurationFromHoldsOptions(IHoldsOptions ho){ if(ho instanceof IToolChain) return ((IToolChain)ho).getParent(); else if(ho instanceof ITool) return getConfigurationFromTool((ITool)ho); return null; } public IConfiguration getConfigurationFromTool(ITool tool){ return tool.getParentResourceInfo().getParent(); } public IConfiguration getCfg() { return getCfg(getResDesc().getConfiguration()); } public static IConfiguration getCfg(ICConfigurationDescription cfgd) { if (cfgd instanceof ICMultiConfigDescription) { ICConfigurationDescription[] cfds = (ICConfigurationDescription[])((ICMultiConfigDescription)cfgd).getItems(); return new MultiConfiguration(cfds); } else return ManagedBuildManager.getConfigurationForDescription(cfgd); } /** * Returns ResourceInfo for given ResourceDescription. * Creates resourceInfo if it has not exist before. * @param cfgd * @return */ public IResourceInfo getResCfg(ICResourceDescription cfgd) { IConfiguration cfg = ManagedBuildManager.getConfigurationForDescription(cfgd.getConfiguration()); if (page.isForProject()) return cfg.getRootFolderInfo(); IPath p = cfgd.getPath(); IResourceInfo f = null; f = cfg.getResourceInfo(p, false); if (f != null && (!p.equals(f.getPath()))) { String s = p.toString().replace('/', '_').replace('\\', '_'); if (page.isForFile()) f = cfg.createFileInfo(p, (IFolderInfo)f, null, f.getId()+ s, f.getName() + s); else f = cfg.createFolderInfo(p, (IFolderInfo)f, f.getId() + s, f.getName() + s); } if (f == null) { if (page.isForFile()) f = cfg.createFileInfo(p); else f = cfg.createFolderInfo(p); } return f; } }