Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ToolChainEditTab.java76
1 files changed, 51 insertions, 25 deletions
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 3656c97d9ce..2ebeac43d7c 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
@@ -24,6 +24,7 @@ import org.eclipse.cdt.managedbuilder.core.IResourceInfo;
import org.eclipse.cdt.managedbuilder.core.ITool;
import org.eclipse.cdt.managedbuilder.core.IToolChain;
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.managedbuilder.internal.core.ToolChain;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -41,13 +42,14 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
private static final IToolChain[] r_tcs = ManagedBuildManager.getRealToolChains();
private static final IBuilder[] r_bs = ManagedBuildManager.getRealBuilders();
private static final ITool[] r_tools = ManagedBuildManager.getRealTools();
-
+
private Text text;
private Button b_dispCompatible;
private Combo c_toolchain;
private Combo c_builder;
private Combo c_tool;
-// private Button button_edit;
+ private Button button_edit;
+ private Group tools_group;
private IBuilder[] v_bs;
private IToolChain[] v_tcs;
@@ -96,15 +98,15 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
saveToolSelected();
}});
} else { // Folder or Project
- Group g = setupGroup(usercomp, Messages.getString("ToolChainEditTab.3"), 2, GridData.FILL_BOTH); //$NON-NLS-1$
+ tools_group = setupGroup(usercomp, Messages.getString("ToolChainEditTab.3"), 2, GridData.FILL_BOTH); //$NON-NLS-1$
- text = new Text(g, SWT.BORDER | SWT.WRAP | SWT.MULTI |
+ text = new Text(tools_group, 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);
+ button_edit = new Button(tools_group, SWT.PUSH);
GridData gdb = new GridData(GridData.VERTICAL_ALIGN_CENTER);
gdb.grabExcessHorizontalSpace = false;
gdb.horizontalAlignment = SWT.FILL;
@@ -134,9 +136,16 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
tc = ManagedBuildManager.getRealToolChain(((IFolderInfo)ri).getToolChain());
int cnt = 0;
int pos = -1;
+
c_toolchain.removeAll();
+ boolean isMng = cfg.getBuilder().isManagedBuildOn();
for (int i=0; i<r_tcs.length; i++) {
- if (r_tcs[i].isSystemObject()) continue;
+ if (r_tcs[i].isSystemObject() &&
+ !(
+ ((ToolChain)r_tcs[i]).isPreferenceToolChain() &&
+ !isMng)
+ ) // NO TOOLCHAIN
+ continue;
if (b_dispCompatible.getSelection() &&
(ri instanceof IFolderInfo) &&
@@ -147,20 +156,12 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
if (r_tcs[i].equals(tc)) pos = cnt;
cnt++;
}
- // "No toolchain" is enabled for Make projects only.
- if (!b_dispCompatible.getSelection() &&
- !cfg.getBuilder().isManagedBuildOn())
- c_toolchain.add(NO_TC);
if (pos != -1) {
c_toolchain.select(pos);
c_builder.setEnabled(page.isForProject());
}
else {
- if (cfg.getBuilder().isManagedBuildOn()) {
- c_toolchain.setText(EMPTY_STR); // unprobable case
- } else {
- c_toolchain.select(c_toolchain.getItemCount() - 1);
- }
+ c_toolchain.setText(EMPTY_STR); // unprobable case
c_builder.setEnabled(false);
}
@@ -219,7 +220,10 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
}
c_tool.add(Messages.getString("ToolChainEditTab.6")); //$NON-NLS-1$
c_tool.select(pos);
- } else { // display tools list for Folder and Project
+ } else if (((ToolChain)tc).isPreferenceToolChain()){ // display tools list for Folder and Project
+ tools_group.setVisible(false);
+ } else {
+ tools_group.setVisible(true);
String s = EMPTY_STR;
ITool[] tools = ri.getTools();
for (int i = 0; i < tools.length; i++)
@@ -260,13 +264,36 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
// super-class of the project configuration. NOTE: the makefile project case might
// need a special handling in this case.
- //TODO: makefile case ?
-
- IConfiguration cfg1 = cfg.getParent();
- IBuilder b = cfg1.getBuilder();
- cfg.changeBuilder(b, ManagedBuildManager.calculateChildId(b.getId(), null), b.getUniqueRealName());
- IResourceInfo ri1 = cfg1.getResourceInfo(ri.getPath(), false);
- copyFI(ri1, ri);
+ IConfiguration cfg1 = cfg.getParent();
+ if (cfg1.getToolChain() == null) {
+ if (cfg.getToolChain() != null) {
+ IToolChain tc1 = cfg.getToolChain().getSuperClass();
+ if (tc1 != null) {
+ IBuilder b = tc1.getBuilder();
+ cfg.changeBuilder(b, ManagedBuildManager.calculateChildId(b.getId(), null), b.getUniqueRealName());
+ try {
+ ((IFolderInfo)ri).modifyToolChain(ri.getTools(), tc1.getTools());
+ } catch (BuildException e) {}
+ }
+ } else {
+ cfg1 = ManagedBuildManager.getPreferenceConfiguration(true);
+ }
+ } else {
+ IBuilder b = cfg1.getBuilder();
+ cfg.changeBuilder(b, ManagedBuildManager.calculateChildId(b.getId(), null), b.getUniqueRealName());
+ IResourceInfo ri1 = cfg1.getResourceInfo(ri.getPath(), false);
+ if (!((ToolChain)cfg1.getToolChain()).isPreferenceToolChain())
+ copyFI(ri1, ri);
+ else {
+ cfg1 = ManagedBuildManager.getPreferenceConfiguration(false);
+ IToolChain tc = cfg1.getToolChain();
+ try {
+ ((IFolderInfo)ri).changeToolChain(tc, ManagedBuildManager.calculateChildId(tc.getId(), null), tc.getUniqueRealName());
+ ((IFolderInfo)ri).modifyToolChain(ri.getTools(), tc.getTools());
+
+ } catch (BuildException e) {}
+ }
+ }
} else if (page.isForFolder()) {
// 2.per-folder : change to the same tool-chain as the one used by the parent
// folder.
@@ -276,7 +303,6 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
} else if (page.isForFile()) {
// 3.per-file : change to the tool from the parent folder's tool-chain suitable
// for the given file. NOTE: the custom build step tool should be preserved!
-
IResourceInfo ri1 = cfg.getResourceInfo(ri.getPath().removeLastSegments(1), false);
String ext = ri.getPath().getFileExtension();
@@ -312,6 +338,7 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
System.arraycopy(tools, 0, ts2, 0, pos-1);
if (pos < ts2.length)
System.arraycopy(tools, pos+1, ts2, pos, ts2.length - pos);
+ tools = ts2;
}
((IFileInfo)ri).setTools(tools);
}
@@ -334,7 +361,6 @@ public class ToolChainEditTab extends AbstractCBuildPropertyTab {
}
}
-
protected void updateButtons() {} // Do nothing. No buttons to update.
private void saveToolSelected() {

Back to the top