Bug 560150 - Restore default doesn't work for Use '--release' option

Change-Id: I025a20bf0e7cab716d0023418279bfc590f08c2e
Signed-off-by: Kalyan Prasad Tatavarthi <kalyan_prasad@in.ibm.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
index bce0a73..c66dfd4 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
@@ -718,6 +718,22 @@
 		}
 	}
 
+	@Override
+	public void performDefaults() {
+		super.performDefaults();
+		performReleasePreferenceDefault();
+	}
+
+	private void performReleasePreferenceDefault() {
+		String defValue= getDefaultValue(PREF_RELEASE);
+		if (defValue == null) {
+			defValue= DISABLED;
+		}
+		fCompilerReleaseCheck.setSelection(DISABLED.equals(defValue) ? false : true);
+		setValue(PREF_RELEASE, defValue);
+		updateReleaseOptionStatus();
+	}
+
 	private void validateComplianceStatus() {
 		if (fJRE50InfoText != null && !fJRE50InfoText.isDisposed()) {
 			boolean isVisible= false;
@@ -1369,12 +1385,13 @@
 			if (isOriginalDefaultCompliance(complianceLevel)) {
 				Map<String, String> complianceOptions= new HashMap<>();
 				JavaModelUtil.setComplianceOptions(complianceOptions, complianceLevel);
+				String releaseVal= complianceOptions.get(PREF_RELEASE.getName());
 				setDefaultValue(PREF_COMPLIANCE, complianceOptions.get(PREF_COMPLIANCE.getName()));
 				setDefaultValue(PREF_PB_ASSERT_AS_IDENTIFIER, complianceOptions.get(PREF_PB_ASSERT_AS_IDENTIFIER.getName()));
 				setDefaultValue(PREF_PB_ENUM_AS_IDENTIFIER, complianceOptions.get(PREF_PB_ENUM_AS_IDENTIFIER.getName()));
 				setDefaultValue(PREF_SOURCE_COMPATIBILITY, complianceOptions.get(PREF_SOURCE_COMPATIBILITY.getName()));
 				setDefaultValue(PREF_CODEGEN_TARGET_PLATFORM, complianceOptions.get(PREF_CODEGEN_TARGET_PLATFORM.getName()));
-				setDefaultValue(PREF_RELEASE, DISABLED);
+				setDefaultValue(PREF_RELEASE, releaseVal != null ? releaseVal : DISABLED);
 				if (JavaCore.compareJavaVersions(complianceLevel, JavaCore.VERSION_10) > 0) {
 					setDefaultValue(PREF_ENABLE_PREVIEW, complianceOptions.get(PREF_ENABLE_PREVIEW.getName()));
 					setDefaultValue(PREF_PB_REPORT_PREVIEW, complianceOptions.get(PREF_PB_REPORT_PREVIEW.getName()));
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/OptionsConfigurationBlock.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/OptionsConfigurationBlock.java
index 3e53587..12d90ad 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/OptionsConfigurationBlock.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/OptionsConfigurationBlock.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2018 IBM Corporation and others.
+ * Copyright (c) 2000, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -1168,6 +1168,10 @@
 		validateSettings(null, null, null);
 	}
 
+	protected final String getDefaultValue(Key key) {
+		return key.getStoredValue(fLookupOrder, true, fManager);
+	}
+
 	/**
 	 * @since 3.1
 	 */