mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-89821 fix "is modified" status updating
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.android.sdk;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.projectRoots.*;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -77,7 +78,10 @@ public class AndroidSdkConfigurable implements AdditionalDataConfigurable {
|
||||
public boolean isModified() {
|
||||
final AndroidSdkAdditionalData data = (AndroidSdkAdditionalData)mySdk.getSdkAdditionalData();
|
||||
Sdk javaSdk = data != null ? data.getJavaSdk() : null;
|
||||
return javaSdk != myForm.getSelectedSdk();
|
||||
final String javaSdkHomePath = javaSdk != null ? javaSdk.getHomePath() : null;
|
||||
final Sdk selectedSdk = myForm.getSelectedSdk();
|
||||
final String selectedSdkHomePath = selectedSdk != null ? selectedSdk.getHomePath() : null;
|
||||
return !FileUtil.pathsEqual(javaSdkHomePath, selectedSdkHomePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -49,6 +49,8 @@ class AndroidSdkConfigurableForm {
|
||||
private final DefaultComboBoxModel myBuildTargetsModel = new DefaultComboBoxModel();
|
||||
private String mySdkLocation;
|
||||
|
||||
private boolean myFreeze = false;
|
||||
|
||||
public AndroidSdkConfigurableForm(@NotNull SdkModel sdkModel, @NotNull final SdkModificator sdkModificator) {
|
||||
mySdkModel = sdkModel;
|
||||
myInternalJdkComboBox.setModel(myJdksModel);
|
||||
@@ -76,6 +78,9 @@ class AndroidSdkConfigurableForm {
|
||||
|
||||
myBuildTargetComboBox.addItemListener(new ItemListener() {
|
||||
public void itemStateChanged(final ItemEvent e) {
|
||||
if (myFreeze) {
|
||||
return;
|
||||
}
|
||||
final IAndroidTarget target = (IAndroidTarget)e.getItem();
|
||||
|
||||
List<OrderRoot> roots = AndroidSdkUtils.getLibraryRootsForTarget(target, mySdkLocation);
|
||||
@@ -138,18 +143,10 @@ class AndroidSdkConfigurableForm {
|
||||
|
||||
mySdkLocation = androidSdk != null ? androidSdk.getHomePath() : null;
|
||||
AndroidSdkData androidSdkData = mySdkLocation != null ? AndroidSdkData.parse(mySdkLocation, new EmptySdkLog()) : null;
|
||||
updateBuildTargets(androidSdkData);
|
||||
|
||||
if (buildTarget != null) {
|
||||
for (int i = 0; i < myBuildTargetsModel.getSize(); i++) {
|
||||
IAndroidTarget target = (IAndroidTarget)myBuildTargetsModel.getElementAt(i);
|
||||
if (buildTarget.hashString().equals(target.hashString())) {
|
||||
myBuildTargetComboBox.setSelectedIndex(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
myBuildTargetComboBox.setSelectedItem(null);
|
||||
myFreeze = true;
|
||||
updateBuildTargets(androidSdkData, buildTarget);
|
||||
myFreeze = false;
|
||||
}
|
||||
|
||||
private void updateJdks() {
|
||||
@@ -161,7 +158,7 @@ class AndroidSdkConfigurableForm {
|
||||
}
|
||||
}
|
||||
|
||||
private void updateBuildTargets(AndroidSdkData androidSdkData) {
|
||||
private void updateBuildTargets(AndroidSdkData androidSdkData, IAndroidTarget buildTarget) {
|
||||
myBuildTargetsModel.removeAllElements();
|
||||
|
||||
if (androidSdkData != null) {
|
||||
@@ -169,6 +166,17 @@ class AndroidSdkConfigurableForm {
|
||||
myBuildTargetsModel.addElement(target);
|
||||
}
|
||||
}
|
||||
|
||||
if (buildTarget != null) {
|
||||
for (int i = 0; i < myBuildTargetsModel.getSize(); i++) {
|
||||
IAndroidTarget target = (IAndroidTarget)myBuildTargetsModel.getElementAt(i);
|
||||
if (buildTarget.hashString().equals(target.hashString())) {
|
||||
myBuildTargetComboBox.setSelectedIndex(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
myBuildTargetComboBox.setSelectedItem(null);
|
||||
}
|
||||
|
||||
public void addJavaSdk(Sdk sdk) {
|
||||
|
||||
Reference in New Issue
Block a user