// ĠCopyright Ġ 2 0 2 1 ĠGr Ã© go ire ĠPay en Ġde ĠLa ĠGar ander ie . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ċ package Ġcom . hoc het . k 8 s Debugger . sdk Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project Roots . Sdk Ċ import Ġcom . intellij . openapi . project Roots . impl . Sdk Configuration Util Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . intellij . remote . Remote Sdk Exception Ċ import Ġcom . intellij . ui . Document Adapter Ċ import Ġcom . intellij . util . text . nul lize Ċ import Ġcom . jetbrains . python . remote . Py Remote Interpreter Util Ċ import Ġcom . jetbrains . python . remote . Py Remote Sdk Additional Data Base Ċ import Ġcom . jetbrains . python . remote . Python Remote Interpreter Manager Ċ import Ġcom . jetbrains . python . sdk . Python Sdk Type Ċ import Ġcom . jetbrains . python . sdk . add . Py AddNew Env Panel Ċ import Ġorg . j dom . Element Ċ import Ġresources . K 8 s Icons Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . Icon Ċ import Ġjavax . swing . event . Document Event Ċ Ċ /** Ċ Ġ* ĠPanel Ġto Ġcreate Ġa Ġnew ĠKubernetes ĠSDK . Ċ Ġ*/ Ċ class ĠPy AddNew K 8 s 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 : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Kubernetes " ĊĠĠĠ Ġoverride Ġval Ġpanel Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Kubernetes ĠEnvironment " ĊĊĠĠĠ Ġoverride Ġval Ġicon : ĠIcon ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠK 8 s Icons . Kubernetes ĊĊĠĠĠ Ġ// ĠInstead Ġof Ġre implement ing Ġthe Ġwhole Ġpanel Ġfrom Ġscratch , ĊĠĠĠ Ġ// Ġwe Ġcan Ġreuse Ġthe Ġpanel Ġused Ġto Ġedit Ġexisting ĠKubernetes Ġcredentials . ĊĠĠĠ Ġprivate Ġval Ġpanel Ġ= ĠK 8 s Credentials Editor ( true ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDefault Ġvalue Ġfor Ġthe ĠPython Ġinterpreter Ġpath ĊĠĠĠĠĠĠĠ Ġpanel . main Panel . python Interpreter Field . text Ġ= Ġ" python " ĊĊĠĠĠĠĠĠĠ Ġadd ( panel . main Panel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġis Ġcalled Ġwhen Ġthe Ġuser Ġpress Ġthe ĠOk Ġbutton Ġto Ġcreate Ġthe Ġnew ĠSDK . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget OrCreate Sdk (): ĠS dk ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredentials Ġ= ĠK 8 s Credentials Holder () ĊĠĠĠĠĠĠĠ Ġcredentials . kube config Path Ġ= Ġpanel . main Panel . kube config Path Field . text . nul lize () ĊĠĠĠĠĠĠĠ Ġcredentials . context Name Ġ= Ġpanel . main Panel . context Field . model . selected Item ?. toString (). nul lize () ĊĠĠĠĠĠĠĠ Ġcredentials . namespace Name Ġ= Ġpanel . main Panel . namespace Name Field . model . selected Item ?. toString (). nul lize () ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Name Item Ġ= Ġpanel . main Panel . resourceName Field . model . selected Item Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġcredentials . resourceName Ġ= Ġresource Name Item . toString (). nul lize () ĊĊĠĠĠĠĠĠĠ Ġval Ġremote Interpreter Manager Ġ= ĠPython Remote Interpreter Manager . getInstance () Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġinterpreter Path Ġ= Ġpanel . main Panel . python Interpreter Field . text ĊĊĠĠĠĠĠĠĠ Ġval Ġsdk Type Ġ= ĠPython Sdk Type . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġsdk Ġ= ĠS dk Configuration Util . create Sdk ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting Sdk s , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK 8 s Credentials Handler ( credentials ). id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġ// Ġpopulated Ġlater ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Kubernetes Ġ(${ credentials . kube config Path } Ġ${ credentials . namespace Name Ġ?: Ġ" default "}) ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġcreate Ġa ĠPy Remote Sdk Additional Data ; Ġhowever , Ġit Ġseems Ġthat Ġthere Ġis Ġno Ġother Ġpublic Ġmethod ĊĠĠĠĠĠĠĠ Ġ// Ġthan Ġload Remote Sdk Data () Ġto Ġcreate Ġone . ĠTo Ġuse Ġthis Ġfunction , Ġwe Ġcreate Ġa Ġdummy Ġ< additional /> ĠXML Ġelement . ĊĠĠĠĠĠĠĠ Ġsdk . sdk Additional Data Ġ= Ġremote Interpreter Manager . load Remote Sdk Data ( sdk , ĠElement (" additional ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġadditional Data Ġ= Ġsdk . sdk Additional Data ĊĊĠĠĠĠĠĠĠ Ġif Ġ( additional Data Ġ! is ĠPy Remote Sdk Additional Data Base ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadditional Data . set Credentials ( K 8 s Credentials Type . instance . credentials Key , Ġcredentials ) ĊĠĠĠĠĠĠĠ Ġadditional Data . interpreter Path Ġ= Ġinterpreter Path ĊĠĠĠĠĠĠĠ Ġadditional Data . isValid Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġsdk Type . setup Sdk Paths ( sdk ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġget Interpreter Version Ġto Ġensure Ġthat Ġthe Ġspecified ĠKubernetes Ġresource Ġis Ġreachable ĊĠĠĠĠĠĠĠ Ġ// Ġand ĠPython Ġis Ġavailable . ĠThe Ġvalid ĠPython Ġinterpreter Ġis Ġrequired Ġin Ġthe Ġpod Ġbecause ĊĠĠĠĠĠĠĠ Ġ// Ġvarious ĠPy Char m Ġmodules Ġwill Ġalso Ġdo Ġthe Ġcheck Ġand Ġmark Ġthe ĠSDK Ġas Ġinvalid Ġif Ġthe ĊĠĠĠĠĠĠĠ Ġ// ĠPython Ġinterpreter Ġcannot Ġbe Ġfound . ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPy Remote Interpreter Util . get Interpreter Version ( project , Ġadditional Data , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exc Ġ: ĠRemote Sdk Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke And Wait Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . show Error Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . main Panel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġcreate Ġthe ĠKubernetes ĠSDK : ĠPython Ġinterpreter Ġnot Ġfound ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsdk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ChangeListener ( listener : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpanel . main Panel . kube config Path Field . textField . document . add Document Listener ( object : ĠDocument Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġsuper . add ChangeListener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate All (): ĠList < Validation Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Info Ġ= Ġpanel . validate () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( validation Info Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( validation Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }