package Ġme . lens vol . black connect . config . sections Ċ Ċ import Ġcom . intellij . application . options . Code Style Ċ import Ġcom . intellij . lang . Language Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Ċ import Ġcom . intellij . openapi . file Chooser . File Element Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi . search . Filename Index Ċ import Ġcom . intellij . psi . search . Global Search Scope Ċ import Ġcom . intellij . ui . Ide Border Factory Ċ import Ġcom . intellij . util . ui . Form Builder Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . mo and j ie z ana . toml . Tom l Ċ import Ġme . lens vol . black connect . config . DEFAULT _ LINE _ LENGTH Ċ import Ġme . lens vol . black connect . config . PY PROJECT _ TO ML Ċ import Ġme . lens vol . black connect . settings . Black Connect Project Settings Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Flow Layout Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . util . Collections Ċ import Ġjavax . swing . JButton Ċ import Ġjavax . swing . J CheckBox Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . J Spinner Ċ import Ġjavax . swing . Spinner Number Model Ċ Ċ class ĠFormat ting Section ( private Ġval Ġproject : ĠProject ) Ġ: ĠConfig Section ( project ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġline Length Model Ġ= ĠSp inner Number Model ( DEFAULT _ LINE _ LENGTH , Ġ 4 5 , Ġ 2 5 5 , Ġ 1 ) ĊĠĠĠ Ġprivate Ġval Ġline Length Spinner Ġ= ĠJ Spinner ( line Length Model ) ĊĊĠĠĠ Ġprivate Ġval Ġfast Mode Checkbox Ġ= ĠJ CheckBox (" Skip Ġsanity Ġchecks ") ĊĠĠĠ Ġprivate Ġval Ġskip String Normal Checkbox Ġ= ĠJ CheckBox (" Skip Ġstring Ġnormalization ") ĊĠĠĠ Ġprivate Ġval Ġtarget Specific Versions Checkbox Ġ= ĠJ CheckBox (" Target Ġspecific ĠPython Ġversions ") ĊĊĠĠĠ Ġprivate Ġval Ġtarget Versions Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" py 2 7 " Ġto Ġ" 2 . 7 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 3 " Ġto Ġ" 3 . 3 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 4 " Ġto Ġ" 3 . 4 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 5 " Ġto Ġ" 3 . 5 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 6 " Ġto Ġ" 3 . 6 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 7 " Ġto Ġ" 3 . 7 ", ĊĠĠĠĠĠĠĠ Ġ" py 3 8 " Ġto Ġ" 3 . 8 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġversion Check boxes Ġ= Ġsorted Map Of < String , ĠJ CheckBox >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget Versions . values . map Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . put (" py $ version ", ĠJ CheckBox ( version )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġpanel : ĠJPanel Ġby Ġlazy Ġ{ Ġcreate Panel () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Py project Specific Descriptor (): ĠFile Chooser Descriptor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Specific Descriptor Ġ= Ġobject Ġ: ĠFile Chooser Descriptor ( true , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis File Selectable ( file : ĠVirtual File ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . isFile Selectable ( file ) Ġ&& Ġfile ?. name . equals ( PY PROJECT _ TO ML ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis File Visible ( file : ĠVirtual File ?, Ġshow Hidden Files : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! show Hidden Files Ġ&& ĠFile Element . isFile Hidden ( file )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . isDirectory Ġ|| Ġfile . name Ġ== ĠPY PROJECT _ TO ML ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile Specific Descriptor . is For ced ToUse Ide a FileChooser Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġfile Specific Descriptor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Py project Tom l ( toml Contents : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġto ml : ĠTom l Ġ= ĠTom l (). read ( toml Contents ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! toml . contains (" tool . black ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . show Error Dialog ( this . panel , Ġ"< b >[ tool . black ]</ b > Ġsection Ġnot Ġfound !", Ġ" Error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġblack Settings Ġ= Ġto ml . getTable (" tool . black ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Versions FromFile Ġ= Ġblack Settings . getList < String >(" target - version ", ĠCollections . emptyList ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( target Versions FromFile . count () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Versions . entries . map Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Check boxes [" py " Ġ+ Ġentry . value ]?. isSelected Ġ= Ġtarget Versions FromFile . contains ( entry . key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġline Length Spinner . value Ġ= Ġblack Settings . getLong (" line - length ", ĠDEFAULT _ LINE _ LENGTH . to Long ()). toInt () ĊĠĠĠĠĠĠĠ Ġskip String Normal Checkbox . isSelected Ġ= Ġblack Settings . getBoolean (" skip - string - normal ization ", Ġfalse ) ĊĠĠĠĠĠĠĠ Ġfast Mode Checkbox . isSelected Ġ= Ġblack Settings . getBoolean (" fast ", Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Panel (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= ĠIde Border Factory . create Title d Border (" Formatting ĠOptions ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalignment X Ġ= ĠComponent . LEFT _ ALIGNMENT ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Versions Panel Ġ= Ġcreate Target Versions Panel () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . addItem Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Versions Panel . components . map Ġ{ Ġcheckbox Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox . isEnabled Ġ= Ġtarget Specific Versions Checkbox . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġload Py project Tom l Button Ġ= Ġcreate Py project Tom l Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Length Panel Ġ= ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠFlow Layout ( Flow Layout . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( line Length Spinner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( create Ide Margin Copy Button ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForm Builder . create Form Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Labeled Component (" Line Ġlength :", Ġline Length Panel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( fast Mode Checkbox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( skip String Normal Checkbox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( target Specific Versions Checkbox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( target Versions Panel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addComponent ( load Py project Tom l Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. panel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBorderLayout . NORTH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ide Margin Copy Button (): ĠJButton Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJButton (" Copy Ġfrom ĠIDE "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpython Language Ġ= ĠLanguage . find Language ByID (" Python ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Length Spinner . value Ġ= ĠCode Style . get Settings ( project ). get Right Margin ( python Language ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Target Versions Panel (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠFlow Layout ( Flow Layout . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= ĠIde Border Factory . create Empty Border ( J BU I . in sets Left ( 1 6 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Check boxes . values . forEach Ġ{ Ġcheckbox Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheckbox . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( checkbox ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Py project Tom l Button (): ĠJButton Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJButton (" Load Ġfrom Ġpy project . toml "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpy project Tom l Descriptor Ġ= Ġcreate Py project Specific Descriptor () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcandidates Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilename Index . get Virtual Files ByName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" py project . toml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Search Scope . project Scope ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Chooser . choose File ( py project Tom l Descriptor , Ġproject , Ġparent , Ġcandidates . first OrNull ()) Ġ{ Ġfile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= Ġfile . inputStream . buffered Reader (). use ( BufferedReader :: read Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Py project Tom l ( contents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload From ( configuration : ĠBlack Connect Project Settings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġline Length Spinner . value Ġ= Ġconfiguration . line Length ĊĠĠĠĠĠĠĠ Ġfast Mode Checkbox . isSelected Ġ= Ġconfiguration . fast Mode ĊĠĠĠĠĠĠĠ Ġskip String Normal Checkbox . isSelected Ġ= Ġconfiguration . skip String Normalization ĊĊĠĠĠĠĠĠĠ Ġconfiguration . python Targets . split ("," ). forEach Ġ{ Ġversion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Check boxes [ version ]?. isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( configuration . target Specific Versions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġdone Ġto Ġtrigger Ġdependent Ġitem Ġchange Ġlogic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġand Ġenable Ġversion Ġcheck boxes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . do Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . isSelected Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Version Spec (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġversion Check boxes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . value . isSelected Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . key Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (",") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave To ( configuration : ĠBlack Connect Project Settings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfiguration . line Length Ġ= Ġline Length Spinner . value Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġconfiguration . fast Mode Ġ= Ġfast Mode Checkbox . isSelected ĊĠĠĠĠĠĠĠ Ġconfiguration . skip String Normalization Ġ= Ġskip String Normal Checkbox . isSelected ĊĠĠĠĠĠĠĠ Ġconfiguration . target Specific Versions Ġ= Ġtarget Specific Versions Checkbox . isSelected ĊĠĠĠĠĠĠĠ Ġconfiguration . python Targets Ġ= Ġgenerate Version Spec () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Modified ( configuration : ĠBlack Connect Project Settings ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġline Length Spinner . value Ġ!= Ġconfiguration . line Length Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfast Mode Checkbox . isSelected Ġ!= Ġconfiguration . fast Mode Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġskip String Normal Checkbox . isSelected Ġ!= Ġconfiguration . skip String Normalization Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Specific Versions Checkbox . isSelected Ġ!= Ġconfiguration . target Specific Versions Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Version Spec () Ġ!= Ġconfiguration . python Targets ĊĠĠĠ Ġ} Ċ } Ċ