Search in sources :

Example 1 with ChooseGradleHomeDialog

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;
}
Also used : ChooseGradleHomeDialog(com.android.tools.idea.gradle.project.ChooseGradleHomeDialog) IOException(java.io.IOException) GradleVersion(com.android.ide.common.repository.GradleVersion) GradleUtil.isSupportedGradleVersion(com.android.tools.idea.gradle.util.GradleUtil.isSupportedGradleVersion) File(java.io.File)

Example 2 with ChooseGradleHomeDialog

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());
}
Also used : ChooseGradleHomeDialog(com.android.tools.idea.gradle.project.ChooseGradleHomeDialog) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

ChooseGradleHomeDialog (com.android.tools.idea.gradle.project.ChooseGradleHomeDialog)2 GradleVersion (com.android.ide.common.repository.GradleVersion)1 GradleUtil.isSupportedGradleVersion (com.android.tools.idea.gradle.util.GradleUtil.isSupportedGradleVersion)1 File (java.io.File)1 IOException (java.io.IOException)1 NotNull (org.jetbrains.annotations.NotNull)1