Search in sources :

Example 16 with Sdk

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

the class AddImportHelper method getImportPriority.

@NotNull
public static ImportPriority getImportPriority(@NotNull PsiElement importLocation, @NotNull PsiFileSystemItem toImport) {
    final VirtualFile vFile = toImport.getVirtualFile();
    if (vFile == null) {
        return UNRESOLVED_SYMBOL_PRIORITY;
    }
    final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(toImport.getProject());
    final ProjectFileIndex fileIndex = projectRootManager.getFileIndex();
    if (fileIndex.isInContent(vFile) && !fileIndex.isInLibraryClasses(vFile)) {
        return ImportPriority.PROJECT;
    }
    final Module module = ModuleUtilCore.findModuleForPsiElement(importLocation);
    final Sdk pythonSdk = module != null ? PythonSdkType.findPythonSdk(module) : projectRootManager.getProjectSdk();
    return PythonSdkType.isStdLib(vFile, pythonSdk) ? ImportPriority.BUILTIN : ImportPriority.THIRD_PARTY;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) ProjectFileIndex(com.intellij.openapi.roots.ProjectFileIndex) Sdk(com.intellij.openapi.projectRoots.Sdk) Module(com.intellij.openapi.module.Module) ProjectRootManager(com.intellij.openapi.roots.ProjectRootManager) NotNull(org.jetbrains.annotations.NotNull)

Example 17 with Sdk

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

the class PyInterpreterUsagesCollector method getProjectUsages.

@NotNull
@Override
public Set<UsageDescriptor> getProjectUsages(@NotNull Project project) throws CollectUsagesException {
    Set<UsageDescriptor> result = new HashSet<>();
    for (Module m : ModuleManager.getInstance(project).getModules()) {
        Sdk pythonSdk = PythonSdkType.findPythonSdk(m);
        if (pythonSdk != null) {
            String versionString = pythonSdk.getVersionString();
            if (StringUtil.isEmpty(versionString)) {
                versionString = "unknown version";
            }
            if (PythonSdkType.isRemote(pythonSdk)) {
                versionString = versionString + " (" + getRemoteSuffix(pythonSdk) + ")";
            }
            if (PythonSdkType.isVirtualEnv(pythonSdk)) {
                versionString += " [virtualenv]";
            }
            if (PythonSdkType.isCondaVirtualEnv(pythonSdk)) {
                versionString += " [condavenv]";
            }
            result.add(new UsageDescriptor(versionString, 1));
        }
    }
    return result;
}
Also used : Sdk(com.intellij.openapi.projectRoots.Sdk) UsageDescriptor(com.intellij.internal.statistic.beans.UsageDescriptor) Module(com.intellij.openapi.module.Module) HashSet(java.util.HashSet) NotNull(org.jetbrains.annotations.NotNull)

Example 18 with Sdk

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

the class PythonSdkDetailsStep method getVEnvCallback.

@NotNull
private AbstractCreateVirtualEnvDialog.VirtualEnvCallback getVEnvCallback() {
    return new CreateVirtualEnvDialog.VirtualEnvCallback() {

        @Override
        public void virtualEnvCreated(Sdk sdk, boolean associateWithProject) {
            if (associateWithProject) {
                SdkAdditionalData additionalData = sdk.getSdkAdditionalData();
                if (additionalData == null) {
                    additionalData = new PythonSdkAdditionalData(PythonSdkFlavor.getFlavor(sdk.getHomePath()));
                    ((ProjectJdkImpl) sdk).setSdkAdditionalData(additionalData);
                }
                if (myNewProject) {
                    ((PythonSdkAdditionalData) additionalData).associateWithNewProject();
                } else {
                    ((PythonSdkAdditionalData) additionalData).associateWithProject(myProject);
                }
            }
            mySdkAddedCallback.consume(sdk);
        }
    };
}
Also used : ProjectJdkImpl(com.intellij.openapi.projectRoots.impl.ProjectJdkImpl) Sdk(com.intellij.openapi.projectRoots.Sdk) SdkAdditionalData(com.intellij.openapi.projectRoots.SdkAdditionalData) NotNull(org.jetbrains.annotations.NotNull)

Example 19 with Sdk

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

the class PythonSdkUpdater method commitSdkPathsIfChanged.

/**
   * Commits new SDK paths using an SDK modificator if the paths have been changed.
   *
   * You may invoke it from any thread. Blocks until the commit is done in the AWT thread.
   */
private static void commitSdkPathsIfChanged(@NotNull Sdk sdk, @Nullable final SdkModificator sdkModificator, @NotNull final List<VirtualFile> sdkPaths, boolean forceCommit) {
    final String key = PythonSdkType.getSdkKey(sdk);
    final SdkModificator modificatorToGetRoots = sdkModificator != null ? sdkModificator : sdk.getSdkModificator();
    final List<VirtualFile> currentSdkPaths = Arrays.asList(modificatorToGetRoots.getRoots(OrderRootType.CLASSES));
    if (forceCommit || !Sets.newHashSet(sdkPaths).equals(Sets.newHashSet(currentSdkPaths))) {
        TransactionGuard.getInstance().assertWriteSafeContext(ModalityState.defaultModalityState());
        ApplicationManager.getApplication().invokeAndWait(() -> {
            final Sdk sdkInsideInvoke = PythonSdkType.findSdkByKey(key);
            final SdkModificator modificatorToCommit = sdkModificator != null ? sdkModificator : sdkInsideInvoke != null ? sdkInsideInvoke.getSdkModificator() : modificatorToGetRoots;
            modificatorToCommit.removeAllRoots();
            for (VirtualFile sdkPath : sdkPaths) {
                modificatorToCommit.addRoot(PythonSdkType.getSdkRootVirtualFile(sdkPath), OrderRootType.CLASSES);
            }
            modificatorToCommit.commitChanges();
        });
    }
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) Sdk(com.intellij.openapi.projectRoots.Sdk) SdkModificator(com.intellij.openapi.projectRoots.SdkModificator)

Example 20 with Sdk

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

the class PythonSdkUpdater method runActivity.

/**
   * Refreshes the SDKs of the modules for the open project after some delay.
   */
@Override
public void runActivity(@NotNull final Project project) {
    final Application application = ApplicationManager.getApplication();
    if (application.isUnitTestMode()) {
        return;
    }
    EdtExecutorService.getScheduledExecutorInstance().schedule(() -> ProgressManager.getInstance().run(new Task.Backgroundable(project, "Updating Python Paths", false) {

        @Override
        public void run(@NotNull ProgressIndicator indicator) {
            final Project project = getProject();
            if (project.isDisposed()) {
                return;
            }
            for (final Sdk sdk : getPythonSdks(project)) {
                update(sdk, null, project, null);
            }
        }
    }), INITIAL_ACTIVITY_DELAY, TimeUnit.MILLISECONDS);
}
Also used : Project(com.intellij.openapi.project.Project) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) Sdk(com.intellij.openapi.projectRoots.Sdk) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Sdk (com.intellij.openapi.projectRoots.Sdk)437 VirtualFile (com.intellij.openapi.vfs.VirtualFile)105 Module (com.intellij.openapi.module.Module)85 Nullable (org.jetbrains.annotations.Nullable)63 File (java.io.File)56 Project (com.intellij.openapi.project.Project)49 NotNull (org.jetbrains.annotations.NotNull)43 JavaSdk (com.intellij.openapi.projectRoots.JavaSdk)37 SdkModificator (com.intellij.openapi.projectRoots.SdkModificator)34 ExecutionException (com.intellij.execution.ExecutionException)20 ModifiableFlexBuildConfiguration (com.intellij.lang.javascript.flex.projectStructure.model.ModifiableFlexBuildConfiguration)19 ArrayList (java.util.ArrayList)18 ProjectJdkTable (com.intellij.openapi.projectRoots.ProjectJdkTable)17 IOException (java.io.IOException)16 AndroidSdkAdditionalData (org.jetbrains.android.sdk.AndroidSdkAdditionalData)16 IAndroidTarget (com.android.sdklib.IAndroidTarget)14 JavaSdkType (com.intellij.openapi.projectRoots.JavaSdkType)14 Library (com.intellij.openapi.roots.libraries.Library)14 JavaSdkVersion (com.intellij.openapi.projectRoots.JavaSdkVersion)13 BuildConfigurationNature (com.intellij.flex.model.bc.BuildConfigurationNature)11