package Ġme . sc ana . ok gradle ; Ċ Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . ui . PopupMenu Listener Adapter Ċ import Ġcom . intellij . ui . components . JB List Ċ import Ġcom . intellij . ui . components . JB ScrollPane Ċ import Ġcom . intellij . ui . components . labels . Link Label Ċ import Ġcom . intellij . ui . components . panels . Horizontal Layout Ċ import Ġcom . intellij . ui . components . panels . Vertical Layout Ċ import Ġio . reactivex . Observable Ċ import Ġme . sc ana . ok gradle . data . repository . Artifact Ċ import Ġme . sc ana . ok gradle . util .* Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Font Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . event . PopupMenu Event ĊĊ Ċ class ĠOk Gradle Dialog ( private Ġval Ġpresenter : ĠOk Gradle . Presenter ) Ġ: ĠDialog Wrapper ( false ), ĠOk Gradle . View Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLogger . getInstance ( Ok Gradle Dialog :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhint Link Ġ= ĠLink Label < Any >(" ", Ġnull ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Listener ({ Ġ_, Ġ_ Ġ-> Ġpresenter . on Suggestion Click ( text ) Ġ}, Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhint Panel Ġ= ĠJPanel ( Horizontal Layout ( 2 )). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( JLabel ( Copy s . SU G GEST ION _ FIRST _ PART )) ĊĠĠĠĠĠĠĠ Ġadd ( hint Link ) ĊĠĠĠĠĠĠĠ Ġadd ( JLabel ( Copy s . SU G GEST ION _ LAST _ PART )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlibrary Query Ġ= ĠHint TextField (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġhint Ġ= ĠCopy s . INPUT _ HINT ĊĠĠĠĠĠĠĠ Ġon KeyPress ( KeyEvent . VK _ DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransfer Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . selectedIndex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġresults ListModel Ġ= ĠArtifact ListModel () ĊĠĠĠ Ġprivate Ġval Ġresult List Ġ= ĠJ B List ( results ListModel ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġselection Mode Ġ= ĠList Selection Model . SINGLE _ SELECTION ĊĠĠĠĠĠĠĠ Ġvisible RowCount Ġ= Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Error ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . warn ( throwable . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Buttons ( all Enabled : ĠBoolean , Ġis Add Dependency Visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Dependency Button . isEnabled Ġ= Ġall Enabled ĊĠĠĠĠĠĠĠ Ġclipboard Copy Button . isEnabled Ġ= Ġall Enabled ĊĠĠĠĠĠĠĠ Ġadd Dependency Button . isVisible Ġ= Ġis Add Dependency Visible ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġclipboard Copy Button Ġ= ĠJButton (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= ĠCopy s . COPY _ TO _ CLIP BOARD _ ACTION ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ Ġpresenter . on CopyTo Clipboard Click () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġadd Dependency Button Ġ= ĠJButton (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= ĠCopy s . ADD _ DEPEND ENCY _ ACTION ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ Ġpresenter . on Add Dependency Clicked () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġtitle Ġ= ĠCopy s . TITLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . take View ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . drop View () ĊĠĠĠĠĠĠĠ Ġsuper . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= Ġbuild Panel () ĊĠĠĠĠĠĠĠ Ġconfigure Views () ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Panel (): ĠJPanel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Vertical Layout ( 8 )) ĊĠĠĠĠĠĠĠ Ġpanel . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJPanel ( Horizontal Layout ( 8 )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( JLabel ( Copy s . PROMPT _ HEADER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( hint Panel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġpanel . add ( library Query ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( JLabel ( Copy s . RESULT _ LIST _ TITLE )) ĊĠĠĠĠĠĠĠ Ġval Ġscroll Pane Ġ= ĠJ B ScrollPane ( result List ) ĊĠĠĠĠĠĠĠ Ġscroll Pane . preferred Size Ġ= ĠDimension ( 5 0 0 , Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( scroll Pane ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJPanel ( Horizontal Layout ( 8 )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( clipboard Copy Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( add Dependency Button ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtip Ġ= ĠCopy s . TIP . format ( Copy s . TI PS . sh uffled (). first ()) ĊĠĠĠĠĠĠĠ Ġpanel . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJLabel ( tip ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . foreground Ġ= Ġit . foreground . transparent ( 1 2 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . font Ġ= ĠFont ( it . font . name , Ġit . font . style , Ġit . font . size Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferred Focused Component () Ġ= Ġlibrary Query ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Actions (): ĠArray < Action > Ġ= Ġempty Array () ĊĊĠĠĠ Ġoverride Ġfun Ġuser TextInput Observable (): ĠObservable < String > Ġ= Ġlibrary Query . observe Text () ĊĊĠĠĠ Ġoverride Ġfun Ġuser Artifact Selection Observable (): ĠObservable < Selection < Artifact >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . observe Selection () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ Ġregister Result List Key Listener () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Result List Key Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġresult List . single On KeyPress ( KeyEvent . VK _ ENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Add Dependency Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay Modules ( modules : ĠList < Module >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= ĠJ PopupMenu ( Copy s . MODULES _ TITLE ) ĊĠĠĠĠĠĠĠ Ġmenu . add ( Copy s . MODULES _ TITLE ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmodules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( it . name ). addActionListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . on Module Selected ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( add Dependency Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add PopupMenu Listener ( object Ġ: ĠPopup Menu Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpopup Menu Canceled ( e : ĠPopup Menu Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Result List Key Listener () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . show ( this , Ġthis . x , Ġthis . y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . invoke KeyDown Press () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Suggestion () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Artifacts ( artifacts : ĠList < Artifact >) Ġ{ ĊĠĠĠĠĠĠĠ Ġresults ListModel . addAll ( artifacts ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Suggestion ( suggestion : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhint Link . text Ġ= Ġsuggestion ĊĠĠĠĠĠĠĠ Ġhint Panel . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Suggestion () Ġ{ ĊĠĠĠĠĠĠĠ Ġhint Panel . isVisible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset List State () Ġ{ ĊĠĠĠĠĠĠĠ Ġresult List . clear Selection () ĊĠĠĠĠĠĠĠ Ġresults ListModel . clear () ĊĠĠĠĠĠĠĠ Ġhide Suggestion () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfill Search Phrase ( search Phrase : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlibrary Query . text Ġ= Ġsearch Phrase ĊĠĠĠ Ġ} Ċ }