package Ġcom . test kn ight . listeners . checklist Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . JB MenuItem Ċ import Ġcom . intellij . openapi . ui . JB PopupMenu Ċ import Ġcom . intellij . ui . Checked TreeNode Ċ import Ġcom . intellij . ui . tree Structure . Tree Ċ import Ġcom . test kn ight . actions . checklist . Modify Checklist Action Ċ import Ġcom . test kn ight . models . Checklist User Object Ċ import Ġcom . test kn ight . models . testing Checklist . leaf Nodes . Testing Checklist Leaf Node Ċ import Ġcom . test kn ight . models . testing Checklist . parent Nodes . Testing Checklist Method Node Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjavax . swing . Swing Utilities Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ import Ġjavax . swing . tree . Tree Path Ċ Ċ class ĠChecklist Mouse Listener ( private Ġval Ġtree : ĠTree , Ġprivate Ġval Ġproject : ĠProject ) Ġ: ĠMouse Adapter () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( event : ĠMouseEvent ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Swing Utilities . is Right MouseButton ( event )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath : ĠTree Path Ġ= Ġtree . selection Path Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . last Path Component Ġ! is ĠDefault Mutable TreeNode ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Ġ= Ġpath . last Path Component Ġas ĠChecked TreeNode ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= ĠJ B PopupMenu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Ġ= ĠJ B MenuItem (" Delete ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete . addActionListener ( Modify Checklist Action ( node , Ġtree , Ġpath , Ġproject )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( delete ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( node . user Object Ġas ĠChecklist User Object ). checklist Node Ġis ĠTesting Checklist Leaf Node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġedit Ġ= ĠJ B MenuItem (" Edit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerate Ġ= ĠJ B MenuItem (" Generate ĠTest ĠMethod ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate . addActionListener ( Modify Checklist Action ( node , Ġtree , Ġpath , Ġproject )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit . addActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . apply Ġ{ Ġtree . start Editing At Path ( path ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( edit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( generate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( node . user Object Ġas ĠChecklist User Object ). checklist Node Ġis ĠTesting Checklist Method Node ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Item Ġ= ĠJ B MenuItem (" Add Ġitem ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item . addActionListener ( Modify Checklist Action ( node , Ġtree , Ġpath , Ġproject )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( addItem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . show ( tree , Ġevent . x , Ġevent . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ