package Ġee . lang . fx . view Ċ Ċ import Ġjavafx . application . Platform Ċ import Ġjavafx . scene . input . KeyCode Ċ import Ġjavafx . scene . input . KeyEvent Ċ import Ġt orn ad of x . border pane Ċ import Ġt orn ad of x . bottom Ċ import Ġt orn ad of x . center Ċ import Ġt orn ad of x . text field Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Consumer Ċ Ċ class ĠConsole Input View Ġ: ĠConsole View (" Console Input View ") Ġ{ ĊĠĠĠ Ġprivate Ġval Ġhistory : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġvar Ġhistory Pointer Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġon Message Received Handler : ĠConsumer < String >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġinput Ġ= Ġtext field Ġ{ ĊĠĠĠĠĠĠĠ Ġadd EventHandler ( KeyEvent . KEY _ RELEASE D ) Ġ{ Ġkey Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( key Event . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . ENTER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . append Text ( text Ġ+ ĠSystem . line Separator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory . add ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Pointer ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Message Received Handler Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Message Received Handler !!. accept ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . UP ĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history Pointer Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Pointer -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġhistory [ history Pointer ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . DOWN Ġ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history Pointer Ġ< Ġhistory . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Pointer ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġhistory [ history Pointer ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠĠ Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġborder pane Ġ{ ĊĠĠĠĠĠĠĠ Ġcenter Ġ{ Ġadd ( out ) Ġ} ĊĠĠĠĠĠĠĠ Ġbottom Ġ{ Ġadd ( input ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ