project structure: don't reset project language level to 'SDK default' when new SDK is added or removed (IDEA-152279)

This commit is contained in:
nik
2016-03-02 17:14:21 +03:00
parent 4b782f9bf8
commit 88728e938f
@@ -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);
}