Bug 568397: Hide "Build settings" if using custom command

When unchecking the "Use default build command" checkbox, hide the GUI
options to configure the flags as the user should have full control.

This solution was discussed in
https://git.eclipse.org/r/c/cdt/org.eclipse.cdt/+/171735

Change-Id: Ifbd67b279db55f5a83f4a660b9a1248e5c021df2
Also-by: cartu38 opendev <cartu38.opendev@gmail.com>
Signed-off-by: Torbjörn Svensson <azoff@svenskalinuxforeningen.se>
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
index 2f1cc38..f658b9e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java
@@ -1086,18 +1086,20 @@
 	@Override
 	public String getArguments() {
 		String args = getArgumentsAttribute();
-		String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
-		int parallelNum = getParallelizationNum();
-		String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
+		if (isDefaultBuildCmd()) {
+			String stopOnErrCmd = getStopOnErrCmd(isStopOnError());
+			int parallelNum = getParallelizationNum();
+			String parallelCmd = isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
 
-		String reversedStopOnErrCmd = getStopOnErrCmd(!isStopOnError());
-		String reversedParallelBuildCmd = !isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
+			String reversedStopOnErrCmd = getStopOnErrCmd(!isStopOnError());
+			String reversedParallelBuildCmd = !isParallelBuildOn() ? getParallelizationCmd(parallelNum) : EMPTY_STRING;
 
-		args = removeCmd(args, reversedStopOnErrCmd);
-		args = removeCmd(args, reversedParallelBuildCmd);
+			args = removeCmd(args, reversedStopOnErrCmd);
+			args = removeCmd(args, reversedParallelBuildCmd);
 
-		args = addCmd(args, stopOnErrCmd);
-		args = addCmd(args, parallelCmd);
+			args = addCmd(args, stopOnErrCmd);
+			args = addCmd(args, parallelCmd);
+		}
 
 		return args != null ? args.trim() : null;
 	}
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
index af690ef..77c487c 100644
--- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
+++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildBehaviourTab.java
@@ -69,6 +69,8 @@
 	private Button b_parallelUnlimited;
 	private Spinner s_parallelNumber;
 
+	private Group grp_buildSettings;
+
 	private Label title2;
 	private Button b_autoBuild; //3
 	private Text t_autoBuild;
@@ -89,13 +91,13 @@
 		usercomp.setLayout(new GridLayout(1, false));
 
 		// Build setting group
-		Group g3 = setupGroup(usercomp, Messages.BuilderSettingsTab_9, 2, GridData.FILL_HORIZONTAL);
+		grp_buildSettings = setupGroup(usercomp, Messages.BuilderSettingsTab_9, 2, GridData.FILL_HORIZONTAL);
 		GridLayout gl = new GridLayout(2, true);
 		gl.verticalSpacing = 0;
 		gl.marginWidth = 0;
-		g3.setLayout(gl);
+		grp_buildSettings.setLayout(gl);
 
-		Composite c1 = new Composite(g3, SWT.NONE);
+		Composite c1 = new Composite(grp_buildSettings, SWT.NONE);
 		setupControl(c1, 1, GridData.FILL_BOTH);
 		GridData gd = (GridData) c1.getLayoutData();
 		gd.verticalSpan = 2;
@@ -109,7 +111,7 @@
 
 		b_stopOnError = setupCheck(c1, Messages.BuilderSettingsTab_10, 1, GridData.BEGINNING);
 
-		Composite c2 = new Composite(g3, SWT.NONE);
+		Composite c2 = new Composite(grp_buildSettings, SWT.NONE);
 		setupControl(c2, 1, GridData.FILL_BOTH);
 		gl = new GridLayout(1, false);
 		gl.verticalSpacing = 0;
@@ -119,7 +121,7 @@
 
 		b_parallel = setupCheck(c2, Messages.BuilderSettingsTab_EnableParallelBuild, 1, GridData.BEGINNING);
 
-		Composite c3 = new Composite(g3, SWT.NONE);
+		Composite c3 = new Composite(grp_buildSettings, SWT.NONE);
 		setupControl(c3, 1, GridData.FILL_BOTH);
 		gl = new GridLayout(2, false);
 		gl.verticalSpacing = 0;
@@ -337,6 +339,11 @@
 			t_cmdClean.setText(bldr.getBuildAttribute(IBuilder.BUILD_TARGET_CLEAN, EMPTY_STR));
 		}
 
+		boolean defaultBuildCommand = bldr.isDefaultBuildCmd();
+		grp_buildSettings.setVisible(defaultBuildCommand);
+		((GridData) grp_buildSettings.getLayoutData()).exclude = !defaultBuildCommand;
+		grp_buildSettings.getParent().layout();
+
 		boolean external = !isInternalBuilderEnabled();
 		title2.setVisible(external);
 		t_autoBuild.setVisible(external);