diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
index 6f2c6682877..71c88db49f2 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml
@@ -585,7 +585,7 @@
-
+
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
index 8cde3fee772..bf770aa0b9a 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java
@@ -10,10 +10,14 @@
*******************************************************************************/
package org.eclipse.cdt.managedbuilder.ui.properties;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.managedbuilder.core.BuildException;
import org.eclipse.cdt.managedbuilder.core.IBuilder;
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IFileInfo;
import org.eclipse.cdt.managedbuilder.core.IFolderInfo;
import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
@@ -41,7 +45,8 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
private Button b_dispCompatible;
private Combo c_toolchain;
private Combo c_builder;
- private Button button_edit;
+ private Combo c_tool;
+// private Button button_edit;
private IBuilder[] v_bs;
private IToolChain[] v_tcs;
@@ -49,7 +54,6 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
private IConfiguration cfg;
private IResourceInfo ri;
- private IFolderInfo fi;
public void createControls(Composite parent) {
super.createControls(parent);
@@ -63,19 +67,7 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
c_toolchain.setLayoutData(gd);
c_toolchain.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- if (fi != null) {
- int x = c_toolchain.getSelectionIndex();
- try {
- if (NO_TC.equals(c_toolchain.getItem(x))) {
- fi.changeToolChain(null, null, null);
- } else {
- IToolChain tc = v_tcs[x];
- if (tc == null) return;
- fi.changeToolChain(tc, ManagedBuildManager.calculateChildId(tc.getId(), null), tc.getUniqueRealName());
- }
- } catch (BuildException be) {}
- updateData();
- }
+ modifyToolchain();
}});
c_toolchain.setEnabled(!page.isForFile());
@@ -86,54 +78,48 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
c_builder.setLayoutData(gd);
c_builder.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- int x = c_builder.getSelectionIndex();
- IBuilder b = v_bs[x];
- cfg.changeBuilder(b, ManagedBuildManager.calculateChildId(b.getId(), null), b.getUniqueRealName());
- updateData();
+ modifyBuilder();
}});
c_builder.setEnabled(page.isForProject());
// make table for tools list
- Group g = setupGroup(usercomp, Messages.getString("ToolChainEditTab.3"), 2, GridData.FILL_BOTH); //$NON-NLS-1$
-
- text = new Text(g, SWT.BORDER | SWT.WRAP | SWT.MULTI |
- SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL);
- gd = new GridData(GridData.FILL_BOTH);
- gd.grabExcessHorizontalSpace = true;
- text.setLayoutData(gd);
-
- button_edit = new Button(g, SWT.PUSH);
- GridData gdb = new GridData(GridData.VERTICAL_ALIGN_CENTER);
- gdb.grabExcessHorizontalSpace = false;
- gdb.horizontalAlignment = SWT.FILL;
- gdb.widthHint = 80;
- button_edit.setLayoutData(gdb);
- button_edit.addSelectionListener(new SelectionAdapter() {
- public void widgetSelected(SelectionEvent event) {
- ToolSelectionDialog d = new ToolSelectionDialog(usercomp.getShell());
- d.all = v_tools;
- d.fi = fi;
- int result = d.open();
- if (result == 0 && (d.removed.size() > 0 || d.added.size() > 0)) {
- try {
- fi.modifyToolChain(
- (ITool[])d.removed.toArray(new ITool[d.removed.size()]),
- (ITool[])d.added.toArray(new ITool[d.added.size()]));
- } catch (BuildException b) {}
- updateData();
- }
- }});
+ if (page.isForFile()) {
+ Group g = setupGroup(usercomp, Messages.getString("ToolChainEditTab.5"), 2, GridData.FILL_BOTH); //$NON-NLS-1$
+ c_tool = new Combo(g, SWT.READ_ONLY | SWT.DROP_DOWN | SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ c_tool.setLayoutData(gd);
+ c_tool.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ saveToolSelected();
+ }});
+ } else { // Folder or Project
+ Group g = setupGroup(usercomp, Messages.getString("ToolChainEditTab.3"), 2, GridData.FILL_BOTH); //$NON-NLS-1$
- button_edit.setLayoutData(new GridData(GridData.END));
- button_edit.setText(Messages.getString("ToolChainEditTab.4")); //$NON-NLS-1$
+ text = new Text(g, SWT.BORDER | SWT.WRAP | SWT.MULTI |
+ SWT.READ_ONLY | SWT.V_SCROLL | SWT.H_SCROLL);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.grabExcessHorizontalSpace = true;
+ text.setLayoutData(gd);
+
+ Button button_edit = new Button(g, SWT.PUSH);
+ GridData gdb = new GridData(GridData.VERTICAL_ALIGN_CENTER);
+ gdb.grabExcessHorizontalSpace = false;
+ gdb.horizontalAlignment = SWT.FILL;
+ gdb.widthHint = 80;
+ button_edit.setLayoutData(gdb);
+ button_edit.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ modifyTools();
+ }});
+
+ button_edit.setLayoutData(new GridData(GridData.END));
+ button_edit.setText(Messages.getString("ToolChainEditTab.4")); //$NON-NLS-1$
+ }
}
public void updateData(ICResourceDescription rcfg) {
cfg = getCfg(rcfg.getConfiguration());
ri = cfg.getResourceInfo(rcfg.getPath(), false);
- if (ri instanceof IFolderInfo)
- fi = (IFolderInfo)ri;
- else
- fi = null;
updateData();
}
private void updateData() {
@@ -142,16 +128,18 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
v_tools = new ITool[r_tools.length];
IToolChain tc = null;
- if (fi != null)
- tc = ManagedBuildManager.getRealToolChain(fi.getToolChain());
+ if (ri instanceof IFolderInfo)
+ tc = ManagedBuildManager.getRealToolChain(((IFolderInfo)ri).getToolChain());
int cnt = 0;
int pos = -1;
c_toolchain.removeAll();
for (int i=0; i 0) {
+ for (int i=0; i 0) {
+ if (pos == (c_tool.getItemCount() - 1)) {// NO TOOL selected
+ List newTools = new ArrayList(oldTools.length);
+ for (int i=0; i 0 || d.added.size() > 0)) {
+ try {
+ ((IFolderInfo)ri).modifyToolChain(
+ (ITool[])d.removed.toArray(new ITool[d.removed.size()]),
+ (ITool[])d.added.toArray(new ITool[d.added.size()]));
+ } catch (BuildException b) {}
+ updateData();
+ }
+ }
+
+ private void modifyToolchain() {
+ if (ri instanceof IFolderInfo) {
+ int x = c_toolchain.getSelectionIndex();
+ try {
+ if (NO_TC.equals(c_toolchain.getItem(x))) {
+ ((IFolderInfo)ri).changeToolChain(null, null, null);
+ } else {
+ IToolChain tc = v_tcs[x];
+ if (tc == null) return;
+ ((IFolderInfo)ri).changeToolChain(tc, ManagedBuildManager.calculateChildId(tc.getId(), null), tc.getUniqueRealName());
+ }
+ } catch (BuildException be) {}
+ updateData();
+ }
+ }
+
+ private void modifyBuilder() {
+ int x = c_builder.getSelectionIndex();
+ IBuilder b = v_bs[x];
+ cfg.changeBuilder(b, ManagedBuildManager.calculateChildId(b.getId(), null), b.getUniqueRealName());
+ updateData();
+ }
}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
index 4aedb361564..fa824c959bb 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/messages.properties
@@ -52,6 +52,8 @@ ToolChainEditTab.1=Current toolchain
ToolChainEditTab.2=Current builder
ToolChainEditTab.3=Used tools
ToolChainEditTab.4=Select tools
+ToolChainEditTab.5=Select tool
+ToolChainEditTab.6=-- NO TOOL --
NewVarDialog.0=New variable
NewVarDialog.1=Apply to all configurations
NewCfgDialog.0=Existing configuration