From 88728e938f233aaadc4579eed7e04ca8e3048b43 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 2 Mar 2016 17:14:00 +0300 Subject: [PATCH] project structure: don't reset project language level to 'SDK default' when new SDK is added or removed (IDEA-152279) --- .../ui/configuration/LanguageLevelCombo.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/LanguageLevelCombo.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/LanguageLevelCombo.java index b3e8c77cf98c..ab412d7726b1 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/LanguageLevelCombo.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/LanguageLevelCombo.java @@ -34,7 +34,7 @@ import javax.swing.*; */ @SuppressWarnings("unchecked") public abstract class LanguageLevelCombo extends ComboBox { - + private boolean myDefaultWasSelectedBeforeRemoving; private final String myDefaultItem; public LanguageLevelCombo(String defaultItem) { @@ -91,18 +91,28 @@ public abstract class LanguageLevelCombo extends ComboBox { private void updateDefaultLevel(LanguageLevel newLevel, boolean isDefaultProject) { if (newLevel == null && !isDefaultProject) { - if (getSelectedItem() == myDefaultItem) { - setSelectedItem(getDefaultLevel()); + if (isDefaultItemAdded()) { + boolean defaultSelected = getSelectedItem() == myDefaultItem; + if (defaultSelected) { + setSelectedItem(getDefaultLevel()); + } + myDefaultWasSelectedBeforeRemoving = defaultSelected; + removeItem(myDefaultItem); } - removeItem(myDefaultItem); } - else if (!(getItemAt(0) instanceof String)) { + else if (!(isDefaultItemAdded())) { addDefaultItem(); - setSelectedIndex(0); + if (myDefaultWasSelectedBeforeRemoving) { + setSelectedIndex(0); + } } repaint(); } + private boolean isDefaultItemAdded() { + return getItemAt(0) instanceof String; + } + void addDefaultItem() { insertItemAt(myDefaultItem, 0); }