@ file : Jvm Name (" Main ") Ċ Ċ package Ġcom . ser ge ys av . al gov is Ċ Ċ import Ġcom . ser ge ys av . al gov is . structures . structures Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . awt . event . Window Adapter Ċ import Ġjava . awt . event . Window Event Ċ import Ġjavax . swing . Button Group Ċ import Ġjavax . swing . J Dialog Ċ import Ġjavax . swing . J Frame Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . J Menu Ċ import Ġjavax . swing . J MenuBar Ċ import Ġjavax . swing . J MenuItem Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . J RadioButton MenuItem Ċ import Ġjavax . swing . J Separator Ċ import Ġjavax . swing . J Spinner Ċ import Ġjavax . swing . Spinner Number Model Ċ import Ġjavax . swing . Window Constants Ċ Ċ /** Ċ Ġ* Ġ@ author Ġser ge ys Ċ Ġ*/ Ċ fun Ġmain () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġval Ġj Frame Ġ= ĠJ Frame (" Algo Vis ") ĊĠĠĠĠĊĠĠĠ Ġval Ġj MenuBar Ġ= ĠJ MenuBar () ĊĠĠĠĠĊĠĠĠ Ġval Ġdraw Panel Ġ= ĠDraw Panel ( j MenuBar ) ĊĠĠĠĠĊĠĠĠ Ġval Ġstructures Ġ= Ġstructures ĊĠĠĠĠĊĠĠĠ Ġj Frame . j MenuBar Ġ= Ġj MenuBar ĊĠĠĠĠĊĠĠĠ Ġvar Ġoperation Time Ġ= Ġ 5 . 0 ĊĠĠĠ Ġvar Ġinitialization Size Ġ= Ġ 1 0 0 ĊĠĠĠ Ġlateinit Ġvar Ġdata Size Menu : ĠJ MenuItem ĊĠĠĠ Ġlateinit Ġvar Ġop Time Menu : ĠJ MenuItem ĊĠĠĠ Ġlateinit Ġvar Ġstructure Menu : ĠJ Menu ĊĠĠĠ Ġlateinit Ġvar Ġsimulation Menu : ĠJ MenuItem ĊĠĠĠ Ġvar Ġsim Menu ActionListener : Ġ(() Ġ-> ĠUnit ) Ġ= Ġ{} ĊĠĠĠĠĊĠĠĠ Ġfun Ġ< T : ĠNumber > Ġcreate Spinner Dialog ( name : ĠString , Ġdefault : ĠT , Ġmin : ĠComparable < T >, Ġmax : ĠComparable < T >, Ġstep : ĠT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback : Ġ( Any ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj Dialog Ġ= ĠJ Dialog ( j Frame ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġj Spinner Ġ= ĠJ Spinner ( Spinner Number Model ( default , Ġmin , Ġmax , Ġstep )) ĊĠĠĠĠĊĠĠĠĠĠĠĠ Ġj Dialog . add WindowListener ( object : ĠWindow Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwindow Closing ( e : ĠWindow Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Spinner . commit Edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( j Spinner . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval ĠjPanel Ġ= ĠJPanel () ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ ĠjPanel . add ( JLabel ( name )) ĊĠĠĠĠĠĠĠ ĠjPanel . add ( j Spinner ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġj Dialog . add ( jPanel ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġj Dialog . pack () ĊĠĠĠĠĠĠĠ Ġj Dialog . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġcreate DataSize Dialog () Ġ= Ġcreate Spinner Dialog (" Data ĠSize ", Ġinitialization Size , Ġ 1 , Ġ 1 Ġshl Ġ 2 0 , Ġ 1 ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠ Ġinitialization Size Ġ= Ġresult Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġdata Size Menu . text Ġ= Ġ" Data ĠSize : Ġ$ initialization Size " ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġcreate Op Time Dialog () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Spinner Dialog (" Operation ĠTime Ġ( ms )", Ġoperation Time , Ġ 0 . 0 , Ġ( 1 Ġshl Ġ 2 0 ). toDouble (), Ġ 0 . 1 ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Time Ġ= Ġresult Ġas ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . structure . delay Millis Ġ= Ġoperation Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Time Menu . text Ġ= Ġ" Operation ĠTime : Ġ$ operation Time Ġms " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġupdate Simulation Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġsim Menu ActionListener Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġval Ġalgorithm Ġ= Ġdraw Panel . algorithm ĊĠĠĠĠĠĠĠ Ġsimulation Menu . text Ġ= Ġif Ġ( algorithm Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" No ĠAlgorithm ĠSelected " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! algorithm . complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! algorithm . running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsim Menu ActionListener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job Ġ= Ġalgorithm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalgorithm . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// On Ġcompletion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Simulation Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Simulation Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Start ĠAlgorithm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsim Menu ActionListener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Simulation Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Stop ĠAlgorithm " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( algorithm . running ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Algorithm ĠFinished " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Algorithm ĠAbort ed " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġdraw Panel . completion Callback Ġ= Ġ{ Ġupdate Simulation Menu () Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġupdate Structure Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġstructure Menu . removeAll () ĊĠĠĠĠĠĠĠ Ġstructure Menu . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J Menu ( if Ġ(! draw Panel . structure . initialized ) Ġ" Initialize " Ġelse Ġ" Re initialize "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( initial iz ion Condition Ġin Ġdraw Panel . structure . initialization Conditions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem ( initial iz ion Condition . name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial iz ion Condition ( initialization Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Structure Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( draw Panel . structure . initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J Menu (" Algorithm "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠButton Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( name , Ġparams , Ġcreator ) Ġin Ġdraw Panel . structure . algorithms ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem ( name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . algorithm Ġ= Ġcreator ( int ArrayOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Structure Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J Menu ( name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Vals Ġ= ĠInt Array ( params . size ) Ġ{ Ġi Ġ-> Ġparams [ i ]. default Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġparams . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem ("${ params [ i ]. name }: Ġ${ param Vals [ i ]} "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Spinner Dialog ( params [ i ]. name , Ġparam Vals [ i ], Ġparams [ i ]. min , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams [ i ]. max , Ġparams [ i ]. step ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Vals [ i ] Ġ= Ġresult Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . text Ġ= Ġ"${ params [ i ]. name }: Ġ${ param Vals [ i ]}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J Separator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Select "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . algorithm Ġ= Ġcreator ( param Vals ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Structure Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Simulation Menu () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġj MenuBar . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ( J Menu (" Structures "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= ĠButton Group () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( name , Ġgenerator ) Ġin Ġstructures ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J RadioButton MenuItem ( name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . add ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . job ?. stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . structure Ġ= Ġgenerator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . structure . delay Millis Ġ= Ġoperation Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Panel . algorithm Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Structure Menu () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( J Menu (" Current ĠStructure "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstructure Menu Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" No ĠStructure ĠSelected ")) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( J Menu (" Options "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Operation ĠTime : Ġ$ operation Time Ġms "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Time Menu Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Op Time Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Initialization ĠSize : Ġ$ initialization Size "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Size Menu Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate DataSize Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġadd ( J MenuItem (" Simulation "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimulation Menu Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ Ġsim Menu ActionListener () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Simulation Menu () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġj Frame . add ( draw Panel ) ĊĠĠĠĠĊĠĠĠ Ġj Frame . default Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠ Ġj Frame . setSize ( 8 0 0 , Ġ 8 0 0 ) ĊĠĠĠĠĊĠĠĠ Ġj Frame . isVisible Ġ= Ġtrue ĊĠĠĠĠĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 Ġ/ Ġ 6 0 ) ĊĠĠĠĠĠĠĠ Ġj Frame . rep aint () ĊĠĠĠ Ġ} Ċ }