package Ġat . cp ick l . g ads u Ċ Ċ import Ġcom . github . ch ristop h pick l . k pot p our ri . common . logging . LOG Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . event . Focus Adapter Ċ import Ġjava . awt . event . Focus Event Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjava . util . regex . Pattern Ċ import Ġjavax . swing . J Frame Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JTextField Ċ import Ġjavax . swing . UI Manager Ċ Ċ private Ġval Ġlog Ġ= ĠLOG Ġ{} Ċ Ċ // ĠOUT SOURCE Ġto Ġk pot p our ri Ċ Ċ // Ġ----- ĠCOMMON 4 k Ċ Ċ val Ġmail Pattern Ġ= ĠPattern . compile (""" ^ ([ a - zA - Z 0 - 9 _ \- \. ]+) @ ([ a - zA - Z 0 - 9 _ \- \. ]+ )\ . ([ a - zA - Z ]{ 2 , 5 }) $ """) Ċ fun ĠString . isNot Valid Mail () Ġ= Ġ! this . isValid Mail () Ċ fun ĠString . isValid Mail (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġmail Pattern . matcher ( this ). matches () Ċ } ĊĊ Ċ fun Ġfirst NotEmpty ( var arg Ġstrings : ĠString ) Ġ= Ġstrings . toList (). first OrNull Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġ"" Ċ Ċ annotation Ġclass ĠKotlin No Arg Ċ Ċ fun Ġ< T > ĠList < T >. duplicates (): ĠList < T > Ġ{ ĊĠĠĠ Ġval Ġfound Duplicates Ġ= ĠLinked HashSet < T >() ĊĠĠĠ Ġval Ġtmp Ġ= Ġmutable Set Of < T >() ĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! tmp . add ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfound Duplicates Ġ+= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfound Duplicates . toList () Ċ } Ċ Ċ // Ġ----- ĠSW ING 4 k Ċ Ċ // Ġ=== > Ġpackage Ġat . cp ick l . g ads u . view . swing Ċ Ċ fun Ġinit Swing Look And Feel () Ġ{ ĊĠĠĠ ĠJ Frame . setDefault Look And Feel Decorated ( true ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠUI Manager . set Look And Feel ( UI Manager . getSystem Look And Feel ClassName ()) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . error (" Could Ġnot Ġset Ġnative Ġlook & fe el !", Ġe ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< T Ġ: ĠJTextField > ĠT . validate Mail Entered () Ġ= Ġapply Ġ{ ĊĠĠĠ Ġval Ġoriginal Foreground Ġ= Ġforeground ĊĠĠĠ Ġadd Focus Listener ( object Ġ: ĠFocus Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfocus Lost ( e : ĠFocus Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= Ġif Ġ( txt . isEmpty () Ġ|| Ġtxt . isValid Mail ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Foreground ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ val ĠKeyEvent . is Enter Ġget () Ġ= ĠkeyCode Ġ== ĠKeyEvent . VK _ ENTER Ċ val ĠKeyEvent . is Escape Ġget () Ġ= ĠkeyCode Ġ== ĠKeyEvent . VK _ ESCAPE Ċ val ĠKeyEvent . is W Ġget () Ġ= ĠkeyCode Ġ== ĠKeyEvent . VK _ W Ċ Ċ fun ĠJLabel . color ( new Foreground : ĠColor ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġforeground Ġ= Ġnew Foreground Ċ } Ċ