[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Initial patches for Multi version tool chain support..(bugzilla #89872)
|
Title: Initial patches for Multi version tool chain support..(bugzilla #89872)
Hi,
Here I attached initial patches for the bugzilla #89872. This is to support multiple tool chain versions in CDT 3.0.
<<mbs_ui_04_29_05_patch.txt>> <<mbs_core_04_29_05_patch.txt>>
Thanks & Regards,
Sunil
Index: src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties,v
retrieving revision 1.29
diff -u -r1.29 PluginResources.properties
--- src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties 28 Apr 2005 16:55:15 -0000 1.29
+++ src/org/eclipse/cdt/managedbuilder/internal/ui/PluginResources.properties 29 Apr 2005 20:38:39 -0000
@@ -149,6 +149,7 @@
# ----------- New Configuration -----------
NewConfiguration.label.name=Name:
+NewConfiguration.label.description=Description:
NewConfiguration.label.group=Copy settings from
NewConfiguration.label.copy=Default configuration:
NewConfiguration.label.clone=Existing configuration:
@@ -157,12 +158,22 @@
NewConfiguration.error.caseName=A configuration name that differs only in case to "{0}" exists.
NewConfiguration.error.invalidName=The name "{0}" is invalid.
+# ----------- Rename Configuration -----------
+RenameConfiguration.label.name=Name:
+RenameConfiguration.label.description=Description:
+RenameConfiguration.error.duplicateName=A configuration named "{0}" already exists.
+RenameConfiguration.error.caseName=A configuration name that differs only in case to "{0}" exists.
+RenameConfiguration.error.invalidName=The name "{0}" is invalid.
+
# ----------- Target/Config management dialog -----------------
ManageConfig.label.configs=Manage configurations
-ManageConfig.label.restore=Restore
-ManageConfig.label.configs.current=Current:
-ManageConfig.label.configs.deleted=Deleted:
+ManageConfig.label.rename=Rename
+ManageConfig.label.conversionTargetLabel=Tool chain conversion targets:
+ManageConfig.label.convertTarget=Convert
ManageConfig.label.new.config.dialog=Create configuration
+ManageConfig.label.rename.config.dialog=Rename configuration
+ManageConfig.deletedialog.message=Are you sure you want to delete the "{0}" configuration?
+ManageConfig.deletedialog.title=Confirm Delete
# ----------- Build Property Common -----------
BuildPropertyCommon.label.title=Enter Value
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java,v
retrieving revision 1.24
diff -u -r1.24 BuildPropertyPage.java
--- src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java 18 Apr 2005 04:15:07 -0000 1.24
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/BuildPropertyPage.java 29 Apr 2005 20:38:40 -0000
@@ -301,11 +301,17 @@
// Clear and replace the contents of the selector widget
configSelector.removeAll();
- configSelector.setItems(getConfigurationNames());
+ configSelector.setItems(getConfigurationNamesAndDescriptions());
// Make sure the active configuration is selected
IConfiguration defaultConfig = info.getDefaultConfiguration();
- int index = configSelector.indexOf(defaultConfig.getName());
+ int index;
+ if( (defaultConfig.getDescription() == null) || defaultConfig.getDescription().equals("") ) { //$NON-NLS-1$
+ index = configSelector.indexOf(defaultConfig.getName());
+ } else {
+ index = configSelector.indexOf(defaultConfig.getName() + "( " + defaultConfig.getDescription() + " )" ); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
configSelector.select(index == -1 ? 0 : index);
handleConfigSelection();
}
@@ -313,13 +319,17 @@
/* (non-Javadoc)
* @return an array of names for the configurations defined for the chosen
*/
- private String [] getConfigurationNames () {
- String [] names = new String[configurations.length /*+ 1*/];
+ private String [] getConfigurationNamesAndDescriptions () {
+ String [] namesAndDescriptions = new String[configurations.length /*+ 1*/];
for (int index = 0; index < configurations.length; ++index) {
- names[index] = configurations[index].getName();
+ String description = configurations[index].getDescription();
+ if ( (description == null) || (description.equals("")) )
+ namesAndDescriptions[index] = configurations[index].getName(); //$NON-NLS-1$
+ else
+ namesAndDescriptions[index] = configurations[index].getName() + "( " + description + " )"; //$NON-NLS-1$ //$NON-NLS-2$
}
// names[names.length - 1] = ManagedBuilderUIPlugin.getResourceString(ALL_CONFS);
- return names;
+ return namesAndDescriptions;
}
public void enableConfigSelection (boolean enable) {
@@ -483,72 +493,36 @@
}
// Event handler for the manage configuration button event
- private void handleManageConfig () {
+ private void handleManageConfig() {
IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject());
- ManageConfigDialog manageDialog = new ManageConfigDialog(getShell(), ManagedBuilderUIMessages.getResourceString(MANAGE_TITLE), info.getManagedProject());
+ ManageConfigDialog manageDialog = new ManageConfigDialog(getShell(),
+ ManagedBuilderUIMessages.getResourceString(MANAGE_TITLE), info
+ .getManagedProject());
if (manageDialog.open() == ManageConfigDialog.OK) {
- boolean updateConfigs = false;
-
// Check to see if any configurations have to be deleted
List deletedConfigs = manageDialog.getDeletedConfigIds();
Iterator iter = deletedConfigs.listIterator();
while (iter.hasNext()) {
- String id = (String)iter.next();
-
- // Remove the configurations from the project
- info.getManagedProject().removeConfiguration(id);
-
+ String id = (String) iter.next();
// Remove any settings stores
fOptionBlock.removeValues(id);
-
- // Clean up the UI
- configurations = info.getManagedProject().getConfigurations();
- configSelector.removeAll();
- configSelector.setItems(getConfigurationNames());
- configSelector.select(0);
- updateConfigs = true;
- }
-
- // Check to see if any have to be added
- SortedMap newConfigs = manageDialog.getNewConfigs();
- Set keys = newConfigs.keySet();
- Iterator keyIter = keys.iterator();
- while (keyIter.hasNext()) {
- String name = (String) keyIter.next();
- IConfiguration parent = (IConfiguration) newConfigs.get(name);
- if (parent != null) {
- int id = ManagedBuildManager.getRandomNumber();
-
- // Create ID for the new component based on the parent ID and random component
- String newId = parent.getId();
- int index = newId.lastIndexOf(ID_SEPARATOR);
- if (index > 0) {
- String lastComponent = newId.substring(index + 1, newId.length());
- if (Character.isDigit(lastComponent.charAt(0))) {
- // Strip the last component
- newId = newId.substring(0, index);
- }
- }
- newId += ID_SEPARATOR + id;
- IConfiguration newConfig;
- if (parent.isExtensionElement()) {
- newConfig = info.getManagedProject().createConfiguration(parent, newId);
- } else {
- newConfig = info.getManagedProject().createConfigurationClone(parent, newId);
- }
- newConfig.setName(name);
- newConfig.setArtifactName(info.getManagedProject().getDefaultArtifactName());
- // Update the config lists
- configurations = info.getManagedProject().getConfigurations();
- configSelector.removeAll();
- configSelector.setItems(getConfigurationNames());
- configSelector.select(configSelector.indexOf(name));
- updateConfigs = true;
- }
}
- if (updateConfigs){
- handleConfigSelection();
+ // Update the config lists
+ configurations = info.getManagedProject().getConfigurations();
+ configSelector.removeAll();
+ configSelector.setItems(getConfigurationNamesAndDescriptions());
+
+ IConfiguration tmpSelectedConfiguration = manageDialog.getSelectedConfiguration();
+ String nameAndDescription = new String();
+ if ((tmpSelectedConfiguration.getDescription() == null)
+ || (tmpSelectedConfiguration.getDescription().equals(""))) { //$NON-NLS-1$
+ nameAndDescription = tmpSelectedConfiguration.getName();
+ } else {
+ nameAndDescription = tmpSelectedConfiguration.getName() + "( " //$NON-NLS-1$
+ + tmpSelectedConfiguration.getDescription() + " )"; //$NON-NLS-1$
}
+ configSelector.select(configSelector.indexOf(nameAndDescription));
+ handleConfigSelection();
}
return;
}
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java,v
retrieving revision 1.14
diff -u -r1.14 ManageConfigDialog.java
--- src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java 24 Jan 2005 19:27:28 -0000 1.14
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/ManageConfigDialog.java 29 Apr 2005 20:38:40 -0000
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2002,2004 IBM Corporation and others.
+ * Copyright (c) 2002,2005 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
@@ -14,27 +14,38 @@
import java.util.SortedMap;
import java.util.TreeMap;
+import org.eclipse.cdt.managedbuilder.core.IManagedBuildInfo;
import org.eclipse.cdt.managedbuilder.core.IManagedProject;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages;
+import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIPlugin;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
+import sun.security.x509.NameConstraintsExtension;
+
public class ManageConfigDialog extends Dialog {
// String constants
private static final String CMN_PREFIX = "BuildPropertyCommon"; //$NON-NLS-1$
@@ -43,11 +54,20 @@
private static final String REMOVE = CMN_LABEL + ".remove"; //$NON-NLS-1$
private static final String PREFIX = "ManageConfig"; //$NON-NLS-1$
private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
- private static final String RESTORE = LABEL + ".restore"; //$NON-NLS-1$
+ private static final String CONVERSION_TARGET_LABEL = LABEL + ".conversionTargetLabel"; //$NON-NLS-1$
+ private static final String CONVERT_TARGET = LABEL + ".convertTarget"; //$NON-NLS-1$
+ private static final String RENAME = LABEL + ".rename"; //$NON-NLS-1$
private static final String CONFIGS = LABEL + ".configs"; //$NON-NLS-1$
private static final String CURRENT_CONFIGS = CONFIGS + ".current"; //$NON-NLS-1$
private static final String DELETED_CONFIGS = CONFIGS + ".deleted"; //$NON-NLS-1$
- private static final String CONF_DLG = LABEL + ".new.config.dialog"; //$NON-NLS-1$
+ private static final String NEW_CONF_DLG = LABEL + ".new.config.dialog"; //$NON-NLS-1$
+ private static final String RENAME_CONF_DLG = LABEL + ".rename.config.dialog"; //$NON-NLS-1$
+
+ private static final String TIP = PREFIX + ".tip"; //$NON-NLS-1$
+ private static final String CONVERSION_TARGET_TIP = TIP + ".conversionTarget"; //$NON-NLS-1$
+ private static final String CONVERT_TIP = TIP + ".convert"; //$NON-NLS-1$
+
+ private static final String ID_SEPARATOR = "."; //$NON-NLS-1$
private static final String EMPTY_STRING = new String();
@@ -57,20 +77,23 @@
private SortedMap existingConfigs;
// The target the configs belong to
private IManagedProject managedProject;
- /** All new configs added by the user but not yet part of target */
- private SortedMap newAddedConfigs;
- /** All new configs removed by the user but not yet part of target */
- private SortedMap removedNewConfigs;
+
+ // selected Configuration
+ IConfiguration selectedConfiguration;
+
// The title of the dialog.
private String title = ""; //$NON-NLS-1$
+ private Combo conversionTargetSelector;
+ private Button convertTargetBtn;
// Widgets
protected List currentConfigList;
- protected List deletedConfigList;
+
protected Button newBtn;
protected Button okBtn;
protected Button removeBtn;
- protected Button restoreBtn;
+ protected Button renameBtn;
+
/**
* @param parentShell
@@ -85,11 +108,23 @@
IConfiguration [] configs = managedProject.getConfigurations();
for (int i = 0; i < configs.length; i++) {
IConfiguration configuration = configs[i];
- getExistingConfigs().put(configuration.getName(), configuration.getId());
+ String name = configuration.getName();
+ String description = configuration.getDescription();
+ String nameAndDescription = new String();
+
+ if ( description == null || description.equals("") ) { //$NON-NLS-1$
+ nameAndDescription = name;
+ } else {
+ nameAndDescription = name + "( " + description + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ getExistingConfigs().put(nameAndDescription, configuration);
}
+ // Set the selectedConfiguration to default configuration.
+ selectedConfiguration = ManagedBuildManager.getSelectedConfiguration(getProject());
+
+ // clear DeletedConfig list
getDeletedConfigs().clear();
- getNewConfigs().clear();
}
/* (non-Javadoc)
@@ -107,7 +142,7 @@
protected void createButtonsForButtonBar(Composite parent) {
// create OK and Cancel buttons by default
okBtn = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+ // createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
updateButtons();
}
@@ -120,39 +155,56 @@
final Group configListGroup = new Group(parent, SWT.NONE);
configListGroup.setFont(parent.getFont());
configListGroup.setText(ManagedBuilderUIMessages.getResourceString(CONFIGS));
- configListGroup.setLayout(new GridLayout(3, false));
+ configListGroup.setLayout(new GridLayout(1, false));
configListGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- // Create the 2 labels first to align the buttons and list controls
- final Label currentConfigLabel = new Label(configListGroup, SWT.LEFT);
- currentConfigLabel.setFont(configListGroup.getFont());
- currentConfigLabel.setText(ManagedBuilderUIMessages.getResourceString(CURRENT_CONFIGS));
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- data.horizontalSpan = 2;
- currentConfigLabel.setLayoutData(data);
- final Label deletedConfigLabel = new Label(configListGroup, SWT.LEFT);
- deletedConfigLabel.setFont(configListGroup.getFont());
- deletedConfigLabel.setText(ManagedBuilderUIMessages.getResourceString(DELETED_CONFIGS));
- deletedConfigLabel.setLayoutData(new GridData());
-
+
// Create the current config List
currentConfigList = new List(configListGroup, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER);
currentConfigList.setFont(configListGroup.getFont());
- data = new GridData(GridData.FILL_BOTH);
- data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH / 2);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH);
currentConfigList.setLayoutData(data);
currentConfigList.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent event) {
currentConfigList = null;
}
});
+ currentConfigList.addListener(SWT.Selection, new Listener () {
+ public void handleEvent(Event e) {
+ handleConfigSelection();
+ }
+ });
- // Create a composite for the buttons
+// Create a composite for the conversion target combo
+ final Composite conversionGroup = new Composite(configListGroup, SWT.NULL);
+ conversionGroup.setFont(configListGroup.getFont());
+ conversionGroup.setLayout(new GridLayout(2, true));
+ conversionGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create the Tool chain conversion target list
+ Label conversionTargetLabel = ControlFactory.createLabel(conversionGroup, ManagedBuilderUIMessages.getResourceString(CONVERSION_TARGET_LABEL));
+ conversionTargetSelector = new Combo(conversionGroup, SWT.READ_ONLY|SWT.DROP_DOWN);
+ conversionTargetSelector.addListener(SWT.Selection, new Listener () {
+ public void handleEvent(Event e) {
+ handleConversionTargetSelection();
+ }
+ });
+ conversionTargetSelector.setToolTipText(ManagedBuilderUIMessages.getResourceString(CONVERSION_TARGET_TIP));
+
+ // Create a composite for the buttons
final Composite buttonBar = new Composite(configListGroup, SWT.NULL);
buttonBar.setFont(configListGroup.getFont());
- buttonBar.setLayout(new GridLayout(1, true));
- buttonBar.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+ buttonBar.setLayout(new GridLayout(4, true));
+ buttonBar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ convertTargetBtn = ControlFactory.createPushButton(buttonBar, ManagedBuilderUIMessages.getResourceString(CONVERT_TARGET));
+ convertTargetBtn.setToolTipText(ManagedBuilderUIMessages.getResourceString(CONVERT_TIP));
+ convertTargetBtn.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ handleConversionTargetSelection();
+ }
+ });
+
newBtn = new Button(buttonBar, SWT.PUSH);
newBtn.setFont(buttonBar.getFont());
newBtn.setText(ManagedBuilderUIMessages.getResourceString(NEW));
@@ -183,32 +235,25 @@
}
});
- restoreBtn = new Button(buttonBar, SWT.PUSH);
- restoreBtn.setFont(buttonBar.getFont());
- restoreBtn.setText(ManagedBuilderUIMessages.getResourceString(RESTORE));
- setButtonLayoutData(restoreBtn);
- restoreBtn.addSelectionListener(new SelectionAdapter () {
+ renameBtn = new Button(buttonBar, SWT.PUSH);
+ renameBtn.setFont(buttonBar.getFont());
+ renameBtn.setText(ManagedBuilderUIMessages.getResourceString(RENAME));
+ setButtonLayoutData(renameBtn);
+ renameBtn.addSelectionListener(new SelectionAdapter () {
public void widgetSelected(SelectionEvent e) {
- handleRestorePressed();
+ handleRenamePressed();
}
});
- restoreBtn.addDisposeListener(new DisposeListener() {
+ renameBtn.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
- restoreBtn = null;
+ renameBtn = null;
}
});
- //Create the deleted config list
- deletedConfigList = new List(configListGroup, SWT.SINGLE|SWT.V_SCROLL|SWT.H_SCROLL|SWT.BORDER);
- deletedConfigList.setFont(configListGroup.getFont());
- data = new GridData(GridData.FILL_BOTH);
- data.widthHint = (IDialogConstants.ENTRY_FIELD_WIDTH / 2);
- deletedConfigList.setLayoutData(data);
- deletedConfigList.addDisposeListener(new DisposeListener() {
- public void widgetDisposed(DisposeEvent event) {
- deletedConfigList = null;
- }
- });
+ }
+
+ private void handleConversionTargetSelection() {
+ return;
}
/* (non-Javadoc)
@@ -224,14 +269,46 @@
createConfigListGroup(comp);
// Do the final widget prep
- currentConfigList.setItems(getConfigurationNames());
- currentConfigList.select(0);
+ // Set the configuration items
+ currentConfigList.setItems(getConfigurationNamesAndDescriptions());
+
+
+ // Set the selection to selectedConfiguration.
+ String name = getSelectedConfiguration().getName();
+ String description = getSelectedConfiguration().getDescription();
+ String nameAndDescription = new String();
+
+ if ( description == null || description.equals("") ) { //$NON-NLS-1$
+ nameAndDescription = name;
+ } else {
+ nameAndDescription = name + "( " + description + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ currentConfigList.select( currentConfigList.indexOf(nameAndDescription));
+
+ // Set the conversion target list.
+ updateConversionTargets(getSelectedConfiguration());
newBtn.setFocus();
return comp;
}
- private String [] getConfigurationNames() {
- return (String[]) getExistingConfigs().keySet().toArray(new String[getExistingConfigs().size()]);
+ private String [] getConversionTargetList(IConfiguration config) {
+ // This is temporary, once I implement backend & converter extension point,
+ // this will be replaced with original code.
+ String [] conversionTargetNames = { "GNU Toolchain version 4.0"}; //$NON-NLS-1$
+ return conversionTargetNames;
+ }
+
+ private void updateConversionTargets(IConfiguration config) {
+ conversionTargetSelector.setItems( getConversionTargetList(config));
+ conversionTargetSelector.select(0);
+ conversionTargetSelector.setEnabled(conversionTargetSelector.getItemCount() > 1);
+ convertTargetBtn.setEnabled( conversionTargetSelector.getItemCount() > 1);
+ }
+
+ private String [] getConfigurationNamesAndDescriptions() {
+ String [] namesAndDescriptions = (String[]) getExistingConfigs().keySet().toArray(new String[getExistingConfigs().size()]);
+
+ return namesAndDescriptions;
}
/* (non-javadoc)
@@ -262,42 +339,7 @@
return existingConfigs;
}
- /**
- * Answers a map of configuration names to <code>IConfiguration</code>.
- * The name is selected by the user and should be unique for the target
- * it will be added to. The configuration is the what the new
- * configuration will be based on.
- *
- * @return Map
- */
- public SortedMap getNewConfigs() {
- if (newAddedConfigs == null) {
- newAddedConfigs = new TreeMap();
- }
- return newAddedConfigs;
- }
-
- // Answers a list of new configuration names that have been added--
- // or added and removed--by the user, but that have not yet been added
- // to the target
- private ArrayList getNewConfigNames() {
- ArrayList names = new ArrayList();
- names.addAll(getNewConfigs().keySet());
- names.addAll(getRemovedNewConfigs().keySet());
- return names;
- }
-
- // This data structure hangs on to a new configuration that is added
- // by the user, then removed before it is added to the target. This is
- // a required bookeeping step because the user may change their minds and
- // restore the deleted configuration.
- private SortedMap getRemovedNewConfigs() {
- if (removedNewConfigs == null) {
- removedNewConfigs = new TreeMap();
- }
- return removedNewConfigs;
- }
/*
* @return the <code>IProject</code> associated with the managed project
*/
@@ -309,86 +351,206 @@
* Event handler for the add button
*/
protected void handleNewPressed() {
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject());
// Pop-up a dialog to properly handle the request
NewConfigurationDialog dialog = new NewConfigurationDialog(getShell(),
managedProject,
- getNewConfigNames(),
- ManagedBuilderUIMessages.getResourceString(CONF_DLG));
+ ManagedBuilderUIMessages.getResourceString(NEW_CONF_DLG));
if (dialog.open() == NewConfigurationDialog.OK) {
- // Get the new name and configuration to base the new config on
+ // Get the new name & description and configuration to base the new config on
String newConfigName = dialog.getNewName();
- getNewConfigs().put(newConfigName, dialog.getParentConfiguration());
- currentConfigList.add(newConfigName);
- currentConfigList.setSelection(currentConfigList.getItemCount() - 1);
+ String newConfigDescription = dialog.getNewDescription();
+ IConfiguration parentConfig = dialog.getParentConfiguration();
+
+ if (parentConfig != null) {
+ int id = ManagedBuildManager.getRandomNumber();
+
+ // Create ID for the new component based on the parent ID and random component
+ String newId = parentConfig.getId();
+ int index = newId.lastIndexOf(ID_SEPARATOR);
+ if (index > 0) {
+ String lastComponent = newId.substring(index + 1, newId.length());
+ if (Character.isDigit(lastComponent.charAt(0))) {
+ // Strip the last component
+ newId = newId.substring(0, index);
+ }
+ }
+ newId += ID_SEPARATOR + id;
+ IConfiguration newConfig;
+ if (parentConfig.isExtensionElement()) {
+ newConfig = info.getManagedProject().createConfiguration(parentConfig, newId);
+ } else {
+ newConfig = info.getManagedProject().createConfigurationClone(parentConfig, newId);
+ }
+
+ newConfig.setName(newConfigName);
+ newConfig.setDescription(newConfigDescription);
+ newConfig.setArtifactName(info.getManagedProject().getDefaultArtifactName());
+
+ // Add this new configuration to the existing list.
+ String nameAndDescription = new String();
+
+ if ( newConfigDescription == null || newConfigDescription.equals("") ) { //$NON-NLS-1$
+ nameAndDescription = newConfigName;
+ } else {
+ nameAndDescription = newConfigName + "( " + newConfigDescription + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ // Add the newConfig to the existing configurations
+ getExistingConfigs().put(nameAndDescription, newConfig);
+
+ // Set the selected Configuration to the newConfig
+ setSelectedConfiguration(newConfig);
+
+ // Update the Configuration combo list that is displayed to the user.
+ currentConfigList.setItems(getConfigurationNamesAndDescriptions());
+
+ // Get the index of selected configuration & set selection in config list.
+ int configIndex = currentConfigList.indexOf(nameAndDescription);
+ currentConfigList.setSelection(configIndex);
+ }
+
}
// Update the buttons based on the choices
updateButtons();
}
- /* (non-javadoc)
- * Event handler for the remove button
- */
- protected void handleRemovePressed() {
+
+ protected void handleRenamePressed() {
+ IConfiguration selectedConfig = null;
+ String selectedConfigNameAndDescription = null;
+
// Determine which configuration was selected
int selectionIndex = currentConfigList.getSelectionIndex();
- if (selectionIndex != -1){
- String selectedConfigName = currentConfigList.getItem(selectionIndex);
+ if (selectionIndex != -1) {
+ selectedConfigNameAndDescription = currentConfigList
+ .getItem(selectionIndex);
+ selectedConfig = (IConfiguration) getExistingConfigs().get(
+ selectedConfigNameAndDescription);
+
+ // Pop-up a dialog to properly handle the request
+ RenameConfigurationDialog dialog = new RenameConfigurationDialog(
+ getShell(), managedProject, selectedConfig,
+ ManagedBuilderUIMessages.getResourceString(RENAME_CONF_DLG));
+ if (dialog.open() == RenameConfigurationDialog.OK) {
+ // Get the new name & description for the selected configuration
+ String newConfigName = dialog.getNewName();
+
+ String newConfigDescription = dialog.getNewDescription();
+
+ selectedConfig.setName(newConfigName);
+ selectedConfig.setDescription(newConfigDescription);
+
+ // Remove the old configuration from the list and add renamed
+ // configuration to the list.
+ getExistingConfigs().remove(selectedConfigNameAndDescription);
+
+ String nameAndDescription = new String();
+
+ if (newConfigDescription == null
+ || newConfigDescription.equals("")) { //$NON-NLS-1$
+ nameAndDescription = newConfigName;
+ } else {
+ nameAndDescription = newConfigName + "( " //$NON-NLS-1$
+ + newConfigDescription + " )"; //$NON-NLS-1$
+ }
+ getExistingConfigs().put(nameAndDescription, selectedConfig);
- // If this is a newly added config, remove it from the new map
- // and add it to a special map to support the restore use case
- if (getNewConfigs().containsKey(selectedConfigName)) {
- IConfiguration selectedConfig = (IConfiguration) getNewConfigs().get(selectedConfigName);
- getRemovedNewConfigs().put(selectedConfigName, selectedConfig);
- getNewConfigs().remove(selectedConfigName);
- } else {
- // If it is not a new item, the ID is in the existing list
- String selectedConfigId = (String) getExistingConfigs().get(selectedConfigName);
- getDeletedConfigs().put(selectedConfigName, selectedConfigId);
+ // Set the selected Configuration to the newConfig
+ setSelectedConfiguration(selectedConfig);
+
+ // Update the Configuration combo list that is displayed to the user.
+ currentConfigList.setItems(getConfigurationNamesAndDescriptions());
+
+ // Get the index of selected configuration & set selection in config list.
+ int configIndex = currentConfigList.indexOf(nameAndDescription);
+ currentConfigList.setSelection(configIndex);
+
+ // Update the buttons based on the choices
+ updateButtons();
}
-
- // Clean up the UI lists
- currentConfigList.remove(selectionIndex);
- currentConfigList.setSelection(selectionIndex - 1);
- deletedConfigList.add(selectedConfigName);
- deletedConfigList.setSelection(deletedConfigList.getItemCount() - 1);
- updateButtons();
}
}
- /* (non-javadoc)
- * Event handler for the restore button
+ /*
+ * (non-javadoc) Event handler for the remove button
*/
- protected void handleRestorePressed() {
+ protected void handleRemovePressed() {
+
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(getProject());
+
// Determine which configuration was selected
- int selectionIndex = deletedConfigList.getSelectionIndex();
- // Move the selected element from the correct deleted list to the current list
+ int selectionIndex = currentConfigList.getSelectionIndex();
if (selectionIndex != -1){
- // Get the name of the item to delete
- String selectedConfigName = deletedConfigList.getItem(selectionIndex);
+ String selectedConfigNameAndDescription = currentConfigList.getItem(selectionIndex);
- // The deleted config may be one of the existing configs or one of the
- // new configs that have not been added to the target yet
- if (getRemovedNewConfigs().containsKey(selectedConfigName)) {
- IConfiguration restoredConfig = managedProject.getConfiguration(selectedConfigName);
- getNewConfigs().put(selectedConfigName, restoredConfig);
- getRemovedNewConfigs().remove(selectedConfigName);
- } else {
- getDeletedConfigs().remove(selectedConfigName);
+ // Get the confirmation from user before deleting the configuration
+ Shell shell = ManagedBuilderUIPlugin.getDefault().getShell();
+ boolean shouldDelete = MessageDialog.openQuestion(shell,
+ ManagedBuilderUIMessages.getResourceString("ManageConfig.deletedialog.title"), //$NON-NLS-1$
+ ManagedBuilderUIMessages.getFormattedString("ManageConfig.deletedialog.message", //$NON-NLS-1$
+ new String[] {selectedConfigNameAndDescription}));
+ if (shouldDelete) {
+ IConfiguration selectedConfig = (IConfiguration) getExistingConfigs()
+ .get(selectedConfigNameAndDescription);
+ String selectedConfigId = (String) selectedConfig.getId();
+ getDeletedConfigs().put(selectedConfigNameAndDescription,
+ selectedConfigId);
+
+ // Remove the configurations from the project & from list
+ // configuration list
+ info.getManagedProject().removeConfiguration(selectedConfigId);
+ getExistingConfigs().remove(selectedConfigNameAndDescription);
+
+ // Update the Configuration combo list that is displayed to the
+ // user.
+ currentConfigList
+ .setItems(getConfigurationNamesAndDescriptions());
+ currentConfigList
+ .setSelection(currentConfigList.getItemCount() - 1);
+
+ // Update selected configuration variable
+ selectionIndex = currentConfigList.getSelectionIndex();
+ if (selectionIndex != -1) {
+ selectedConfigNameAndDescription = currentConfigList
+ .getItem(selectionIndex);
+ selectedConfig = (IConfiguration) getExistingConfigs().get(
+ selectedConfigNameAndDescription);
+ setSelectedConfiguration(selectedConfig);
+ }
+ // Clean up the UI lists
+ updateButtons();
}
- // Clean up the UI
- deletedConfigList.remove(selectionIndex);
- deletedConfigList.setSelection(selectionIndex - 1);
- currentConfigList.add(selectedConfigName);
- currentConfigList.setSelection(currentConfigList.getItemCount());
- updateButtons();
}
}
private void updateButtons() {
// Disable the remove button if there is only 1 configuration
removeBtn.setEnabled(currentConfigList.getItemCount() > 1);
- // Enable the restore button if there is anything in the deleted list
- restoreBtn.setEnabled(deletedConfigList.getItemCount() > 0);
+ convertTargetBtn.setEnabled( conversionTargetSelector.getItemCount() > 1);
+ }
+
+ private void handleConfigSelection() {
+ // Determine which configuration was selected
+ int selectionIndex = currentConfigList.getSelectionIndex();
+
+ String selectedConfigNameAndDescription = currentConfigList
+ .getItem(selectionIndex);
+
+ IConfiguration selectedConfig = (IConfiguration) getExistingConfigs()
+ .get(selectedConfigNameAndDescription);
+ setSelectedConfiguration(selectedConfig);
+
+ updateConversionTargets(selectedConfig);
+ return;
+ }
+
+ public IConfiguration getSelectedConfiguration() {
+ return selectedConfiguration;
+ }
+
+ public void setSelectedConfiguration(IConfiguration selectedConfiguration) {
+ this.selectedConfiguration = selectedConfiguration;
}
}
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java,v
retrieving revision 1.10
diff -u -r1.10 NewConfigurationDialog.java
--- src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java 18 Apr 2005 04:15:07 -0000 1.10
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/NewConfigurationDialog.java 29 Apr 2005 20:38:40 -0000
@@ -25,6 +25,8 @@
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -49,11 +51,13 @@
private static final String DUPLICATE = ERROR + ".duplicateName"; //$NON-NLS-1$
private static final String CASE = ERROR + ".caseName"; //$NON-NLS-1$
private static final String INVALID = ERROR + ".invalidName"; //$NON-NLS-1$
-
+ private static final String DESCRIPTION = LABEL + ".description"; //$NON-NLS-1$
+
// Widgets
private Button btnClone;
private Button btnCopy;
private Text configName;
+ private Text configDescription;
private Combo copyConfigSelector;
private Combo cloneConfigSelector;
private Button btnShowAll;
@@ -67,6 +71,7 @@
private IConfiguration parentConfig;
private IManagedProject managedProject;
private String newName;
+ private String newDescription;
/** A list containing config names that have been defined but not added to the target */
final private ArrayList reservedNames;
final private String title;
@@ -78,15 +83,15 @@
* @param nameList A list of names (Strings) that have been added by the user but have not yet been added to the target
* @param title The title of the dialog
*/
- protected NewConfigurationDialog(Shell parentShell, IManagedProject managedProject, ArrayList nameList, String title) {
+ protected NewConfigurationDialog(Shell parentShell, IManagedProject managedProject, String title) {
super(parentShell);
this.title = title;
setShellStyle(getShellStyle()|SWT.RESIZE);
newName = new String();
+ newDescription = new String();
parentConfig = null;
this.managedProject = managedProject;
- reservedNames = nameList;
-
+ reservedNames = new ArrayList();
// The default behaviour is to clone the settings
clone = true;
@@ -94,6 +99,12 @@
definedConfigs = managedProject.getConfigurations();
IProjectType projectType = managedProject.getProjectType();
defaultConfigs = projectType.getConfigurations();
+
+ // Get the defined configuration names
+ for (int i = 0; i < definedConfigs.length; i++) {
+ reservedNames.add(definedConfigs[i].getName());
+ }
+
}
/* (non-Javadoc)
@@ -103,23 +114,42 @@
*/
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.OK_ID) {
+ String description = new String();
+ String nameAndDescription = new String();
+ String baseConfigNameAndDescription = new String();
+
newName = configName.getText().trim();
- String baseConfigName = new String();
+ newDescription = configDescription.getText().trim();
+
if (clone) {
- baseConfigName = cloneConfigSelector.getItem(cloneConfigSelector.getSelectionIndex());
+ baseConfigNameAndDescription = cloneConfigSelector.getItem(cloneConfigSelector.getSelectionIndex());
for (int i = 0; i < definedConfigs.length; i++) {
IConfiguration config = definedConfigs[i];
- if (config.getName().equals(baseConfigName)) {
+ description = config.getDescription();
+
+ if( (description == null) || (description.equals("")) ){ //$NON-NLS-1$
+ nameAndDescription = config.getName();
+ } else {
+ nameAndDescription = config.getName() + "( " + description + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ if (nameAndDescription.equals(baseConfigNameAndDescription)) {
parentConfig = config;
break;
}
}
} else {
// Get the parent config out of the default config list
- baseConfigName = copyConfigSelector.getItem(copyConfigSelector.getSelectionIndex());
+ baseConfigNameAndDescription = copyConfigSelector.getItem(copyConfigSelector.getSelectionIndex());
for (int i = 0; i < defaultConfigs.length; i++) {
IConfiguration config = defaultConfigs[i];
- if (config.getName().equals(baseConfigName)) {
+ description = config.getDescription();
+
+ if( (description == null) || (description.equals("")) ) { //$NON-NLS-1$
+ nameAndDescription = config.getName();
+ } else {
+ nameAndDescription = config.getName() + "( " + description + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ if (nameAndDescription.equals(baseConfigNameAndDescription)) {
parentConfig = config;
break;
}
@@ -127,6 +157,7 @@
}
} else {
newName = null;
+ newDescription = null;
parentConfig = null;
}
super.buttonPressed(buttonId);
@@ -154,20 +185,36 @@
}
protected Control createDialogArea(Composite parent) {
+
Composite composite = new Composite(parent, SWT.NULL);
composite.setFont(parent.getFont());
composite.setLayout(new GridLayout(3, false));
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- // Add a label and a text widget
- final Label nameLabel = new Label(composite, SWT.LEFT);
+
+ // Create a group for the name & description
+
+ final Group group1 = new Group(composite, SWT.NONE);
+ group1.setFont(composite.getFont());
+ GridLayout layout1 = new GridLayout(3, false);
+ group1.setLayout(layout1);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 3;
+ group1.setLayoutData(gd);
+
+ // Add a label and a text widget for Configuration's name
+ final Label nameLabel = new Label(group1, SWT.LEFT);
nameLabel.setFont(parent.getFont());
nameLabel.setText(ManagedBuilderUIMessages.getResourceString(NAME));
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 1;
+ gd.grabExcessHorizontalSpace = false;
nameLabel.setLayoutData(gd);
- configName = new Text(composite, SWT.SINGLE | SWT.BORDER);
- configName.setFont(composite.getFont());
+
+ configName = new Text(group1, SWT.SINGLE | SWT.BORDER);
+ configName.setFont(group1.getFont());
+ configName.setText(getNewName());
+ configName.setFocus();
gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
gd.horizontalSpan = 2;
gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
@@ -178,7 +225,27 @@
}
});
- // Create a group fro the radio buttons
+// Add a label and a text widget for Configuration's description
+ final Label descriptionLabel = new Label(group1, SWT.LEFT);
+ descriptionLabel.setFont(parent.getFont());
+ descriptionLabel.setText(ManagedBuilderUIMessages.getResourceString(DESCRIPTION));
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 1;
+ gd.grabExcessHorizontalSpace = false;
+ descriptionLabel.setLayoutData(gd);
+ configDescription = new Text(group1, SWT.SINGLE | SWT.BORDER);
+ configDescription.setFont(group1.getFont());
+ configDescription.setText(getNewDescription());
+ configDescription.setFocus();
+
+ gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = 2;
+ gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ configDescription.setLayoutData(gd);
+
+ // Create a group for the radio buttons
+
final Group group = new Group(composite, SWT.NONE);
group.setFont(composite.getFont());
group.setText(ManagedBuilderUIMessages.getResourceString(GROUP));
@@ -226,7 +293,7 @@
cloneConfigSelector = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.BORDER);
cloneConfigSelector.setFont(group.getFont());
- cloneConfigSelector.setItems(getDefinedConfigNames());
+ cloneConfigSelector.setItems(getDefinedConfigNamesAndDescriptions());
index = cloneConfigSelector.indexOf(newName);
cloneConfigSelector.select(index < 0 ? 0 : index);
gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
@@ -286,16 +353,20 @@
}
if(defaultConfigs.length != 0){
- String names[] = new String[defaultConfigs.length];
- for (int i = 0; i < defaultConfigs.length; ++i)
- names[i] = defaultConfigs[i].getName();
-
+ String namesAndDescriptions[] = new String[defaultConfigs.length];
+ for (int i = 0; i < defaultConfigs.length; ++i) {
+ if ( (defaultConfigs[i].getDescription() == null) || defaultConfigs[i].getDescription().equals("")) //$NON-NLS-1$
+ namesAndDescriptions[i] = defaultConfigs[i].getName();
+ else
+ namesAndDescriptions[i] = defaultConfigs[i].getName() + "( " + defaultConfigs[i].getDescription() + " )"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
int selectionIndex = copyConfigSelector.getSelectionIndex();
String oldSelection = null;
if(selectionIndex != -1)
oldSelection = copyConfigSelector.getItem(selectionIndex);
- copyConfigSelector.setItems(names);
+ copyConfigSelector.setItems(namesAndDescriptions);
if(oldSelection != null)
selectionIndex = copyConfigSelector.indexOf(oldSelection);
if(selectionIndex == -1)
@@ -313,13 +384,16 @@
* This list will be used to populate the list of configurations to
* clone.
*/
- private String [] getDefinedConfigNames() {
- String [] names = new String[definedConfigs.length];
+ private String [] getDefinedConfigNamesAndDescriptions() {
+ String [] namesAndDescriptions = new String[definedConfigs.length];
for (int index = 0; index < definedConfigs.length; ++index) {
IConfiguration config = definedConfigs[index];
- names[index] = config.getName();
+ if ( (config.getDescription() == null) || config.getDescription().equals("")) //$NON-NLS-1$
+ namesAndDescriptions[index] = config.getName();
+ else
+ namesAndDescriptions[index] = config.getName() + "( " + config.getDescription() +" )"; //$NON-NLS-1$ //$NON-NLS-2$
}
- return names;
+ return namesAndDescriptions;
}
/**
@@ -440,10 +514,15 @@
status.setError(ManagedBuilderUIMessages.getFormattedString(CASE, currentName));
} else if (!validateName(currentName)) {
// TODO Create a decent I18N string to describe this problem
- status.setError(ManagedBuilderUIMessages.getFormattedString(INVALID, currentName)); //$NON-NLS-1$
+ status.setError(ManagedBuilderUIMessages.getFormattedString(INVALID, currentName));
}
updateStatus(status);
return;
}
+ public String getNewDescription() {
+ return newDescription;
+ }
+
+
}
Index: src/org/eclipse/cdt/managedbuilder/ui/wizards/ConfigurationLabelProvider.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/ConfigurationLabelProvider.java,v
retrieving revision 1.1
diff -u -r1.1 ConfigurationLabelProvider.java
--- src/org/eclipse/cdt/managedbuilder/ui/wizards/ConfigurationLabelProvider.java 15 Sep 2003 20:44:43 -0000 1.1
+++ src/org/eclipse/cdt/managedbuilder/ui/wizards/ConfigurationLabelProvider.java 29 Apr 2005 20:38:40 -0000
@@ -1,7 +1,7 @@
package org.eclipse.cdt.managedbuilder.ui.wizards;
/**********************************************************************
- * Copyright (c) 2002,2003 Rational Software Corporation and others.
+ * Copyright (c) 2002,2005 Rational Software Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v0.5
* which accompanies this distribution, and is available at
@@ -24,7 +24,12 @@
//
public String getColumnText(Object obj, int index) {
if (obj instanceof IConfiguration) {
- return ((IConfiguration) obj).getName();
+ IConfiguration tmpConfig = (IConfiguration) obj;
+
+ if( (tmpConfig.getDescription() == null)|| (tmpConfig.getDescription().equals("")) ) //$NON-NLS-1$
+ return ((IConfiguration) obj).getName();
+ else
+ return ( tmpConfig.getName() + " ( " + tmpConfig.getDescription() + " )"); //$NON-NLS-1$ //$NON-NLS-2$
}
return new String();
}
Index: src/org/eclipse/cdt/managedbuilder/ui/properties/RenameConfigurationDialog.java
===================================================================
RCS file: src/org/eclipse/cdt/managedbuilder/ui/properties/RenameConfigurationDialog.java
diff -N src/org/eclipse/cdt/managedbuilder/ui/properties/RenameConfigurationDialog.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/managedbuilder/ui/properties/RenameConfigurationDialog.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,332 @@
+/**********************************************************************
+ * Copyright (c) 2005 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v0.5
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.managedbuilder.ui.properties;
+
+import org.eclipse.cdt.managedbuilder.core.IManagedProject;
+import java.util.ArrayList;
+import java.util.Iterator;
+import org.eclipse.cdt.internal.ui.dialogs.StatusDialog;
+import org.eclipse.cdt.internal.ui.dialogs.StatusInfo;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages;
+import org.eclipse.cdt.utils.ui.controls.ControlFactory;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class RenameConfigurationDialog extends StatusDialog {
+ // String constants
+ private static final String PREFIX = "RenameConfiguration"; //$NON-NLS-1$
+ private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
+ private static final String ERROR = PREFIX + ".error"; //$NON-NLS-1$
+ private static final String NAME = LABEL + ".name"; //$NON-NLS-1$
+ private static final String DUPLICATE = ERROR + ".duplicateName"; //$NON-NLS-1$
+ private static final String CASE = ERROR + ".caseName"; //$NON-NLS-1$
+ private static final String INVALID = ERROR + ".invalidName"; //$NON-NLS-1$
+ private static final String DESCRIPTION = LABEL + ".description"; //$NON-NLS-1$
+
+ // Widgets
+
+ private Text configName;
+ private Text configDescription;
+
+ private IConfiguration[] definedConfigs;
+ private IConfiguration renameConfig;
+ private IManagedProject managedProject;
+ private String newName;
+ private String newDescription;
+
+ private String originalName;
+ /** A list containing config names that have been defined but not added to the target */
+ final private ArrayList reservedNames;
+ final private String title;
+
+
+ /**
+ * @param parentShell
+ * @param managedTarget
+ * @param renameConfig
+ * @param title
+ */
+ protected RenameConfigurationDialog(Shell parentShell, IManagedProject managedProject, IConfiguration renameConfig, String title) {
+ super(parentShell);
+ this.title = title;
+ this.renameConfig = renameConfig;
+ setShellStyle(getShellStyle()|SWT.RESIZE);
+ newName = renameConfig.getName();
+ newDescription = renameConfig.getDescription();
+ if(newDescription == null)
+ newDescription = new String();
+
+ // Store the original name
+ setOriginalName(renameConfig.getName());
+
+ this.managedProject = managedProject;
+ reservedNames = new ArrayList();
+
+ definedConfigs = managedProject.getConfigurations();
+// Get the defined configuration names
+ for (int i = 0; i < definedConfigs.length; i++) {
+ reservedNames.add(definedConfigs[i].getName());
+ }
+ }
+
+ /* (non-Javadoc)
+ * Method declared on Dialog. Cache the name and base config selections.
+ * We don't have to worry that the index or name is wrong because we
+ * enable the OK button IFF those conditions are met.
+ */
+ protected void buttonPressed(int buttonId) {
+ if (buttonId == IDialogConstants.OK_ID) {
+ newName = configName.getText().trim();
+ newDescription = configDescription.getText().trim();
+ }
+ super.buttonPressed(buttonId);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
+ */
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ if (title != null)
+ shell.setText(title);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
+ */
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ configName.setFocus();
+ if (configName != null) {
+ configName.setText(newName);
+ }
+ validateState();
+ }
+
+ protected Control createDialogArea(Composite parent) {
+
+ Composite composite = new Composite(parent, SWT.NULL);
+ composite.setFont(parent.getFont());
+ composite.setLayout(new GridLayout(3, false));
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create a group for the name & description
+
+ final Group group1 = new Group(composite, SWT.NONE);
+ group1.setFont(composite.getFont());
+ GridLayout layout1 = new GridLayout(3, false);
+ group1.setLayout(layout1);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 3;
+ group1.setLayoutData(gd);
+
+ // Add a label and a text widget for Configuration's name
+ final Label nameLabel = new Label(group1, SWT.LEFT);
+ nameLabel.setFont(parent.getFont());
+ nameLabel.setText(ManagedBuilderUIMessages.getResourceString(NAME));
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 1;
+ gd.grabExcessHorizontalSpace = false;
+ nameLabel.setLayoutData(gd);
+
+ configName = new Text(group1, SWT.SINGLE | SWT.BORDER);
+ configName.setFont(group1.getFont());
+ configName.setText(getNewName());
+ configName.setFocus();
+ gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = 2;
+ gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ configName.setLayoutData(gd);
+ configName.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ validateState();
+ }
+ });
+
+// Add a label and a text widget for Configuration's description
+ final Label descriptionLabel = new Label(group1, SWT.LEFT);
+ descriptionLabel.setFont(parent.getFont());
+ descriptionLabel.setText(ManagedBuilderUIMessages.getResourceString(DESCRIPTION));
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 1;
+ gd.grabExcessHorizontalSpace = false;
+ descriptionLabel.setLayoutData(gd);
+ configDescription = new Text(group1, SWT.SINGLE | SWT.BORDER);
+ configDescription.setFont(group1.getFont());
+ configDescription.setText(getNewDescription());
+ configDescription.setFocus();
+
+ gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = 2;
+ gd.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ configDescription.setLayoutData(gd);
+ return composite;
+
+
+ }
+
+ /* (non-Javadoc)
+ * Answers <code>true</code> if the name entered by the user clashes
+ * with an existing configuration name.
+ *
+ * @param newName
+ * @return
+ */
+ protected boolean isDuplicateName(String newName) {
+ // First check whether the 'newName' is same as original name, if so return false.
+ // This is needed in case user wants to keep same name but change the description of configuration
+
+ if(newName.equals(getOriginalName()))
+ return false;
+
+ // Return true if there is already a config of that name defined
+ for (int index = 0; index < definedConfigs.length; index++) {
+ IConfiguration configuration = definedConfigs[index];
+ if (configuration.getName().equals(newName)) {
+ return true;
+ }
+ }
+ if (reservedNames.contains(newName)) {
+ return true;
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * Answers <code>true</code> if the name entered by the user differs
+ * only in case from an existing name.
+ *
+ * @param newName
+ * @return
+ */
+ protected boolean isSimilarName(String newName) {
+ // First check whether the 'newName' is similar to original name, if so return false.
+ // This is needed in case user wants to keep similar name
+
+ if(newName.equalsIgnoreCase(getOriginalName()))
+ return false;
+
+ // Return true if there is already a config of that name defined on the target
+ for (int index = 0; index < definedConfigs.length; index++) {
+ IConfiguration configuration = definedConfigs[index];
+ if (configuration.getName().equalsIgnoreCase(newName)) {
+ return true;
+ }
+ }
+ Iterator iter = reservedNames.listIterator();
+ while (iter.hasNext()) {
+ if (((String)iter.next()).equalsIgnoreCase(newName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * Checks the argument for leading whitespaces and invalid directory name characters.
+ * @param name
+ * @return <I>true</i> is the name is a valid directory name with no whitespaces
+ */
+ private boolean validateName(String name) {
+ // Iterate over the name checking for bad characters
+ char[] chars = name.toCharArray();
+ // No whitespaces at the start of a name
+ if (Character.isWhitespace(chars[0])) {
+ return false;
+ }
+ for (int index = 0; index < chars.length; ++index) {
+ // Config name must be a valid dir name too, so we ban "\ / : * ? " < >" in the names
+ if (!Character.isLetterOrDigit(chars[index])) {
+ switch (chars[index]) {
+ case '/':
+ case '\\':
+ case ':':
+ case '*':
+ case '?':
+ case '\"':
+ case '<':
+ case '>':
+ return false;
+ default:
+ break;
+ }
+ }
+ }
+ return true;
+ }
+ /* (non-Javadoc)
+ * Update the status message and button state based on the input selected
+ * by the user
+ *
+ */
+ private void validateState() {
+ StatusInfo status= new StatusInfo();
+ String currentName = configName.getText();
+ int nameLength = currentName.length();
+ // Make sure the name is not a duplicate
+ if (isDuplicateName(currentName)) {
+ status.setError(ManagedBuilderUIMessages.getFormattedString(DUPLICATE, currentName));
+ } else if (isSimilarName(currentName)) {
+ status.setError(ManagedBuilderUIMessages.getFormattedString(CASE, currentName));
+ } else if (!validateName(currentName)) {
+ // TODO Create a decent I18N string to describe this problem
+ status.setError(ManagedBuilderUIMessages.getFormattedString(INVALID, currentName));
+ }
+ updateStatus(status);
+ return;
+ }
+
+ public String getNewName() {
+ return newName;
+ }
+
+ public String getNewDescription() {
+ return newDescription;
+ }
+
+ public void setNewDescription(String newDescription) {
+ this.newDescription = newDescription;
+ }
+
+ public void setNewName(String newName) {
+ this.newName = newName;
+ }
+
+ public String getOriginalName() {
+ return originalName;
+ }
+
+ public void setOriginalName(String originalName) {
+ this.originalName = originalName;
+ }
+}
Index: src/org/eclipse/cdt/managedbuilder/core/IBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IBuilder.java,v
retrieving revision 1.2
diff -u -r1.2 IBuilder.java
--- src/org/eclipse/cdt/managedbuilder/core/IBuilder.java 4 Nov 2004 16:56:27 -0000 1.2
+++ src/org/eclipse/cdt/managedbuilder/core/IBuilder.java 29 Apr 2005 20:38:15 -0000
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2004 Intel Corporation and others.
+ * Copyright (c) 2004, 2005 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
@@ -14,7 +14,7 @@
/**
* This class represents the utility that drives the build process
- * (typically, but not necessarily, a variant of �make�). It defines
+ * (typically, but not necessarily, a variant of �make�). It defines
* the command needed to invoke the build utility in the command attribute.
* Any special flags that need to be passed to the builder are defined
* in the arguments attribute. The builder can specify the error parser(s)
@@ -29,6 +29,10 @@
public static final String BUILDFILEGEN_ID ="buildfileGenerator"; //$NON-NLS-1$
public static final String COMMAND = "command"; //$NON-NLS-1$
+ public static final String VERSIONS_SUPPORTED = "versionsSupported"; //$NON-NLS-1$
+ public static final String CONVERT_TO_ID = "convertToId"; //$NON-NLS-1$
+
+
/**
* Returns the command line arguments to pass to the build/make utility used
* to build a configuration.
@@ -156,5 +160,36 @@
* @param b
*/
public void setIsAbstract(boolean b);
+
+ /**
+ * Returns the 'versionsSupported' of this builder
+ *
+ * @return String
+ */
+
+ public String getVersionsSupported();
+
+ /**
+ * Returns the 'convertToId' of this builder
+ *
+ * @return String
+ */
+
+ public String getConvertToId();
+
+ /**
+ * Sets the 'versionsSupported' attribute of the builder.
+ *
+ * @param versionsSupported
+ */
+
+ public void setVersionsSupported(String versionsSupported);
+
+ /**
+ * Sets the 'convertToId' attribute of the builder.
+ *
+ * @param convertToId
+ */
+ public void setConvertToId(String convertToId);
}
Index: src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java,v
retrieving revision 1.13
diff -u -r1.13 IConfiguration.java
--- src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java 28 Apr 2005 16:54:40 -0000 1.13
+++ src/org/eclipse/cdt/managedbuilder/core/IConfiguration.java 29 Apr 2005 20:38:15 -0000
@@ -38,6 +38,24 @@
public static final String ERROR_PARSERS = "errorParsers"; //$NON-NLS-1$
public static final String EXTENSION = "artifactExtension"; //$NON-NLS-1$
public static final String PARENT = "parent"; //$NON-NLS-1$
+
+ public static final String DESCRIPTION = "description"; //$NON-NLS-1$
+
+
+
+ /**
+ * Returns the description of the configuration.
+ *
+ * @return String
+ */
+ public String getDescription();
+
+ /**
+ * Sets the description of the receiver to the value specified in the argument
+ *
+ * @param description
+ */
+ public void setDescription(String description);
/**
* Creates a child resource configuration corresponding to the passed in file.
Index: src/org/eclipse/cdt/managedbuilder/core/IProjectType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IProjectType.java,v
retrieving revision 1.3
diff -u -r1.3 IProjectType.java
--- src/org/eclipse/cdt/managedbuilder/core/IProjectType.java 28 Apr 2005 16:54:40 -0000 1.3
+++ src/org/eclipse/cdt/managedbuilder/core/IProjectType.java 29 Apr 2005 20:38:16 -0000
@@ -26,7 +26,7 @@
* sharing of configurations. If you have defined a project type that
* should not be selected by the user, but is a root for other project
* types, it may be declared abstract by setting the isAbstract attribute
- * to �true�. Abstract project types do not appear in the UI. You must
+ * to �true�. Abstract project types do not appear in the UI. You must
* provide a unique identifier for the project type in the id attribute.
* Children of the abstract project type will have the same configurations
* that the abstract project type has, unless they are explicitly named
@@ -47,6 +47,7 @@
public static final String IS_ABSTRACT = "isAbstract"; //$NON-NLS-1$
public static final String UNUSED_CHILDREN = "unusedChildren"; //$NON-NLS-1$
public static final String IS_TEST = "isTest"; //$NON-NLS-1$
+ public static final String CONFIGURATION_NAME_PROVIDER = "configurationNameProvider"; //$NON-NLS-1$
public static final String PROJECT_ENVIRONMENT_SUPPLIER = "projectEnvironmentSupplier"; //$NON-NLS-1$
/**
@@ -141,6 +142,20 @@
public boolean isSupported();
/**
+ * Returns the configurationNameProvider.
+ *
+ * @return IConfigurationNameProvider
+ */
+ public IConfigurationNameProvider getConfigurationNameProvider();
+
+ /**
+ * Sets the configurationNameProvider
+ *
+ * @param configurationNameProvider
+ */
+ public void setConfigurationNameProvider(IConfigurationNameProvider configurationNameProvider);
+
+ /**
* Returns the tool-integrator provided implementation of the project environment variable supplier
* or <code>null</code> if none.
*
Index: src/org/eclipse/cdt/managedbuilder/core/ITool.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITool.java,v
retrieving revision 1.14
diff -u -r1.14 ITool.java
--- src/org/eclipse/cdt/managedbuilder/core/ITool.java 28 Apr 2005 16:54:41 -0000 1.14
+++ src/org/eclipse/cdt/managedbuilder/core/ITool.java 29 Apr 2005 20:38:16 -0000
@@ -45,6 +45,9 @@
public static final String TOOL_ELEMENT_NAME = "tool"; //$NON-NLS-1$
public static final String WHITE_SPACE = " "; //$NON-NLS-1$
+ public static final String VERSIONS_SUPPORTED = "versionsSupported"; //$NON-NLS-1$
+ public static final String CONVERT_TO_ID = "convertToId"; //$NON-NLS-1$
+
public static final int FILTER_C = 0;
public static final int FILTER_CC = 1;
public static final int FILTER_BOTH = 2;
@@ -690,6 +693,34 @@
public boolean isExtensionElement();
/**
+ * Returns the 'versionsSupported' of this tool
+ *
+ * @return String
+ */
+ public String getVersionsSupported();
+
+ /**
+ * Returns the 'convertToId' of this tool
+ *
+ * @return String
+ */
+ public String getConvertToId();
+
+ /**
+ * Sets the 'versionsSupported' attribute of the tool.
+ *
+ * @param versionsSupported
+ */
+ public void setVersionsSupported(String versionsSupported);
+
+ /**
+ * Sets the 'convertToId' attribute of the tool.
+ *
+ * @param convertToId
+ */
+ public void setConvertToId(String convertToId);
+
+ /**
* Returns an array of the Environment Build Path variable descriptors
*
* @return IEnvVarBuildPath[]
Index: src/org/eclipse/cdt/managedbuilder/core/IToolChain.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolChain.java,v
retrieving revision 1.5
diff -u -r1.5 IToolChain.java
--- src/org/eclipse/cdt/managedbuilder/core/IToolChain.java 28 Apr 2005 16:54:40 -0000 1.5
+++ src/org/eclipse/cdt/managedbuilder/core/IToolChain.java 29 Apr 2005 20:38:16 -0000
@@ -16,7 +16,7 @@
/**
* This interface represents a tool-integrator-defined, ordered set of tools
- * that transform the project�s input into the project�s outputs. A
+ * that transform the project�s input into the project�s outputs. A
* tool-chain can be defined as part of a configuration, or as an
* independent specification that is referenced in a separate configuration
* via the toolChain superclass attribute.
@@ -25,7 +25,7 @@
* the tools used in the tool-chain. The toolChain contains one child of
* type targetPlatform. This defines the architecture/os combination where
* the outputs of the project can be deployed. The toolChain contains one
- * child of type builder. This defines the �build� or �make� utility that
+ * child of type builder. This defines the �build� or �make� utility that
* is used to drive the transformation of the inputs into outputs.
*
* @since 2.1
@@ -35,6 +35,8 @@
public static final String OS_LIST = "osList"; //$NON-NLS-1$
public static final String ARCH_LIST = "archList"; //$NON-NLS-1$
public static final String ERROR_PARSERS = "errorParsers"; //$NON-NLS-1$
+ public static final String VERSIONS_SUPPORTED = "versionsSupported"; //$NON-NLS-1$
+ public static final String CONVERT_TO_ID = "convertToId"; //$NON-NLS-1$
public static final String TARGET_TOOL = "targetTool"; //$NON-NLS-1$
public static final String SECONDARY_OUTPUTS = "secondaryOutputs"; //$NON-NLS-1$
public static final String IS_TOOL_CHAIN_SUPPORTED = "isToolChainSupported"; //$NON-NLS-1$
@@ -76,6 +78,36 @@
public void removeLocalTargetPlatform();
/**
+ * Returns the 'versionsSupported' of this tool-chain
+ *
+ * @return String
+ */
+
+ public String getVersionsSupported();
+ /**
+ * Returns the 'convertToId' of this tool-chain
+ *
+ * @return String
+ */
+
+ public String getConvertToId();
+
+ /**
+ * Sets the 'versionsSupported' attribute of the tool-chain.
+ *
+ * @param versionsSupported
+ */
+
+ public void setVersionsSupported(String versionsSupported);
+
+ /**
+ * Sets the 'convertToId' attribute of the tool-chain.
+ *
+ * @param convertToId
+ */
+ public void setConvertToId(String convertToId);
+
+ /**
* Creates the <code>Builder</code> child of this tool-chain.
*
* @param IBuilder The superClass, if any
Index: src/org/eclipse/cdt/managedbuilder/core/IToolReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IToolReference.java,v
retrieving revision 1.5
diff -u -r1.5 IToolReference.java
--- src/org/eclipse/cdt/managedbuilder/core/IToolReference.java 28 Oct 2004 17:16:53 -0000 1.5
+++ src/org/eclipse/cdt/managedbuilder/core/IToolReference.java 29 Apr 2005 20:38:16 -0000
@@ -1,5 +1,5 @@
/**********************************************************************
- * Copyright (c) 2004 TimeSys Corporation and others.
+ * Copyright (c) 2004, 2005 TimeSys Corporation and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java,v
retrieving revision 1.4
diff -u -r1.4 Builder.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java 21 Apr 2005 02:05:04 -0000 1.4
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java 29 Apr 2005 20:38:16 -0000
@@ -40,6 +40,9 @@
private String command;
private String args;
private IConfigurationElement buildFileGeneratorElement;
+ private String versionsSupported;
+ private String convertToId;
+
// Miscellaneous
private boolean isExtensionBuilder = false;
private boolean isDirty = false;
@@ -177,6 +180,12 @@
// Get the unused children, if any
unusedChildren = element.getAttribute(IProjectType.UNUSED_CHILDREN);
+ // Get the 'versionsSupported' attribute
+ versionsSupported = element.getAttribute(VERSIONS_SUPPORTED);
+
+ // Get the 'convertToId' attribute
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+
// isAbstract
String isAbs = element.getAttribute(IProjectType.IS_ABSTRACT);
if (isAbs != null){
@@ -224,6 +233,16 @@
}
}
+ // Get the 'versionSupported' attribute
+ if (element.hasAttribute(VERSIONS_SUPPORTED)) {
+ versionsSupported = element.getAttribute(VERSIONS_SUPPORTED);
+ }
+
+ // Get the 'convertToId' id
+ if (element.hasAttribute(CONVERT_TO_ID)) {
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+ }
+
// Get the unused children, if any
if (element.hasAttribute(IProjectType.UNUSED_CHILDREN)) {
unusedChildren = element.getAttribute(IProjectType.UNUSED_CHILDREN);
@@ -283,6 +302,16 @@
element.setAttribute(IProjectType.IS_ABSTRACT, isAbstract.toString());
}
+ // versionsSupported
+ if (versionsSupported != null) {
+ element.setAttribute(VERSIONS_SUPPORTED, versionsSupported);
+ }
+
+ // convertToId
+ if (convertToId != null) {
+ element.setAttribute(CONVERT_TO_ID, convertToId);
+ }
+
if (errorParserIds != null) {
element.setAttribute(IToolChain.ERROR_PARSERS, errorParserIds);
}
@@ -533,5 +562,60 @@
}
}
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuilder#getConvertToId()
+ */
+ public String getConvertToId() {
+ if (convertToId == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getConvertToId();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return convertToId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuilder#setConvertToId(String)
+ */
+ public void setConvertToId(String convertToId) {
+ if (convertToId == null && this.convertToId == null) return;
+ if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
+ this.convertToId = convertToId;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuilder#getVersionsSupported()
+ */
+ public String getVersionsSupported() {
+ if (versionsSupported == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getVersionsSupported();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return versionsSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IBuilder#setVersionsSupported(String)
+ */
+
+ public void setVersionsSupported(String versionsSupported) {
+ if (versionsSupported == null && this.versionsSupported == null) return;
+ if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
+ this.versionsSupported = versionsSupported;
+ setDirty(true);
+ }
+ return;
+ }
}
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java,v
retrieving revision 1.24
diff -u -r1.24 Configuration.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java 28 Apr 2005 16:54:40 -0000 1.24
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Configuration.java 29 Apr 2005 20:38:16 -0000
@@ -72,6 +72,36 @@
private boolean rebuildNeeded = false;
private boolean resolved = true;
+ private String description;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IConfiguration#getDescription()
+ */
+ public String getDescription() {
+ if (description == null) {
+ // If I have a parent, ask it
+ if (parent != null) {
+ return parent.getDescription();
+ } else {
+ // I'm it
+ return EMPTY_STRING;
+ }
+ } else {
+ return description;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IConfiguration#setDescription(java.lang.String)
+ */
+ public void setDescription(String description) {
+ if (description == null && this.description == null) return;
+ if (this.description == null || description == null || !description.equals(this.description)) {
+ this.description = description;
+ isDirty = true;
+ }
+ }
+
/*
* C O N S T R U C T O R S
*/
@@ -268,7 +298,7 @@
// For each tool element child of the tool-chain that is the child of
// the selected configuration element, create a tool element child of
- // the cloned configuration�s tool-chain element that specifies the
+ // the cloned configuration�s tool-chain element that specifies the
// original tool element as its superClass.
Iterator iter = superChain.getToolList().listIterator();
while (iter.hasNext()) {
@@ -316,6 +346,9 @@
// name
name = element.getAttribute(IConfiguration.NAME);
+ // description
+ description = element.getAttribute(IConfiguration.DESCRIPTION);
+
// parent
String parentID = element.getAttribute(IConfiguration.PARENT);
if (parentID != null) {
@@ -359,6 +392,10 @@
if (element.hasAttribute(IConfiguration.NAME))
setName(element.getAttribute(IConfiguration.NAME));
+ // description
+ if (element.hasAttribute(IConfiguration.DESCRIPTION))
+ setDescription(element.getAttribute(IConfiguration.DESCRIPTION));
+
if (element.hasAttribute(IConfiguration.PARENT)) {
// See if the parent belongs to the same project
parent = managedProject.getConfiguration(element.getAttribute(IConfiguration.PARENT));
@@ -421,6 +458,9 @@
if (name != null)
element.setAttribute(IConfiguration.NAME, name);
+ if (description != null)
+ element.setAttribute(IConfiguration.DESCRIPTION, description);
+
if (parent != null)
element.setAttribute(IConfiguration.PARENT, parent.getId());
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ProjectType.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ProjectType.java,v
retrieving revision 1.4
diff -u -r1.4 ProjectType.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ProjectType.java 28 Apr 2005 16:54:40 -0000 1.4
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ProjectType.java 29 Apr 2005 20:38:16 -0000
@@ -16,10 +16,14 @@
import java.util.List;
import java.util.Map;
+import org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider;
+import org.eclipse.cdt.managedbuilder.core.IManagedCommandLineGenerator;
import org.eclipse.cdt.managedbuilder.core.IProjectType;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
import org.eclipse.cdt.managedbuilder.core.IManagedConfigElement;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.cdt.managedbuilder.envvar.IProjectEnvironmentVariableSupplier;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -39,6 +43,10 @@
private Boolean isAbstract;
private Boolean isTest;
private String unusedChildren;
+
+ private IConfigurationElement configurationNameProviderElement = null;
+ private IConfigurationNameProvider configurationNameProvider = null;
+
private IConfigurationElement environmentVariableSupplierElement = null;
private IProjectEnvironmentVariableSupplier environmentVariableSupplier = null;
@@ -66,8 +74,23 @@
// Load the configuration children
IManagedConfigElement[] configs = element.getChildren(IConfiguration.CONFIGURATION_ELEMENT_NAME);
- for (int n = 0; n < configs.length; ++n) {
- Configuration config = new Configuration(this, configs[n]);
+
+ String [] usedConfigNames = new String[0];
+ IConfigurationNameProvider configurationNameProvder = getConfigurationNameProvider();
+
+ if ( configurationNameProvder != null ) {
+ // Tool Integrator provided 'ConfigurationNameProvider' class
+ // to get configuration names dynamically based architecture, os, toolchain version etc.
+ for (int n = 0; n < configs.length; ++n) {
+ Configuration config = new Configuration(this, configs[n]);
+ String newConfigName = configurationNameProvder.getNewConfigurationName(config, usedConfigNames);
+ config.setName(newConfigName);
+ usedConfigNames[n] = newConfigName;
+ }
+ } else {
+ for (int n = 0; n < configs.length; ++n) {
+ Configuration config = new Configuration(this, configs[n]);
+ }
}
}
@@ -129,12 +152,16 @@
isTest = new Boolean("true".equals(isTestStr)); //$NON-NLS-1$
}
+ // Store the configuration element IFF there is a configuration name provider defined
+ if (element.getAttribute(CONFIGURATION_NAME_PROVIDER) != null && element instanceof DefaultManagedConfigElement) {
+ configurationNameProviderElement = ((DefaultManagedConfigElement)element).getConfigurationElement();
+ }
+
// Get the environmentVariableSupplier configuration element
String environmentVariableSupplier = element.getAttribute(PROJECT_ENVIRONMENT_SUPPLIER);
if(environmentVariableSupplier != null && element instanceof DefaultManagedConfigElement){
environmentVariableSupplierElement = ((DefaultManagedConfigElement)element).getConfigurationElement();
}
-
}
/*
@@ -364,6 +391,56 @@
return false;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IProjectType#getConfigurationNameProviderElement()
+ */
+ public IConfigurationElement getConfigurationNameProviderElement() {
+ if(configurationNameProviderElement == null){
+ if(superClass != null) {
+ ProjectType tmpSuperClass = (ProjectType)superClass;
+ return tmpSuperClass.getConfigurationNameProviderElement();
+ }
+ }
+ return configurationNameProviderElement;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IProjectType#setConfigurationNameProviderElement(IConfigurationElement)
+ */
+
+ public void setConfigurationNameProviderElement(IConfigurationElement configurationElement) {
+ configurationNameProviderElement = configurationElement;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IProjectType#getConfigurationNameProvider()
+ */
+ public IConfigurationNameProvider getConfigurationNameProvider() {
+
+ if (configurationNameProvider != null) {
+ return configurationNameProvider;
+ }
+
+ IConfigurationElement element = getConfigurationNameProviderElement();
+ if (element != null) {
+ try {
+ if (element.getAttribute(CONFIGURATION_NAME_PROVIDER) != null) {
+ configurationNameProvider = (IConfigurationNameProvider) element.createExecutableExtension(CONFIGURATION_NAME_PROVIDER);
+ return configurationNameProvider;
+ }
+ } catch (CoreException e) {}
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.build.managed.IProjectType#setConfigurationNameProvider(IConfigurationNameProvider)
+ */
+
+ public void setConfigurationNameProvider(IConfigurationNameProvider configurationNameProvider) {
+ this.configurationNameProvider = configurationNameProvider;
+ }
+
/**
* Returns the plugin.xml element of the projectEnvironmentSupplier extension or <code>null</code> if none.
*
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java,v
retrieving revision 1.26
diff -u -r1.26 Tool.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java 28 Apr 2005 16:54:40 -0000 1.26
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java 29 Apr 2005 20:38:17 -0000
@@ -87,6 +87,8 @@
private String outputPrefix;
private String errorParserIds;
private String commandLinePattern;
+ private String versionsSupported;
+ private String convertToId;
private Boolean advancedInputCategory;
private Boolean customBuildStep;
private String announcement;
@@ -403,6 +405,12 @@
// Get the unused children, if any
unusedChildren = element.getAttribute(IProjectType.UNUSED_CHILDREN);
+ // Get the 'versionsSupported' attribute
+ versionsSupported =element.getAttribute(VERSIONS_SUPPORTED);
+
+ // Get the 'convertToId' attribute
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+
// isAbstract
String isAbs = element.getAttribute(IProjectType.IS_ABSTRACT);
if (isAbs != null){
@@ -530,6 +538,16 @@
}
}
+ // Get the 'versionSupported' attribute
+ if (element.hasAttribute(VERSIONS_SUPPORTED)) {
+ versionsSupported = element.getAttribute(VERSIONS_SUPPORTED);
+ }
+
+ // Get the 'convertToId' id
+ if (element.hasAttribute(CONVERT_TO_ID)) {
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+ }
+
// Get the semicolon separated list of IDs of the error parsers
if (element.hasAttribute(IToolChain.ERROR_PARSERS)) {
errorParserIds = element.getAttribute(IToolChain.ERROR_PARSERS);
@@ -649,6 +667,16 @@
element.setAttribute(IProjectType.IS_ABSTRACT, isAbstract.toString());
}
+ // versionsSupported
+ if (versionsSupported != null) {
+ element.setAttribute(VERSIONS_SUPPORTED, versionsSupported);
+ }
+
+ // convertToId
+ if (convertToId != null) {
+ element.setAttribute(CONVERT_TO_ID, convertToId);
+ }
+
// error parsers
if (errorParserIds != null) {
element.setAttribute(IToolChain.ERROR_PARSERS, errorParserIds);
@@ -2324,6 +2352,60 @@
}
/* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getConvertToId()
+ */
+ public String getConvertToId() {
+ if (convertToId == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getConvertToId();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return convertToId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setConvertToId(String)
+ */
+ public void setConvertToId(String convertToId) {
+ if (convertToId == null && this.convertToId == null) return;
+ if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
+ this.convertToId = convertToId;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getVersionsSupported()
+ */
+ public String getVersionsSupported() {
+ if (versionsSupported == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getVersionsSupported();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return versionsSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setVersionsSupported(String)
+ */
+ public void setVersionsSupported(String versionsSupported) {
+ if (versionsSupported == null && this.versionsSupported == null) return;
+ if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
+ this.versionsSupported = versionsSupported;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.ITool#getEnvVarBuildPaths()
*/
public IEnvVarBuildPath[] getEnvVarBuildPaths(){
@@ -2345,5 +2427,4 @@
envVarBuildPathList.add(path);
}
-
}
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java,v
retrieving revision 1.7
diff -u -r1.7 ToolChain.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java 28 Apr 2005 16:54:40 -0000 1.7
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java 29 Apr 2005 20:38:17 -0000
@@ -36,6 +36,10 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+/**
+ * @author skdavasa
+ *
+ */
public class ToolChain extends BuildObject implements IToolChain {
private static final String EMPTY_STRING = new String();
@@ -58,6 +62,8 @@
private String secondaryOutputIds;
private Boolean isAbstract;
private String scannerConfigDiscoveryProfileId;
+ private String versionsSupported;
+ private String convertToId;
private IConfigurationElement managedIsToolChainSupportedElement = null;
private IManagedIsToolChainSupported managedIsToolChainSupported = null;
private IConfigurationElement environmentVariableSupplierElement = null;
@@ -324,6 +330,12 @@
// Get the scanner config discovery profile id
scannerConfigDiscoveryProfileId = element.getAttribute(SCANNER_CONFIG_PROFILE_ID);
+ // Get the 'versionsSupported' attribute
+ versionsSupported =element.getAttribute(VERSIONS_SUPPORTED);
+
+ // Get the 'convertToId' attribute
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+
// Get the comma-separated list of valid OS
String os = element.getAttribute(OS_LIST);
if (os != null) {
@@ -415,6 +427,16 @@
scannerConfigDiscoveryProfileId = element.getAttribute(SCANNER_CONFIG_PROFILE_ID);
}
+ // Get the 'versionSupported' attribute
+ if (element.hasAttribute(VERSIONS_SUPPORTED)) {
+ versionsSupported = element.getAttribute(VERSIONS_SUPPORTED);
+ }
+
+ // Get the 'convertToId' id
+ if (element.hasAttribute(CONVERT_TO_ID)) {
+ convertToId = element.getAttribute(CONVERT_TO_ID);
+ }
+
// Get the comma-separated list of valid OS
if (element.hasAttribute(OS_LIST)) {
String os = element.getAttribute(OS_LIST);
@@ -480,6 +502,16 @@
element.setAttribute(SCANNER_CONFIG_PROFILE_ID, scannerConfigDiscoveryProfileId);
}
+ // versionsSupported
+ if (versionsSupported != null) {
+ element.setAttribute(VERSIONS_SUPPORTED, versionsSupported);
+ }
+
+ // convertToId
+ if (convertToId != null) {
+ element.setAttribute(CONVERT_TO_ID, convertToId);
+ }
+
if (osList != null) {
Iterator osIter = osList.listIterator();
String listValue = EMPTY_STRING;
@@ -1114,6 +1146,60 @@
}
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolChain#getConvertToId()
+ */
+ public String getConvertToId() {
+ if (convertToId == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getConvertToId();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return convertToId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolChain#setConvertToId(String)
+ */
+ public void setConvertToId(String convertToId) {
+ if (convertToId == null && this.convertToId == null) return;
+ if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
+ this.convertToId = convertToId;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolChain#getVersionsSupported()
+ */
+ public String getVersionsSupported() {
+ if (versionsSupported == null) {
+ // If I have a superClass, ask it
+ if (superClass != null) {
+ return superClass.getVersionsSupported();
+ } else {
+ return EMPTY_STRING;
+ }
+ }
+ return versionsSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IToolChain#setVersionsSupported(String)
+ */
+ public void setVersionsSupported(String versionsSupported) {
+ if (versionsSupported == null && this.versionsSupported == null) return;
+ if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
+ this.versionsSupported = versionsSupported;
+ setDirty(true);
+ }
+ return;
+ }
+
private IManagedIsToolChainSupported getIsToolChainSupported(){
if(managedIsToolChainSupported == null && managedIsToolChainSupportedElement != null){
try{
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java,v
retrieving revision 1.28
diff -u -r1.28 ToolReference.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java 28 Apr 2005 16:54:40 -0000 1.28
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ToolReference.java 29 Apr 2005 20:38:18 -0000
@@ -48,6 +48,8 @@
private String outputPrefix;
protected ITool parent;
private boolean resolved = true;
+ private String versionsSupported;
+ private String convertToId;
/**
* Create a new tool reference based on information contained in
@@ -1092,6 +1094,60 @@
public String getRawToolCommand() {
return command;
}
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getConvertToId()
+ */
+ public String getConvertToId() {
+ if (convertToId == null) {
+ // If I have a superClass, ask it
+ if (parent != null) {
+ return parent.getConvertToId();
+ } else {
+ return new String();
+ }
+ }
+ return convertToId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setConvertToId(String)
+ */
+ public void setConvertToId(String convertToId) {
+ if (convertToId == null && this.convertToId == null) return;
+ if (convertToId == null || this.convertToId == null || !convertToId.equals(this.convertToId)) {
+ this.convertToId = convertToId;
+ setDirty(true);
+ }
+ return;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#getVersionsSupported()
+ */
+ public String getVersionsSupported() {
+ if (versionsSupported == null) {
+ // If I have a superClass, ask it
+ if (parent != null) {
+ return parent.getVersionsSupported();
+ } else {
+ return new String();
+ }
+ }
+ return versionsSupported;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.ITool#setVersionsSupported(String)
+ */
+ public void setVersionsSupported(String versionsSupported) {
+ if (versionsSupported == null && this.versionsSupported == null) return;
+ if (versionsSupported == null || this.versionsSupported == null || !versionsSupported.equals(this.versionsSupported)) {
+ this.versionsSupported = versionsSupported;
+ setDirty(true);
+ }
+ return;
+ }
/* (non-Javadoc)
* @see org.eclipse.cdt.core.build.managed.ITool#getEnvVarBuildPaths()
Index: src/org/eclipse/cdt/managedbuilder/core/IConfigurationNameProvider.java
===================================================================
RCS file: src/org/eclipse/cdt/managedbuilder/core/IConfigurationNameProvider.java
diff -N src/org/eclipse/cdt/managedbuilder/core/IConfigurationNameProvider.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/managedbuilder/core/IConfigurationNameProvider.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,24 @@
+/**********************************************************************
+ * Copyright (c) 2005 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ **********************************************************************/
+
+
+package org.eclipse.cdt.managedbuilder.core;
+
+public interface IConfigurationNameProvider {
+
+ /*
+ * Returns the new unique configuration name based on the 'configuration'
+ * object and the list of configuration names already in use in the project.
+ *
+ */
+
+ String getNewConfigurationName(IConfiguration configuration, String [] usedConfigurationNames );
+}
Index: src/org/eclipse/cdt/managedbuilder/internal/core/ConfigurationNameProvider.java
===================================================================
RCS file: src/org/eclipse/cdt/managedbuilder/internal/core/ConfigurationNameProvider.java
diff -N src/org/eclipse/cdt/managedbuilder/internal/core/ConfigurationNameProvider.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/managedbuilder/internal/core/ConfigurationNameProvider.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,39 @@
+/**********************************************************************
+ * Copyright (c) 2005 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ **********************************************************************/
+
+package org.eclipse.cdt.managedbuilder.internal.core;
+
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider;
+
+public class ConfigurationNameProvider implements IConfigurationNameProvider {
+
+ private static ConfigurationNameProvider configurationNameProvider;
+
+ protected ConfigurationNameProvider() {
+ configurationNameProvider = null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider#getUniqueConfigurationName(org.eclipse.cdt.managedbuilder.core.IConfiguration, java.lang.String[])
+ */
+ public String getNewConfigurationName(IConfiguration configuration,
+ String[] usedConfigurationNames) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public static ConfigurationNameProvider getConfigurationNameProvider() {
+ if( configurationNameProvider == null)
+ configurationNameProvider = new ConfigurationNameProvider();
+ return configurationNameProvider;
+ }
+}
Index: src/org/eclipse/cdt/managedbuilder/internal/core/GnuConfigurationNameProvider.java
===================================================================
RCS file: src/org/eclipse/cdt/managedbuilder/internal/core/GnuConfigurationNameProvider.java
diff -N src/org/eclipse/cdt/managedbuilder/internal/core/GnuConfigurationNameProvider.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/managedbuilder/internal/core/GnuConfigurationNameProvider.java 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,28 @@
+/**********************************************************************
+ * Copyright (c) 2005 Intel Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - Initial API and implementation
+ **********************************************************************/
+
+package org.eclipse.cdt.managedbuilder.internal.core;
+
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider;
+
+public class GnuConfigurationNameProvider implements IConfigurationNameProvider {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.managedbuilder.core.IConfigurationNameProvider#getUniqueConfigurationName(org.eclipse.cdt.managedbuilder.core.IConfiguration, java.lang.String[])
+ */
+ public String getNewConfigurationName(IConfiguration configuration,
+ String[] usedConfigurationNames) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}