package Ġdev . kom u . kr aken . desktop . console Ċ Ċ import Ġdev . kom u . kr aken . desktop . extensions . make Action Ċ import Ġdev . kom u . kr aken . desktop . extensions . set Ċ import Ġdev . kom u . kr aken . model . Direction Ċ import Ġjava . awt . Frame Ċ import Ġjava . awt . GridLayout Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjavax . swing . Abstract Action Ċ import Ġjavax . swing . JButton Ċ import Ġjavax . swing . J Dialog Ċ import Ġjavax . swing . JPanel Ċ Ċ class ĠSelect Direction Dialog ( owner : ĠFrame ): ĠJ Dialog () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġselected Direction : ĠDirection ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Modal Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġcontent Pane . layout Ġ= ĠGrid Layout ( 3 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . NW )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . NORTH )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . NE )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . WEST )) ĊĠĠĠĠĠĠĠ Ġadd ( JPanel ()) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . EAST )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . SW )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . SO UTH )) ĊĠĠĠĠĠĠĠ Ġadd ( select Direction Button ( Direction . SE )) ĊĊĠĠĠĠĠĠĠ Ġval Ġinput Map Ġ= Ġroot Pane . input Map ĊĠĠĠĠĠĠĠ Ġinput Map [" UP "] ĠĠĠĠĠ Ġ= ĠDirection . NORTH ĊĠĠĠĠĠĠĠ Ġinput Map [" DOWN "] ĠĠĠ Ġ= ĠDirection . SO UTH ĊĠĠĠĠĠĠĠ Ġinput Map [" LEFT "] ĠĠĠ Ġ= ĠDirection . WEST ĊĠĠĠĠĠĠĠ Ġinput Map [" RIGHT "] ĠĠ Ġ= ĠDirection . EAST ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 1 "] Ġ= ĠDirection . SW ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 2 "] Ġ= ĠDirection . SO UTH ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 3 "] Ġ= ĠDirection . SE ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 4 "] Ġ= ĠDirection . WEST ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 6 "] Ġ= ĠDirection . EAST ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 7 "] Ġ= ĠDirection . NW ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 8 "] Ġ= ĠDirection . NORTH ĊĠĠĠĠĠĠĠ Ġinput Map [" NU MP AD 9 "] Ġ= ĠDirection . NE ĊĠĠĠĠĠĠĠ Ġinput Map [" ESCAPE "] Ġ= Ġ" escape " ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Map Ġ= Ġroot Pane . action Map ĊĠĠĠĠĠĠĠ Ġfor Ġ( dir Ġin ĠDirection . values ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Map [ dir ] Ġ= ĠSelect Direction Action ( dir ) ĊĊĠĠĠĠĠĠĠ Ġaction Map [" escape "] Ġ= Ġmake Action (" Escape ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Direction Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠĠĠ Ġset Location Relative To ( owner ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Direction Button ( dir : ĠDirection ) Ġ= ĠJButton ( Select Direction Action ( dir )) ĊĊĠĠĠ Ġinner Ġclass ĠSelect Direction Action ( val Ġdir : ĠDirection ): ĠAbstract Action ( dir . short Name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Direction Ġ= Ġdir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġselect Direction ( frame : ĠFrame ): ĠDirection ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdlg Ġ= ĠSelect Direction Dialog ( frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdlg . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdlg . selected Direction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ