use of com.android.tools.idea.gradle.project.ChooseGradleHomeDialog in project android by JetBrains.
the class GradleDistributionCleanUpTask method createWrapperIfNecessary.
private boolean createWrapperIfNecessary(@NotNull Project project, @NotNull GradleProjectSettings gradleSettings, @Nullable DistributionType distributionType) {
boolean createWrapper = false;
boolean chooseLocalGradleHome = false;
if (distributionType == null) {
if (ApplicationManager.getApplication().isUnitTestMode()) {
return true;
}
String msg = createUseWrapperQuestion("Gradle settings for this project are not configured yet.");
int answer = showOkCancelDialog(project, msg, GRADLE_SYNC_MSG_TITLE, getQuestionIcon());
createWrapper = answer == OK;
} else if (distributionType == DEFAULT_WRAPPED) {
createWrapper = true;
} else if (distributionType == LOCAL) {
String gradleHome = gradleSettings.getGradleHome();
String msg = null;
if (isEmpty(gradleHome)) {
msg = createUseWrapperQuestion("The path of the local Gradle distribution to use is not set.");
} else {
File gradleHomePath = new File(toSystemDependentName(gradleHome));
if (!gradleHomePath.isDirectory()) {
String reason = String.format("The path\n'%1$s'\n, set as a local Gradle distribution, does not belong to an existing directory.", gradleHomePath.getPath());
msg = createUseWrapperQuestion(reason);
} else {
GradleVersion gradleVersion = GradleVersions.getInstance().getGradleVersion(gradleHomePath);
if (gradleVersion == null) {
String reason = String.format("The path\n'%1$s'\n, does not belong to a Gradle distribution.", gradleHomePath.getPath());
msg = createUseWrapperQuestion(reason);
} else if (!isSupportedGradleVersion(gradleVersion)) {
String reason = String.format("Gradle version %1$s is not supported.", gradleHomePath.getPath());
msg = createUseWrapperQuestion(reason);
}
}
}
if (msg != null) {
int answer = showOkCancelDialog(project, msg, GRADLE_SYNC_MSG_TITLE, getQuestionIcon());
createWrapper = answer == OK;
chooseLocalGradleHome = !createWrapper;
}
}
if (createWrapper) {
File projectPath = getBaseDirPath(project);
// attempt to delete the whole gradle wrapper folder.
File gradleDirPath = new File(projectPath, SdkConstants.FD_GRADLE);
if (!delete(gradleDirPath)) {
// deletion failed. Let sync continue.
return true;
}
try {
GradleWrapper.create(projectPath);
if (distributionType == null) {
gradleSettings.setDistributionType(DEFAULT_WRAPPED);
}
return true;
} catch (IOException e) {
Logger.getInstance(getClass()).info("Failed to create Gradle wrapper for project '" + project.getName() + "'", e);
}
} else if (distributionType == null || chooseLocalGradleHome) {
ChooseGradleHomeDialog dialog = new ChooseGradleHomeDialog();
if (dialog.showAndGet()) {
String enteredGradleHomePath = dialog.getEnteredGradleHomePath();
gradleSettings.setGradleHome(enteredGradleHomePath);
gradleSettings.setDistributionType(LOCAL);
return true;
}
}
return false;
}
use of com.android.tools.idea.gradle.project.ChooseGradleHomeDialog in project android by JetBrains.
the class ChooseGradleHomeDialogTest method launchChooseGradleHomeDialog.
@NotNull
private ChooseGradleHomeDialogFixture launchChooseGradleHomeDialog() {
ChooseGradleHomeDialog dialog = GuiQuery.getNonNull(() -> new ChooseGradleHomeDialog(GRADLE_MINIMUM_VERSION));
ApplicationManager.getApplication().invokeLater(() -> {
dialog.setModal(false);
dialog.show();
});
return ChooseGradleHomeDialogFixture.find(guiTest.robot());
}
Aggregations