/*******************************************************************************
* Copyright (c) 2004, 2010 IBM 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:
* IBM - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.internal.core;
import java.util.ArrayList;
import java.util.StringTokenizer;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICDescriptor;
import org.eclipse.cdt.core.ICOwner;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.ITargetPlatform;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Preferences;
/**
* @deprecated This class is obsolete but it is there just in case it might be used with old style projects.
*
* @since 2.0
*/
@Deprecated
public class ManagedMakeProject implements ICOwner {
/**
* Zero-argument constructor to fulfill the contract for
* implementation classes supplied via an extension point
*/
public ManagedMakeProject() {
super();
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.ICOwner#configure(org.eclipse.cdt.core.ICDescriptor)
*/
public void configure(ICDescriptor cproject) throws CoreException {
cproject.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
cproject.remove(CCorePlugin.BUILDER_MODEL_ID);
cproject.remove(CCorePlugin.BINARY_PARSER_UNIQ_ID);
// updateIndexers(cproject);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.ICOwner#update(org.eclipse.cdt.core.ICDescriptor, java.lang.String)
*/
public void update(ICDescriptor cproject, String extensionID) throws CoreException {
/* if (extensionID.equals(CCorePlugin.BINARY_PARSER_UNIQ_ID)) {
updateBinaryParsers(cproject);
}
if (extensionID.equals(CCorePlugin.INDEXER_UNIQ_ID)) {
updateIndexers(cproject);
}
*/
}
private void updateBinaryParsers(ICDescriptor cDescriptor) throws CoreException {
IManagedBuildInfo buildInfo = null;
String[] ids = null;
IProject project = cDescriptor.getProject();
// If we cannot get the build information, it may be due to the fact that the
// build information is yet to be created, due to a synchronization issue
// Don't do anything now to the binary parsers because there is nothing meaningful to do.
// This routine should be invoked later, when the required build information is available
if (!ManagedBuildManager.canGetBuildInfo(project)) return;
buildInfo = ManagedBuildManager.getBuildInfo(project);
if (buildInfo != null) {
IConfiguration config = buildInfo.getDefaultConfiguration();
if (config == null && buildInfo.getManagedProject() != null) {
IConfiguration[] configs = buildInfo.getManagedProject().getConfigurations();
if (configs != null && configs.length > 0)
config = configs[0];
}
if (config != null) {
// Get the values from the current configuration
IToolChain toolChain = config.getToolChain();
if (toolChain != null) {
ITargetPlatform targPlatform = toolChain.getTargetPlatform();
if (targPlatform != null) {
ids = targPlatform.getBinaryParserList();
}
}
}
}
cDescriptor.remove(CCorePlugin.BINARY_PARSER_UNIQ_ID);
if (ids != null) {
for (int i = 0; i < ids.length; i++) {
cDescriptor.create(CCorePlugin.BINARY_PARSER_UNIQ_ID, ids[i]);
}
}
}
private void updateIndexers(ICDescriptor cDescriptor) throws CoreException {
cDescriptor.remove(CCorePlugin.INDEXER_UNIQ_ID);
Preferences corePrefs = CCorePlugin.getDefault().getPluginPreferences();
String id = corePrefs.getString(CCorePlugin.PREF_INDEXER);
if (id != null && id.length() != 0) {
String[] ids = parseStringToArray(id);
for (int i = 0; i < ids.length; i++) {
cDescriptor.create(CCorePlugin.INDEXER_UNIQ_ID, ids[i]);
}
}
}
private String[] parseStringToArray(String syms) {
if (syms != null && syms.length() > 0) {
StringTokenizer tok = new StringTokenizer(syms, ";"); //$NON-NLS-1$
ArrayList<String> list = new ArrayList<String>(tok.countTokens());
while (tok.hasMoreElements()) {
list.add(tok.nextToken());
}
return list.toArray(new String[list.size()]);
}
return new String[0];
}
}