From 98f74685eac94db2cbcc64f01ca5806117a862f8 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 7 Aug 2012 18:13:53 +0400 Subject: [PATCH] IDEA-89821 fix "is modified" status updating --- .../android/sdk/AndroidSdkConfigurable.java | 6 +++- .../sdk/AndroidSdkConfigurableForm.java | 32 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurable.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurable.java index 19cb6ecf3e13..9a2af1a933b8 100644 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurable.java +++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurable.java @@ -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 diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java index d9d8d43f00d7..843436443639 100644 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java +++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java @@ -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 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) {