package Ġapps . chat . gui Ċ Ċ import ĠSettings Ċ import Ġapps . chat . Chat Manager Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Grid BagConstraints Ċ import Ġjava . awt . Grid BagLayout Ċ import Ġjava . awt . Insets Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjava . awt . event . Window Adapter Ċ import Ġjava . awt . event . Window Event Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . URI Ċ import Ġjava . net . UR ISyntaxException Ċ import Ġjava . text . NumberFormat Ċ import Ġjavax . swing .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġuser Ġon Ġ 6 / 2 4 / 1 6 . Ċ Ġ*/ Ċ class ĠChat Manager GUI () Ġ{ ĊĠĠĠ Ġinternal Ġval ĠappName Ġ= Ġ" P 2 P Ġchat Ġ+ Ġ[ ${ Settings . host Address . port }] " ĊĠĠĠ Ġinternal Ġvar Ġusername Chooser : ĠJTextField Ġ= ĠJTextField () ĊĠĠĠ Ġinternal Ġvar Ġhost Address Chooser : ĠJTextField Ġ= ĠJTextField () ĊĠĠĠ Ġinternal Ġvar Ġchat ID Chooser : ĠJ Formatted TextField Ġ= ĠJ Formatted TextField () ĊĠĠĠ Ġinternal Ġvar Ġenter Frame : ĠJ Frame Ġ= ĠJ Frame () ĊĊĠĠĠ Ġfun Ġdisplay () Ġ{ ĊĠĠĠĠĠĠĠ Ġenter Frame Ġ= ĠJ Frame ( appName ) ĊĠĠĠĠĠĠĠ Ġusername Chooser Ġ= ĠJTextField ( Settings . default Username , Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġ// host Address Chooser Ġ= ĠJTextField ("${ Settings . host Address . host Name }:${ Settings . host Address . port }", Ġ 2 0 ) ĊĠĠĠĠĠĠĠ Ġhost Address Chooser Ġ= ĠJTextField ("${ Settings . host Address . host Name }: 1 2 3 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 ) ĊĠĠĠĠĠĠĠ Ġchat ID Chooser Ġ= ĠJ Formatted TextField ( NumberFormat . getNumber Instance ()) ĊĠĠĠĠĠĠĠ Ġchat ID Chooser . text Ġ= Ġ" 6 6 6 " ĊĠĠĠĠĠĠĠ Ġchat ID Chooser . columns Ġ= Ġ 4 ĊĠĠĠĠĠĠĠ Ġval Ġchoose Username Label Ġ= ĠJLabel (" Pick Ġa Ġusername :") ĊĠĠĠĠĠĠĠ Ġval Ġchoose Host Label Ġ= ĠJLabel (" Specify Ġa Ġpeer :") ĊĠĠĠĠĠĠĠ Ġval Ġchoose Chat Label Ġ= ĠJLabel (" Enter Ġchat ĠID :") ĊĠĠĠĠĠĠĠ Ġval Ġenter Server Ġ= ĠJButton (" Connect ") ĊĠĠĠĠĠĠĠ Ġenter Server . addActionListener ( enter Server Button Listener ()) ĊĠĠĠĠĠĠĠ Ġval Ġchat Enter Panel Ġ= ĠJPanel ( Grid BagLayout ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġusername Right Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġusername Right . in sets Ġ= ĠIn sets ( 0 , Ġ 0 , Ġ 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġusername Right . anchor Ġ= ĠGridBagConstraints . WEST ĊĠĠĠĠĠĠĠ Ġval Ġusername Left Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġusername Left . anchor Ġ= ĠGridBagConstraints . EAST ĊĠĠĠĠĠĠĠ Ġusername Left . in sets Ġ= ĠIn sets ( 0 , Ġ 1 0 , Ġ 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġusername Right . weight x Ġ= Ġ 2 . 0 ; ĊĠĠĠĠĠĠĠ Ġusername Right . fill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġusername Right . grid width Ġ= ĠGridBagConstraints . RE MA IND ER ĊĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( choose Username Label , Ġusername Left ) ĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( username Chooser , Ġusername Right ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġhost Right Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġhost Right . in sets Ġ= ĠIn sets ( 3 0 , Ġ 0 , Ġ 3 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġhost Right . anchor Ġ= ĠGridBagConstraints . WEST ĊĠĠĠĠĠĠĠ Ġval Ġhost Left Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġhost Left . anchor Ġ= ĠGridBagConstraints . EAST ĊĠĠĠĠĠĠĠ Ġhost Left . in sets Ġ= ĠIn sets ( 3 0 , Ġ 1 0 , Ġ 3 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġusername Right . weight x Ġ= Ġ 2 . 0 ; ĊĠĠĠĠĠĠĠ Ġhost Right . fill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġhost Right . grid width Ġ= ĠGridBagConstraints . RE MA IND ER ĊĊĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( choose Host Label , Ġhost Left ) ĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( host Address Chooser , Ġhost Right ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchat Right Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġchat Right . in sets Ġ= ĠIn sets ( 2 0 , Ġ 0 , Ġ 2 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġchat Right . anchor Ġ= ĠGridBagConstraints . WEST ĊĠĠĠĠĠĠĠ Ġval Ġchat Left Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġchat Left . anchor Ġ= ĠGridBagConstraints . EAST ĊĠĠĠĠĠĠĠ Ġchat Left . in sets Ġ= ĠIn sets ( 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġusername Right . weight x Ġ= Ġ 2 . 0 ; ĊĠĠĠĠĠĠĠ Ġchat Right . fill Ġ= ĠGridBagConstraints . NONE ĊĠĠĠĠĠĠĠ Ġchat Right . grid width Ġ= ĠGridBagConstraints . RE MA IND ER ĊĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( choose Chat Label , Ġchat Left ) ĊĠĠĠĠĠĠĠ Ġchat Enter Panel . add ( chat ID Chooser , Ġchat Right ) ĊĊĊĠĠĠĠĠĠĠ Ġenter Frame . add ( Border Layout . CENTER , Ġchat Enter Panel ) ĊĠĠĠĠĠĠĠ Ġenter Frame . add ( Border Layout . SO UTH , Ġenter Server ) ĊĠĠĠĠĠĠĠ Ġenter Frame . setSize ( 6 0 0 , Ġ 4 0 0 ) ĊĠĠĠĠĠĠĠ Ġenter Frame . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġenter Frame . default Close Operation Ġ= ĠJ Frame . DIS POSE _ ON _ CLOSE ĊĠĠĠĠĠĠĠ Ġenter Frame . add WindowListener ( object Ġ: ĠWindow Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwindow Closing ( e : ĠWindow Event ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinner Ġclass Ġenter Server Button Listener Ġ: ĠActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAction Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( username Chooser . text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠURI (" my ://" Ġ+ Ġhost Address Chooser . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri . port Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhost Addr Ġ= ĠInet SocketAddress ( uri . host , Ġuri . port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat ID Chooser . commit Edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Id Ġ= Ġ( chat ID Chooser . value Ġas ĠNumber ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat Manager . join Chat ( chat Id , Ġhost Addr , Ġusername Chooser . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch ( ignored : ĠUR ISyntaxException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Malformed Ġhost Ġaddress ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Manager . close () ĊĠĠĠ Ġ} Ċ }