diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java index 11265d0fc35..9d5134de5ea 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/FolderInfo.java @@ -996,12 +996,28 @@ public class FolderInfo extends ResourceInfo implements IFolderInfo { private ITool[] calculateToolsArray(ITool[] removed, ITool[] added){ ITool tools[] = getTools(); - HashSet set = new HashSet(); - set.addAll(Arrays.asList(tools)); - set.removeAll(Arrays.asList(removed)); - set.addAll(Arrays.asList(added)); + Map map = calcExtToolIdToToolMap(tools); + Map removedMap = calcExtToolIdToToolMap(removed); + for(Iterator iter = removedMap.keySet().iterator(); iter.hasNext();){ + map.remove(iter.next()); + } + map.putAll(calcExtToolIdToToolMap(added)); - return (ITool[])set.toArray(new ITool[set.size()]); + return (ITool[])map.values().toArray(new ITool[map.size()]); + } + + private Map calcExtToolIdToToolMap(ITool tools[]){ + Map map = new HashMap(); + for(int i = 0; i < tools.length; i++){ + ITool tool = tools[i]; + ITool extTool = ManagedBuildManager.getExtensionTool(tool); + if(extTool == null) + extTool = tool; + + map.put(extTool.getId(), tool); + } + + return map; } private ITool[][] calculateConflictingTools(ITool[] newTools){ diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolSelectionDialog.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolSelectionDialog.java index 725c58dedc8..4514819983b 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolSelectionDialog.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolSelectionDialog.java @@ -182,13 +182,14 @@ public class ToolSelectionDialog extends Dialog { if (!exists) added.add(t); add(t, t2, !exists); } - if (check && removed.size() > 0 || added.size() > 0) { + if (true/*check && removed.size() > 0 || added.size() > 0 */) { IModificationStatus st = fi.getToolChainModificationStatus( (ITool[])removed.toArray(new ITool[removed.size()]), (ITool[])added.toArray(new ITool[added.size()])); if (st.isOK()) { errorLabel.setText(""); //$NON-NLS-1$ - getButton(IDialogConstants.OK_ID).setEnabled(true); + if(getButton(IDialogConstants.OK_ID) != null) + getButton(IDialogConstants.OK_ID).setEnabled(true); } else { int c = st.getCode(); String s = ""; //$NON-NLS-1$