/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . jetbrains . python . sdk . add Ċ Ċ import Ġcom . intellij . execution . ExecutionException Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Factory Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project Roots . Sdk Ċ import Ġcom . intellij . openapi . ui . TextField With Browse Button Ċ import Ġcom . intellij . openapi . util . io . File Util Ċ import Ġcom . intellij . openapi . vfs . Local FileSystem Ċ import Ġcom . intellij . ui . components . JB CheckBox Ċ import Ġcom . intellij . util . System Properties Ċ import Ġcom . intellij . util . ui . Form Builder Ċ import Ġcom . jetbrains . python . packaging . Py Con da PackageManager Impl Ċ import Ġcom . jetbrains . python . packaging . Py Con da Package Service Ċ import Ġcom . jetbrains . python . psi . Language Level Ċ import Ġcom . jetbrains . python . sdk . associate With Project Ċ import Ġcom . jetbrains . python . sdk . create Sdk By Generate Task Ċ import Ġcom . jetbrains . python . sdk . fl avors . Con da Env Sdk Flavor Ċ import Ġicons . Python Icons Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Dimension Ċ import Ġjava . io . File Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . J ComboBox Ċ Ċ /** Ċ Ġ* Ġ@ author Ġvlan Ċ Ġ*/ Ċ class ĠPy AddNew Con da Env Panel ( private Ġval Ġproject : ĠProject ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġexisting Sdk s : ĠList < Sdk >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġvar Ġnew Project Path : ĠString ?) Ġ: ĠPy AddNew Env Panel () Ġ{ ĊĠ Ġoverride Ġval Ġenv Name Ġ= Ġ" Con da " ĊĠ Ġoverride Ġval Ġpanel Name Ġ= Ġ" New Ġenvironment " ĊĠ Ġoverride Ġval Ġicon : ĠIcon Ġ= ĠPython Icons . Python . Anaconda ĊĊĠ Ġprivate Ġval Ġpath Field Ġ= ĠTextField With Browse Button (). apply Ġ{ ĊĠĠĠ Ġval Ġbase Dir Ġ= Ġdefault Base Dir Ġ?: ĠSystem Properties . getUser Home () ĊĠĠĠ Ġtext Ġ= ĠFile Util . find Se quent Non existent File ( File ( base Dir ), Ġ" unt itled ", Ġ""). path ĊĠĠĠ Ġadd Browse Folder Listener (" Select ĠLocation Ġfor ĠCon da ĠEnvironment ", Ġnull , Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Chooser Descriptor Factory . create Single Folder Descriptor ()) ĊĠ Ġ} ĊĠ Ġprivate Ġval Ġlanguage Levels Field : ĠJ ComboBox < String > ĊĠ Ġprivate Ġval Ġmake Shared Field Ġ= ĠJ B CheckBox (" Make Ġavailable Ġto Ġall Ġprojects ") ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĊĠĠĠ Ġ// Ġhttps :// conda . io / docs / user - guide / install / index . html # system - requirements ĊĠĠĠ Ġval Ġsupported Language Levels Ġ= ĊĠĠĠĠĠ ĠlistOf ( Language Level . PYTHON 3 6 , ĠLanguage Level . PYTHON 3 5 , ĠLanguage Level . PYTHON 3 4 , ĠLanguage Level . PYTHON 2 7 ) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toString () Ġ} ĊĊĠĠĠ Ġlanguage Levels Field Ġ= ĠJ ComboBox ( supported Language Levels . to Typed Array ()). apply Ġ{ ĊĠĠĠĠĠ Ġselected Item Ġ= Ġif Ġ( item Count Ġ> Ġ 0 ) ĠgetItem At ( 0 ) Ġelse Ġnull ĊĠĠĠĠĠ Ġpreferred Size Ġ= ĠDimension ( Int . MAX _ VALUE , Ġpreferred Size . height ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġform Panel Ġ= ĠForm Builder . create Form Builder () ĊĠĠĠĠĠ Ġ. add Labeled Component (" Location :", Ġpath Field ) ĊĠĠĠĠĠ Ġ. add Labeled Component (" Python Ġversion :", Ġlanguage Levels Field ) ĊĠĠĠĠĠ Ġ. addComponent ( make Shared Field ) ĊĠĠĠĠĠ Ġ. panel ĊĠĠĠ Ġadd ( form Panel , ĠBorderLayout . NORTH ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġvalidate All () Ġ= ĊĠĠĠ ĠlistOf NotNull ( validate Anaconda Pres ense ( path Field ), Ġvalidate Empty Or Non Existing Directory Location ( path Field )) ĊĊĠ Ġoverride Ġfun Ġget OrCreate Sdk (): ĠS dk ? Ġ{ ĊĠĠĠ Ġval Ġtask Ġ= Ġobject Ġ: ĠTask . With Result < String , ĠExecution Exception >( project , Ġ" Creating ĠCon da ĠEnvironment ", Ġfalse ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġcompute ( indicator : ĠProgress Indicator ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġindicator . isIn determinate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn ĠPy Con da PackageManager Impl . create Virtual Env ( path Field . text , Ġselected Language Level ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġshared Ġ= Ġmake Shared Field . isSelected ĊĠĠĠ Ġval Ġassociated Path Ġ= Ġif Ġ(! shared ) Ġnew Project Path Ġ?: Ġproject ?. basePath Ġelse Ġnull ĊĠĠĠ Ġval Ġsdk Ġ= Ġcreate Sdk By Generate Task ( task , Ġexisting Sdk s , Ġnull , Ġassociated Path ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ(! shared ) Ġ{ ĊĠĠĠĠĠ Ġsdk . associate With Project ( project , Ġnew Project Path Ġ!= Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsdk ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġdefault Base Dir : ĠString ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval Ġlocation Ġ= ĠCon da Env Sdk Flavor . get Con da Default Locations (). first OrNull () ĊĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocation . path ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġconda Ġ= ĠPy Con da Package Service . getSystem Con da Executable () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠ Ġval Ġconda File Ġ= ĠLocal FileSystem . getInstance (). find File By Path ( conda ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠ Ġreturn Ġconda File . parent ?. parent ?. find Child (" envs ") ?. path ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġval Ġselected Language Level : ĠString ĊĠĠĠ Ġget () Ġ= Ġlanguage Levels Field . getItem At ( language Levels Field . selectedIndex ) Ċ }