package Ġorg . k af k alytic . plugin Ċ Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Ċ import Ġcom . intellij . openapi . ui . Input Validator Ċ import Ġcom . intellij . ui . Document Adapter Ċ import Ġcom . intellij . ui . components . JB Label Ċ import Ġjava . awt .* Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . event . Document Event Ċ Ċ fun Ġlayout LR ( left : ĠJ Component , Ġcenter : ĠJ Component ? Ġ= Ġnull , Ġright : ĠJ Component ? Ġ= Ġnull ) Ġ: ĠJPanel Ġ{ ĊĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠ Ġpanel . add ( left , ĠBorderLayout . WEST ) ĊĠĠĠ Ġcenter ?. let Ġ{ Ġpanel . add ( it , ĠBorderLayout . CENTER ) Ġ} ĊĠĠĠ Ġright ?. let Ġ{ Ġpanel . add ( it , ĠBorderLayout . EAST ) Ġ} ĊĠĠĠ Ġreturn Ġpanel Ċ } Ċ Ċ fun Ġlayout UD ( top : ĠJ Component , Ġcenter : ĠJ Component ? Ġ= Ġnull , Ġbottom : ĠJ Component ? Ġ= Ġnull ) Ġ: ĠJPanel Ġ{ ĊĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠ Ġpanel . add ( top , ĠBorderLayout . NORTH ) ĊĠĠĠ Ġcenter ?. let Ġ{ Ġpanel . add ( it , ĠBorderLayout . CENTER ) Ġ} ĊĠĠĠ Ġbottom ?. let Ġ{ Ġpanel . add ( it , ĠBorderLayout . SO UTH ) Ġ} ĊĠĠĠ Ġreturn Ġpanel Ċ } Ċ Ċ fun Ġlayout UD 2 ( var arg Ġcomponents : ĠJ Component ) Ġ= ĠJPanel ( GridLayout ( 0 , Ġ 1 )). also Ġ{ Ġpanel Ġ-> ĊĠĠĠ Ġcomponents . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġpanel . add ( it ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠJPanel . add Label led ( label : ĠString , Ġfield : ĠComponent ) Ġ{ ĊĠĠĠ Ġadd ( JB Label ("$ label Ġ")) ĊĠĠĠ Ġadd ( field ) Ċ } Ċ Ċ val ĠINT _ VER IFIER Ġ= Ġobject Ġ: ĠInput Verifier () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġverify ( input : ĠJ Component ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Integer . parseInt (( input Ġas ĠJTextField ). text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis Ġ<= ĠInt . MAX _ VALUE Ġ&& Ġthis Ġ>= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ val ĠINT _ NON _ ZERO _ VER IFIER Ġ= Ġobject Ġ: ĠInput Verifier () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġverify ( input : ĠJ Component ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Integer . parseInt (( input Ġas ĠJTextField ). text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis Ġ<= ĠInt . MAX _ VALUE Ġ&& Ġthis Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ val ĠLONG _ VALID ATOR Ġ= Ġobject : ĠInput Validator Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcheck Input ( input String : ĠString ?) Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġcan Close ( input String : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( java . lang . Long . parse Long ( input String )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ<= ĠLong . MAX _ VALUE Ġ&& Ġthis Ġ>= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ } Ċ val ĠDATE _ FORMAT Ġ= ĠSimpleDateFormat (" dd / MM / yy Ġhh : mm : ss ") Ċ val ĠDATE _ VER IFIER Ġ= Ġobject Ġ: ĠInput Verifier () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġverify ( input : ĠJ Component ) Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATE _ FORMAT . parse (( input Ġas ĠJTextField ). text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ val ĠTOP IC _ VER IFIER Ġ= Ġobject Ġ: ĠInput Verifier () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġverify ( input : ĠJ Component ) Ġ= ĠRegex (""" [ a - zA - Z 0 - 9 .\ -_ ]+ "" "). matches (( input Ġas ĠJTextField ). text ) Ċ } Ċ Ċ val ĠLONG _ VER IFIER Ġ= Ġobject Ġ: ĠInput Verifier () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġverify ( input : ĠJ Component ) Ġ= ĠLONG _ VALID ATOR . can Close (( input Ġas ĠJTextField ). text ) Ċ } Ċ Ċ class ĠHint TextField ( private Ġval Ġ_ hint : ĠString ) Ġ: ĠJTextField () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpaint ( g : ĠGraphics ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . paint ( g ) ĊĠĠĠĠĠĠĠ Ġif Ġ( text . length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( g Ġas ĠGraphics 2 D ). set Rendering Hint ( Rendering Hints . KEY _ TEXT _ ANTI ALIAS ING , ĠRendering Hints . VALUE _ TEXT _ ANTI ALIAS _ ON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġins : ĠIn sets Ġ= Ġin sets ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfm : ĠFont Metrics Ġ= Ġg . getFont Metrics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc 0 Ġ= Ġbackground . rgb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc 1 Ġ= Ġforeground . rgb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġ- 0 x 1 0 1 0 1 0 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc 2 Ġ= Ġ( c 0 Ġand Ġm Ġ ush r Ġ 1 ) Ġ+ Ġ( c 1 Ġand Ġm Ġ ush r Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . setColor ( Color ( c 2 , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg . draw String (_ hint , Ġins . left , Ġh Ġ/ Ġ 2 Ġ+ Ġfm . get Asc ent () Ġ/ Ġ 2 Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPrint Options Panel ( config : ĠKafka State Component ) Ġ: ĠJPanel ( Border Layout ()) Ġ{ ĊĠĠĠ Ġval Ġprint To Event : ĠJ CheckBox ĊĠĠĠ Ġval Ġprint ToFile : ĠJ CheckBox ĊĠĠĠ Ġval Ġprint To Editor : ĠJ CheckBox ĊĠĠĠ Ġval Ġfile Ġ= ĠJTextField ( config . config [" print ToFile "] Ġ?: ĠPaths . get ( System . getProperty (" user . dir "), Ġ" k af k alytic - messages . txt "). toString ()) ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprint To Editor Ġ= ĠJ CheckBox (" Print Ġmessage Ġpayload Ġto ĠEditor Ġwindow ", Ġnull , Ġconfig . config [" print To Editor Selected "] ?. to Boolean () Ġ?: Ġtrue ) ĊĠĠĠĠĠĠĠ Ġprint To Event Ġ= ĠJ CheckBox (" Print Ġmessage Ġpayload Ġto ĠEvent Log Ġwindow ", Ġnull , Ġconfig . config [" print To Event Selected "] ?. to Boolean () Ġ?: Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġprint ToFile Selected Ġ= Ġconfig . config [" print ToFile Selected "] ?. to Boolean () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġprint ToFile Ġ= ĠJ CheckBox (" Print Ġmessage Ġpayload Ġto Ġfile ", Ġnull , Ġprint ToFile Selected ) ĊĠĠĠĠĠĠĠ Ġprint To Editor . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . config [" print To Editor Selected "] Ġ= Ġprint To Editor . isSelected . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" print To Editor Selected : Ġ" Ġ+ Ġconfig . config [" print To Editor Selected "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprint ToFile . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . isEnabled Ġ= Ġprint ToFile . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . config [" print ToFile Selected "] Ġ= Ġprint ToFile . isSelected . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" print ToFile Selected : Ġ" Ġ+ Ġconfig . config [" print ToFile Selected "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprint To Event . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . config [" print To Event Selected "] Ġ= Ġprint To Event . isSelected . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" print To Event Selected : Ġ" Ġ+ Ġconfig . config [" print To Event Selected "]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile . isEnabled Ġ= Ġprint ToFile Selected ĊĠĠĠĠĠĠĠ Ġfile . preferred Size Ġ= ĠDimension ( 2 0 0 , Ġ 2 4 ) ĊĠĠĠĠĠĠĠ Ġfile . document . add Document Listener ( object : ĠDocument Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtext Changed ( e : ĠDocument Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . config [" print ToFile "] Ġ= Ġfile . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . info (" path Ġchanged : Ġ" Ġ+ Ġconfig . config [" print ToFile "]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġbrowse Ġ= ĠJButton (" Browse ") ĊĠĠĠĠĠĠĠ Ġbrowse . addActionListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf cd Ġ= ĠFile Chooser Descriptor ( true , Ġtrue , Ġfalse , Ġfalse , Ġfalse , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠFile Chooser . choose File ( fcd , Ġnull , Ġnull )?. canonical Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . text Ġ= Ġif Ġ( Files . isDirectory ( Paths . get ( fileName ))) ĠPaths . get ( fileName , Ġ" kafka Messages . txt "). toString () Ġelse ĠfileName ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd ( layout UD ( layout UD ( print To Editor , Ġprint To Event ), Ġprint ToFile , Ġlayout LR ( JLabel (" File Ġto Ġprint "), Ġfile , Ġbrowse )), ĠBorderLayout . SO UTH ) ĊĠĠĠ Ġ} Ċ } ĊĊ