/* - Ċ Ġ* ĠPlugin ĠDrop ĠProject Ċ Ġ* ĠĊ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠY ash ĠJ ah it Ċ Ġ* ĠĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . t fc . ul ht . login Components Ċ Ċ import ĠText Prompt Ċ import Ġcom . t fc . ul ht . Users Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Grid BagConstraints Ċ import Ġjava . awt . Grid BagLayout Ċ import Ġjava . awt . GridLayout Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjavax . swing .* ĊĊ Ċ class ĠLogin Dialog Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstudents List Ġ= ĠArrayList < Users >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠGR ID Y : ĠInt Ġ= Ġ 3 ĊĠĠĠ Ġprivate Ġval Ġname Label Ġ= ĠJLabel (" Name : ĠĠ Ġ") ĊĠĠĠ Ġprivate Ġval Ġusername Label Ġ= ĠJLabel (" Username : ĠĠ Ġ") ĊĠĠĠ Ġprivate Ġval Ġpassword Field Ġ= ĠJ Password Field () ĊĠĠĠ Ġprivate Ġval Ġpassword Label Ġ= ĠJLabel (" Password : ĠĠ Ġ") ĊĠĠĠ Ġprivate Ġval Ġadd Group Students Ġ= ĠJButton (" Click Ġhere Ġto Ġadd Ġyour Ġgroup Ġelements ") ĊĠĠĠ Ġprivate Ġval Ġstudent Number Field Ġ= Ġmutable ListOf < JTextField >() ĊĠĠĠ Ġprivate Ġval Ġstudent Name Field Ġ= Ġmutable ListOf < JTextField >() ĊĠĠĠ Ġprivate Ġval Ġnumber Field Ġ= ĠJTextField () ĊĠĠĠ Ġprivate Ġval Ġname Field Ġ= ĠJTextField () ĊĊĊĠĠĠ Ġfun Ġassemble Dialog ( panel : ĠJPanel ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġgb Panel Ġ= ĠGrid BagLayout () ĊĠĠĠĠĠĠĠ Ġval Ġg bc Ġ= ĠGridBagConstraints () ĊĠĠĠĠĠĠĠ Ġvar Ġcount Users Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġpanel . layout Ġ= ĠGrid Layout ( 6 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠName ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 0 ; Ġg bc . gridy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġg bc . grid width Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġg bc . fill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( name Label , Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( name Label ) ĊĊĠĠĠĠĠĠĠ Ġstudent Name Field . add ( name Field ) ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 1 ; Ġg bc . gridy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġg bc . grid width Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( student Name Field [ count Users ], Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( name Field ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUsername ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 0 ; Ġg bc . gridy Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( username Label , Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( username Label ) ĊĊĠĠĠĠĠĠĠ Ġstudent Number Field . add ( number Field ) ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 1 ; Ġg bc . gridy Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( student Number Field [ count Users ], Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( student Number Field [ count Users ]) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPassword ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 0 ; Ġg bc . gridy Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( password Label , Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( password Label ) ĊĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 1 ; Ġg bc . gridy Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( password Field , Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( password Field ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġmore Ġstudents ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 0 ; Ġg bc . gridy Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( addGroup Students , Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( addGroup Students ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEmpty Ġlabel Ġafter Ġadd Ġstudents Ġbutton ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġempty Label Ġ= ĠJLabel () ĊĠĠĠĠĠĠĠ Ġpanel . add ( empty Label ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġaction Listener Ġ= ĠActionListener Ġ{ Ġaction Event Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Users Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Users ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd More Students ( panel , Ġg bc , Ġgb Panel , Ġcount Users ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Group Students . addActionListener ( action Listener ) ĊĊĠĠĠĠĠĠĠ Ġval Ġopt Ġ= ĠarrayOf (" Log ĠIn ", Ġ" Cancel ") ĊĠĠĠĠĠĠĠ ĠUI Manager . put (" OptionPane . minimum Size ", ĠDimension ( panel . width , Ġpanel . height )) ĊĠĠĠĠĠĠĠ Ġval Ġoption Ġ= ĠJOptionPane . show Option Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġpanel , Ġ" Log ĠIn ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . YES _ NO _ OPTION , ĠJOptionPane . DEFAULT _ OPTION , Ġnull , Ġopt , Ġopt [ 0 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCheck Ġcredential ĊĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( option Ġ== Ġ 0 ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠAuthentication (). check Credentials ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Number Field [ 0 ]. text . trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString ( password Field . password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUI Manager . put (" OptionPane . minimum Size ", ĠDimension ( 2 0 0 , Ġ 1 0 0 )) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Ġ&& Ġ! check If Correct Number ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . showMessageDialog ( null , Ġ" Login ĠSuccessful ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . showMessageDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġ" Login Ġcredentials Ġincorrect !", Ġ" Error !", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . ERROR _ MESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd More Students ( panel : ĠJPanel , Ġg bc : ĠGridBagConstraints , Ġgb Panel : ĠGrid BagLayout , Ġcount : ĠInt ): ĠJPanel Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnumber Field Ġ= ĠJTextField () ĊĠĠĠĠĠĠĠ Ġval Ġname Field Ġ= ĠJTextField () ĊĊĠĠĠĠĠĠĠ Ġval Ġnumber Field Prompt Ġ= ĠText Prompt ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Write Ġyour Ġstudent Ġnumber Ġhere ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnumber Field , ĠText Prompt . Show . FOCUS _ LO ST ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġnumber Field Prompt . change Alpha ( 0 . 5 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġname Field Prompt Ġ= ĠText Prompt ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Write Ġyour Ġstudent Ġname Ġhere ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Field , ĠText Prompt . Show . FOCUS _ LO ST ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġname Field Prompt . change Alpha ( 0 . 5 f ) ĊĊĠĠĠĠĠĠĠ Ġstudent Number Field . add ( number Field ) ĊĠĠĠĠĠĠĠ Ġstudent Name Field . add ( name Field ) ĊĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 0 ; Ġg bc . gridy Ġ= ĠGR ID Y ++ ĊĠĠĠĠĠĠĠ Ġg bc . fill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( student Number Field [ count ], Ġg bc ) ĊĊĠĠĠĠĠĠĠ Ġpanel . add ( student Number Field [ count ]) ĊĊĠĠĠĠĠĠĠ Ġg bc . gridx Ġ= Ġ 1 ; Ġg bc . gridy Ġ= ĠGR ID Y ĊĠĠĠĠĠĠĠ Ġg bc . fill Ġ= ĠGridBagConstraints . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġgb Panel . set Constraints ( student Name Field [ count ], Ġg bc ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( student Name Field [ count ]) ĊĊĠĠĠĠĠĠĠ Ġpanel . parent . re validate () ĊĠĠĠĠĠĠĠ Ġreturn Ġpanel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If Correct Number (): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( number Ġin Ġstudent Number Field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Or Not Ġ= Ġnumber . text . trim (). contains (' a ') Ġ&& Ġnumber . text . length Ġ== Ġ 9 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( add Or Not ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudents List . add ( Users ( number . text . trim (), Ġstudent Name Field [ index ]. text . trim ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . showMessageDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" User Ġ${ number . text . trim ()} Ġis Ġnot Ġin Ġthe Ġcorrect Ġformat , Ġplease Ġtry Ġagain ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Error Ġin Ġstudent Ġnumber ", ĠJOptionPane . ERROR _ MESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }