Search in sources :

Example 6 with ProjectJdkImpl

use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-plugins by JetBrains.

the class FlexSdkUtils method doCreateSdk.

private static Sdk doCreateSdk(final SdkType sdkType, @NotNull final String sdkHomePath) {
    return WriteAction.compute(() -> {
        final ProjectJdkTable projectJdkTable = ProjectJdkTable.getInstance();
        final String sdkName = SdkConfigurationUtil.createUniqueSdkName(sdkType, sdkHomePath, projectJdkTable.getSdksOfType(sdkType));
        final Sdk sdk = new ProjectJdkImpl(sdkName, sdkType, sdkHomePath, "");
        sdkType.setupSdkPaths(sdk);
        projectJdkTable.addJdk(sdk);
        return sdk;
    });
}
Also used : ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl) Sdk(com.intellij.openapi.projectRoots.Sdk)

Example 7 with ProjectJdkImpl

use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-plugins by JetBrains.

the class FlexTestUtils method createSdk.

public static Sdk createSdk(final String flexSdkRootPath, @Nullable String sdkVersion, final boolean removeExisting) {
    Sdk sdk = WriteCommandAction.runWriteCommandAction(null, (Computable<Sdk>) () -> {
        final ProjectJdkTable projectJdkTable = ProjectJdkTable.getInstance();
        if (removeExisting) {
            final List<Sdk> existingFlexSdks = projectJdkTable.getSdksOfType(FlexSdkType2.getInstance());
            for (Sdk existingFlexSdk : existingFlexSdks) {
                projectJdkTable.removeJdk(existingFlexSdk);
            }
        }
        final FlexSdkType2 sdkType = FlexSdkType2.getInstance();
        final Sdk sdk1 = new ProjectJdkImpl(sdkType.suggestSdkName(null, flexSdkRootPath), sdkType, flexSdkRootPath, "");
        sdkType.setupSdkPaths(sdk1);
        projectJdkTable.addJdk(sdk1);
        return sdk1;
    });
    final SdkModificator modificator = sdk.getSdkModificator();
    if (sdkVersion != null) {
        modificator.setVersionString(sdkVersion);
    }
    if (sdk.getHomeDirectory() == null) {
        throw new IllegalArgumentException("Could not find a Flex SDK at " + flexSdkRootPath);
    }
    modificator.addRoot(sdk.getHomeDirectory(), OrderRootType.CLASSES);
    modificator.commitChanges();
    return sdk;
}
Also used : ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl) List(java.util.List) Sdk(com.intellij.openapi.projectRoots.Sdk) FlexSdkType2(com.intellij.lang.javascript.flex.sdk.FlexSdkType2) SdkModificator(com.intellij.openapi.projectRoots.SdkModificator)

Example 8 with ProjectJdkImpl

use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-plugins by JetBrains.

the class ConversionParams method convertFlexSdks.

// keep old Flex SDKs for now, after IDEA 11.1 release we may decide to delete them
public static void convertFlexSdks() {
    final ProjectJdkTable sdkTable = ProjectJdkTable.getInstance();
    final Sdk[] allSdks = sdkTable.getAllJdks();
    final FlexSdkType2 newSdkType = FlexSdkType2.getInstance();
    Map<String, Sdk> homePathToNewSdk = new HashMap<>();
    Collection<Sdk> sdksToAdd = new ArrayList<>();
    for (Sdk sdk : allSdks) {
        if (sdk.getSdkType() == newSdkType && sdk.getHomePath() != null) {
            homePathToNewSdk.put(sdk.getHomePath(), sdk);
        }
    }
    for (Sdk sdk : allSdks) {
        if (!ArrayUtil.contains(sdk.getSdkType().getName(), OLD_SDKS_TYPES)) {
            continue;
        }
        final String version = sdk.getVersionString();
        if (version == null || (!version.startsWith("3.") && !version.startsWith("4."))) {
            // ignore corrupt SDK
            continue;
        }
        final String homePath = sdk.getHomePath();
        if (homePath == null) {
            continue;
        }
        if (homePathToNewSdk.containsKey(homePath)) {
            continue;
        }
        String newSdkName = SdkConfigurationUtil.createUniqueSdkName(newSdkType, homePath, Arrays.asList(allSdks));
        Sdk newSdk = new ProjectJdkImpl(newSdkName, newSdkType, homePath, "");
        newSdkType.setupSdkPaths(newSdk);
        sdksToAdd.add(newSdk);
        homePathToNewSdk.put(homePath, newSdk);
    }
    WriteAction.run(() -> {
        for (Sdk sdk : sdksToAdd) {
            sdkTable.addJdk(sdk);
        }
    });
}
Also used : ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl) Sdk(com.intellij.openapi.projectRoots.Sdk) FlexSdkType2(com.intellij.lang.javascript.flex.sdk.FlexSdkType2)

Example 9 with ProjectJdkImpl

use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-plugins by JetBrains.

the class AppTestBase method doSetupFlexSdk.

private void doSetupFlexSdk(final Module module, final String flexSdkRootPath, final TargetPlatform targetPlatform, final String sdkVersion) {
    final String sdkName = generateSdkName(sdkVersion);
    Sdk sdk = ProjectJdkTable.getInstance().findJdk(sdkName);
    if (sdk == null) {
        ApplicationManager.getApplication().runWriteAction(() -> {
            FlexSdkType2 sdkType = FlexSdkType2.getInstance();
            Sdk sdk1 = new ProjectJdkImpl(sdkName, sdkType, flexSdkRootPath, "");
            ProjectJdkTable.getInstance().addJdk(sdk1);
            Disposer.register(getSdkParentDisposable(), new Disposable() {

                @Override
                public void dispose() {
                    ApplicationManager.getApplication().runWriteAction(() -> {
                        ProjectJdkTable sdkTable = ProjectJdkTable.getInstance();
                        sdkTable.removeJdk(sdkTable.findJdk(sdkName));
                    });
                }
            });
            final SdkModificator modificator = sdk1.getSdkModificator();
            modificator.setVersionString(FlexSdkType2.getInstance().getVersionString(sdk1.getHomePath()));
            modifySdk(sdk1, modificator);
            modificator.commitChanges();
        });
    }
    FlexTestUtils.modifyBuildConfiguration(module, bc -> {
        bc.setNature(new BuildConfigurationNature(targetPlatform, false, getOutputType()));
        bc.getDependencies().setSdkEntry(Factory.createSdkEntry(sdkName));
    });
}
Also used : Disposable(com.intellij.openapi.Disposable) BuildConfigurationNature(com.intellij.flex.model.bc.BuildConfigurationNature) ProjectJdkTable(com.intellij.openapi.projectRoots.ProjectJdkTable) ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl) Sdk(com.intellij.openapi.projectRoots.Sdk) FlexSdkType2(com.intellij.lang.javascript.flex.sdk.FlexSdkType2) SdkModificator(com.intellij.openapi.projectRoots.SdkModificator)

Example 10 with ProjectJdkImpl

use of com.intellij.openapi.projectRoots.impl.ProjectJdkImpl in project intellij-community by JetBrains.

the class ProjectSdksModel method addSdk.

public void addSdk(@NotNull SdkType type, @NotNull String home, @Nullable Consumer<Sdk> callback) {
    String newSdkName = SdkConfigurationUtil.createUniqueSdkName(type, home, myProjectSdks.values());
    final ProjectJdkImpl newJdk = new ProjectJdkImpl(newSdkName, type);
    newJdk.setHomePath(home);
    setupSdk(newJdk, callback);
}
Also used : ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl)

Aggregations

ProjectJdkImpl (com.intellij.openapi.projectRoots.impl.ProjectJdkImpl)20 Sdk (com.intellij.openapi.projectRoots.Sdk)10 VirtualFile (com.intellij.openapi.vfs.VirtualFile)6 ProjectJdkTable (com.intellij.openapi.projectRoots.ProjectJdkTable)5 File (java.io.File)5 NotNull (org.jetbrains.annotations.NotNull)5 FlexSdkType2 (com.intellij.lang.javascript.flex.sdk.FlexSdkType2)3 SdkModificator (com.intellij.openapi.projectRoots.SdkModificator)3 GoSdkType (com.goide.sdk.GoSdkType)2 SdkAdditionalData (com.intellij.openapi.projectRoots.SdkAdditionalData)2 LanguageLevel (com.jetbrains.python.psi.LanguageLevel)2 PythonSdkAdditionalData (com.jetbrains.python.sdk.PythonSdkAdditionalData)2 PythonSdkType (com.jetbrains.python.sdk.PythonSdkType)2 BuildConfigurationNature (com.intellij.flex.model.bc.BuildConfigurationNature)1 Disposable (com.intellij.openapi.Disposable)1 AnAction (com.intellij.openapi.actionSystem.AnAction)1 DefaultActionGroup (com.intellij.openapi.actionSystem.DefaultActionGroup)1 AccessToken (com.intellij.openapi.application.AccessToken)1 Application (com.intellij.openapi.application.Application)1 JavaSdk (com.intellij.openapi.projectRoots.JavaSdk)1