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