IDEA-149613 Language level in a new project is 6 by default

This commit is contained in:
Dmitry Avdeev
2015-12-22 18:25:25 +03:00
parent 3c17ad203b
commit 2fba2eeb6b
3 changed files with 20 additions and 14 deletions
@@ -25,6 +25,7 @@ import com.intellij.openapi.ui.ComboBox;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.ui.ColoredListCellRendererWrapper;
import com.intellij.ui.SimpleTextAttributes;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
@@ -58,16 +59,16 @@ public abstract class LanguageLevelCombo extends ComboBox {
});
}
public void reset(Project project) {
public void reset(@NotNull Project project) {
removeAllItems();
for (LanguageLevel level : LanguageLevel.values()) {
addItem(level);
}
Sdk sdk = ProjectRootManagerEx.getInstanceEx(project).getProjectSdk();
sdkUpdated(sdk);
sdkUpdated(sdk, project.isDefault());
LanguageLevelProjectExtension extension = LanguageLevelProjectExtension.getInstance(project);
if (getDefaultLevel() != null && extension.isDefault()) {
if (extension.isDefault()) {
setSelectedItem(myDefaultItem);
}
else {
@@ -77,7 +78,7 @@ public abstract class LanguageLevelCombo extends ComboBox {
protected abstract LanguageLevel getDefaultLevel();
void sdkUpdated(Sdk sdk) {
void sdkUpdated(Sdk sdk, boolean isDefaultProject) {
LanguageLevel newLevel = null;
if (sdk != null) {
JavaSdkVersion version = JavaSdk.getInstance().getVersion(sdk);
@@ -85,11 +86,11 @@ public abstract class LanguageLevelCombo extends ComboBox {
newLevel = version.getMaxLanguageLevel();
}
}
updateDefaultLevel(newLevel);
updateDefaultLevel(newLevel, isDefaultProject);
}
void updateDefaultLevel(LanguageLevel newLevel) {
if (newLevel == null) {
private void updateDefaultLevel(LanguageLevel newLevel, boolean isDefaultProject) {
if (newLevel == null && !isDefaultProject) {
if (getSelectedItem() == myDefaultItem) {
setSelectedItem(getDefaultLevel());
}
@@ -173,7 +173,7 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable<Pro
myProjectJdkConfigurable.addChangeListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
myLanguageLevelCombo.sdkUpdated(myProjectJdkConfigurable.getSelectedProjectJdk());
myLanguageLevelCombo.sdkUpdated(myProjectJdkConfigurable.getSelectedProjectJdk(), myProject.isDefault());
LanguageLevelProjectExtensionImpl.getInstanceImpl(myProject).setCurrentLevel(myLanguageLevelCombo.getSelectedLevel());
}
});
@@ -245,7 +245,10 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable<Pro
}
LanguageLevelProjectExtension extension = LanguageLevelProjectExtension.getInstance(myProject);
extension.setLanguageLevel(myLanguageLevelCombo.getSelectedLevel());
LanguageLevel level = myLanguageLevelCombo.getSelectedLevel();
if (level != null) {
extension.setLanguageLevel(level);
}
extension.setDefault(myLanguageLevelCombo.isDefault());
myProjectJdkConfigurable.apply();
@@ -295,8 +298,8 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable<Pro
@SuppressWarnings({"SimplifiableIfStatement"})
public boolean isModified() {
LanguageLevelProjectExtension extension = LanguageLevelProjectExtension.getInstance(myProject);
if (!extension.getLanguageLevel().equals(myLanguageLevelCombo.getSelectedLevel()) ||
extension.isDefault() != myLanguageLevelCombo.isDefault()) {
if (extension.isDefault() != myLanguageLevelCombo.isDefault() ||
!extension.isDefault() && !extension.getLanguageLevel().equals(myLanguageLevelCombo.getSelectedLevel())) {
return true;
}
final String compilerOutput = getOriginalCompilerOutputUrl();
@@ -37,7 +37,7 @@ public class LanguageLevelProjectExtensionImpl extends LanguageLevelProjectExten
private static final String DEFAULT_ATTRIBUTE = "default";
private final Project myProject;
private LanguageLevel myLanguageLevel = LanguageLevel.JDK_1_6;
private LanguageLevel myLanguageLevel = LanguageLevel.HIGHEST;
private LanguageLevel myCurrentLevel;
public LanguageLevelProjectExtensionImpl(final Project project) {
@@ -76,7 +76,9 @@ public class LanguageLevelProjectExtensionImpl extends LanguageLevelProjectExten
}
private void writeExternal(final Element element) {
element.setAttribute(LANGUAGE_LEVEL, myLanguageLevel.name());
if (myLanguageLevel != null) {
element.setAttribute(LANGUAGE_LEVEL, myLanguageLevel.name());
}
Boolean aBoolean = getDefault();
if (aBoolean != null) {
element.setAttribute(DEFAULT_ATTRIBUTE, Boolean.toString(aBoolean));
@@ -86,7 +88,7 @@ public class LanguageLevelProjectExtensionImpl extends LanguageLevelProjectExten
private void writeAttributesForIdea7(Element element) {
final boolean is14 = LanguageLevel.JDK_1_4.equals(myLanguageLevel);
final boolean is15 = myLanguageLevel.compareTo(LanguageLevel.JDK_1_5) >= 0;
final boolean is15 = myLanguageLevel != null && myLanguageLevel.compareTo(LanguageLevel.JDK_1_5) >= 0;
element.setAttribute(ASSERT_KEYWORD_ATTR, Boolean.toString(is14 || is15));
element.setAttribute(JDK_15_ATTR, Boolean.toString(is15));
}