IDEA-93002 merge 'choose java sdk' and 'choose build target' in one dialog

This commit is contained in:
Eugene Kudelevsky
2012-10-31 14:08:26 +04:00
parent fd2c2596c0
commit 4d9ad4e952
3 changed files with 63 additions and 22 deletions
@@ -0,0 +1,46 @@
package org.jetbrains.android.sdk;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.ui.CollectionComboBoxModel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.List;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidNewSdkDialog extends DialogWrapper {
private JPanel myContentPanel;
private JComboBox myInternalJdkComboBox;
private JComboBox myBuildTargetComboBox;
protected AndroidNewSdkDialog(@Nullable Project project,
@NotNull List<String> javaSdkNames,
@NotNull String selectedJavaSdkName,
@NotNull List<String> targetNames,
@NotNull String selectedTargetName) {
super(project);
setTitle("Create New Android SDK");
myInternalJdkComboBox.setModel(new CollectionComboBoxModel(javaSdkNames, selectedJavaSdkName));
myBuildTargetComboBox.setModel(new CollectionComboBoxModel(targetNames, selectedTargetName));
init();
}
@Nullable
@Override
protected JComponent createCenterPanel() {
return myContentPanel;
}
public int getSelectedJavaSdkIndex() {
return myInternalJdkComboBox.getSelectedIndex();
}
public int getSelectedTargetIndex() {
return myBuildTargetComboBox.getSelectedIndex();
}
}
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.android.sdk.AndroidSdkConfigurableForm">
<grid id="27dc6" binding="myContentPanel" layout-manager="GridLayoutManager" row-count="2" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.android.sdk.AndroidNewSdkDialog">
<grid id="27dc6" binding="myContentPanel" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="500" height="68"/>
<xy x="20" y="20" width="500" height="77"/>
</constraints>
<properties/>
<border type="none"/>
@@ -38,6 +38,11 @@
</constraints>
<properties/>
</component>
<vspacer id="d5308">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
</children>
</grid>
</form>
@@ -20,7 +20,6 @@ import com.android.sdklib.IAndroidTarget;
import com.intellij.CommonBundle;
import com.intellij.openapi.projectRoots.*;
import com.intellij.openapi.ui.Messages;
import com.intellij.util.ArrayUtil;
import icons.AndroidIcons;
import org.jdom.Element;
import org.jetbrains.android.util.AndroidBundle;
@@ -30,6 +29,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
@@ -102,17 +102,6 @@ public class AndroidSdkType extends SdkType implements JavaSdkType {
return false;
}
int choice = Messages
.showChooseDialog("Please select Java SDK", "Select Internal Java Platform", ArrayUtil.toStringArray(javaSdks), javaSdks.get(0),
Messages.getQuestionIcon());
if (choice == -1) {
return false;
}
final String name = javaSdks.get(choice);
final Sdk jdk = sdkModel.findSdk(name);
MessageBuildingSdkLog log = new MessageBuildingSdkLog();
AndroidSdkData sdkData = AndroidSdkData.parse(sdk.getHomePath(), log);
@@ -144,16 +133,17 @@ public class AndroidSdkType extends SdkType implements JavaSdkType {
}
}
choice =
Messages.showChooseDialog("Select build target", "Create New Android SDK", targetNames,
newestPlatform != null ? newestPlatform : targetNames[0], Messages.getQuestionIcon());
final AndroidNewSdkDialog dialog =
new AndroidNewSdkDialog(null, javaSdks, javaSdks.get(0), Arrays.asList(targetNames),
newestPlatform != null ? newestPlatform : targetNames[0]);
dialog.show();
if (choice == -1) {
if (!dialog.isOK()) {
return false;
}
AndroidSdkUtils.setUpSdk(sdk, jdk, sdks, targets[choice], true);
final String name = javaSdks.get(dialog.getSelectedJavaSdkIndex());
final Sdk jdk = sdkModel.findSdk(name);
AndroidSdkUtils.setUpSdk(sdk, jdk, sdks, targets[dialog.getSelectedTargetIndex()], true);
return true;
}