diff --git a/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/META-INF/MANIFEST.MF b/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/META-INF/MANIFEST.MF index de829ec95e..ad378e61fd 100644 --- a/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/META-INF/MANIFEST.MF +++ b/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/META-INF/MANIFEST.MF @@ -8,4 +8,5 @@ Bundle-Version: 0.1.0.qualifier Fragment-Host: com.google.cloud.tools.eclipse.sdk.ui Require-Bundle: com.google.cloud.tools.eclipse.test.dependencies Import-Package: com.google.cloud.tools.eclipse.test.util, - com.google.cloud.tools.eclipse.test.util.ui + com.google.cloud.tools.eclipse.test.util.ui, + org.eclipse.swtbot.swt.finder.widgets diff --git a/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/src/com/google/cloud/tools/eclipse/sdk/ui/CloudSdkPreferenceAreaTest.java b/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/src/com/google/cloud/tools/eclipse/sdk/ui/CloudSdkPreferenceAreaTest.java index 360a64d0dd..8d652ebf9e 100644 --- a/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/src/com/google/cloud/tools/eclipse/sdk/ui/CloudSdkPreferenceAreaTest.java +++ b/plugins/com.google.cloud.tools.eclipse.sdk.ui.test/src/com/google/cloud/tools/eclipse/sdk/ui/CloudSdkPreferenceAreaTest.java @@ -31,9 +31,13 @@ import com.google.cloud.tools.eclipse.test.util.ui.ShellTestResource; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotCheckBox; import org.junit.After; import org.junit.Rule; import org.junit.Test; @@ -76,8 +80,7 @@ public void testNonExistentPath() { @Test public void testInvalidPath() { - when(preferences.getString(CloudSdkPreferences.CLOUD_SDK_PATH)) - .thenReturn(tempFolder.getRoot().getAbsolutePath()); + when(preferences.getString(CloudSdkPreferences.CLOUD_SDK_PATH)).thenReturn(tempFolder.getRoot().getAbsolutePath()); createPreferenceArea(); assertEquals(IStatus.WARNING, area.getStatus().getSeverity()); @@ -153,4 +156,21 @@ public void testPerformApply_preferencesSaved() { verify(preferences).putValue(CloudSdkPreferences.CLOUD_SDK_MANAGEMENT, "MANUAL"); } + + @Test + public void testValidationStatus_switchManagementOption() { + CloudSdkManager.forceManagedSdkFeature = true; + when(preferences.getString(CloudSdkPreferences.CLOUD_SDK_MANAGEMENT)).thenReturn("MANUAL"); + when(preferences.getString(CloudSdkPreferences.CLOUD_SDK_PATH)).thenReturn("/non-existing/directory"); + createPreferenceArea(); + + assertTrue(useLocalSdk.getSelection()); + assertEquals(IStatus.ERROR, area.getStatus().getSeverity()); + + new SWTBotCheckBox(useLocalSdk).click(); + assertTrue(area.getStatus().isOK()); + + new SWTBotCheckBox(useLocalSdk).click(); + assertEquals(IStatus.ERROR, area.getStatus().getSeverity()); + } } diff --git a/plugins/com.google.cloud.tools.eclipse.sdk.ui/src/com/google/cloud/tools/eclipse/sdk/ui/preferences/CloudSdkPreferenceArea.java b/plugins/com.google.cloud.tools.eclipse.sdk.ui/src/com/google/cloud/tools/eclipse/sdk/ui/preferences/CloudSdkPreferenceArea.java index 0717313625..a2b2bee449 100644 --- a/plugins/com.google.cloud.tools.eclipse.sdk.ui/src/com/google/cloud/tools/eclipse/sdk/ui/preferences/CloudSdkPreferenceArea.java +++ b/plugins/com.google.cloud.tools.eclipse.sdk.ui/src/com/google/cloud/tools/eclipse/sdk/ui/preferences/CloudSdkPreferenceArea.java @@ -44,6 +44,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -93,6 +94,13 @@ public void widgetSelected(SelectionEvent event) { useLocalSdk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { + if (!useLocalSdk.getSelection()) { + status = Status.OK_STATUS; + } else { + sdkLocation.doCheckState(); + } + fireValueChanged(VALUE, "", ""); + updateControlEnablement(); } });