package Ġcom . test kn ight . services . checklist Ċ Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . ui . Checkbox Tree Ċ import Ġcom . intellij . ui . Checked TreeNode Ċ import Ġcom . intellij . util . ui . tree . Tree Util Ċ import Ġcom . test kn ight . models . Checklist User Object Ċ import Ġcom . test kn ight . models . testing Checklist . Testing Checklist Ċ 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 Class Node Ċ import Ġcom . test kn ight . models . testing Checklist . parent Nodes . Testing Checklist Method Node Ċ import Ġcom . test kn ight . services . Usage DataService Ċ import Ġcom . test kn ight . views . trees . Checklist Cell Renderer Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ import Ġjavax . swing . tree . Default Tree Model Ċ import Ġjavax . swing . tree . TreeNode Ċ Ċ @ Suppress (" Too Many Functions ") Ċ class ĠChecklist Tree Service ( val Ġproject : ĠProject ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġui Tree : ĠCheckbox Tree ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdata Tree : ĠTesting Checklist ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġinitialize Ġthe Ġtrees , Ġit Ġacts Ġlike Ġa Ġconstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Ġthe ĠCheckbox Tree Ġwhich Ġhave Ġto Ġbe Ġinitialized ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit Trees ( ui Tree : ĠCheckbox Tree ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Tree Ġ= Ġproject . service < Checklist Tree Persistent >(). state ĊĠĠĠĠĠĠĠ Ġthis . ui Tree Ġ= Ġui Tree ĊĠĠĠĠĠĠĠ Ġreset Tree () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGetter Ġfor Ġthe ĠUI Ġtree . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠUI Ġtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Ui Tree (): ĠCheckbox Tree Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġui Tree ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInit Ġthe ĠUI Ġtree Ġfrom Ġthe Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit Ui Tree () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Tree Ġ= Ġproject . service < Checklist Tree Persistent >(). state ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠChecked TreeNode (" root ") ĊĠĠĠĠĠĠĠ Ġui Tree Ġ= ĠCheckbox Tree ( Checklist Cell Renderer ( true ), Ġroot ) ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Root Ġ= Ġui Tree . model . root Ġas ĠChecked TreeNode ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( class Node Ġin Ġdata Tree . class Check lists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Tree Class Node Ġ= ĠChecked TreeNode ( Checklist User Object ( class Node )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( method Node Ġin Ġclass Node . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Tree Method Ġ= ĠChecked TreeNode ( Checklist User Object ( method Node )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġmethod Node . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Node Ġ= ĠChecked TreeNode ( Checklist User Object ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Node . isChecked Ġ= Ġ( item . checked Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Method . add ( item Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Class Node . add ( ui Tree Method ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Root . add ( ui Tree Class Node ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠĠĠĠĠ ĠTree Util . expand All ( ui Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġresets Ġthe Ġtree Ġand Ġall Ġthe Ġprevious Ġinformation Ġis Ġlost . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset Tree () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Tree . class Check lists . clear () ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġui Tree . model . root Ġas ĠDefault Mutable TreeNode ĊĠĠĠĠĠĠĠ Ġroot . removeAll Children () ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġreturns Ġtrue Ġif Ġit Ġfinds Ġthe Ġelement Ġin Ġthe Ġgiven Ġmethod , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Method Ġthe ĠTesting Checklist Method Node Ġfor Ġwhich Ġwe Ġhave Ġto Ġcheck Ġif Ġthe Ġelement Ġexists ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Node Ġthe ĠTesting Checklist Leaf Node Ġwhich Ġwe Ġhave Ġto Ġfind ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Element ( ĊĠĠĠĠĠĠĠ Ġdata Method : ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠ Ġitem Node : ĠTesting Checklist Leaf Node ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfound Item Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdata Method . children . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Item Ġ= Ġdata Method . children [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Node . description Ġ== Ġdata Item . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Item Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġi Ġdo Ġnot Ġhave Ġto Ġadd Ġthis Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfound Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġbuilds Ġthe ĠUI Ġfor Ġa Ġchecklist Ġitem ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfound Item Ġthe ĠBoolean Ġwhich Ġrepresents Ġif Ġthe Ġitem Ġwas Ġfound Ġor Ġnot ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Method : Ġthe ĠTreeNode Ġwhich Ġrepresents Ġthe Ġmethod Ġreference Ġof Ġthe ĠUI ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Method Ġthe ĠTesting Checklist Method Node Ġwhich Ġrepresents Ġthe Ġmethod Ġof Ġthe Ġtree ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Node Ġthe ĠTesting Checklist Leaf Node Ġwhich Ġwe Ġhave Ġto Ġbe Ġappend Ġto Ġthe Ġtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Ui Item ( ĊĠĠĠĠĠĠĠ Ġfound Item : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġui Tree Method : ĠTreeNode , ĊĠĠĠĠĠĠĠ Ġdata Method : ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠ Ġitem Node : ĠTesting Checklist Leaf Node ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! found Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Method . children . add ( item Node ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Item Node Ġ= ĠChecked TreeNode ( Checklist User Object ( item Node )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item Node . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( ui Tree Method Ġas ĠChecked TreeNode ). add ( new Item Node ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġreturns Ġtrue Ġif Ġit Ġfinds Ġthe Ġmethod Ġin Ġthe Ġgiven Ġclass , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Class Node : Ġthe ĠTreeNode Ġwhich Ġrepresents Ġthe Ġreference Ġof Ġthe ĠUI ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Class Ġthe ĠTesting Checklist Class Node Ġfor Ġwhich Ġwe Ġhave Ġto Ġcheck Ġif Ġthe Ġmethod Ġexists ĊĠĠĠĠ Ġ* Ġ@ param Ġmethod Node Ġthe ĠTesting Checklist Method Node Ġwhich Ġwe Ġhave Ġto Ġfind ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Method ( ĊĠĠĠĠĠĠĠ Ġui Tree Class Node : ĠTreeNode , ĊĠĠĠĠĠĠĠ Ġdata Class : ĠTesting Checklist Class Node , ĊĠĠĠĠĠĠĠ Ġmethod Node : ĠTesting Checklist Method Node ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfound Method : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( k Ġin Ġ 0 Ġuntil Ġdata Class . children . size ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Method Ġ= Ġdata Class . children [ k ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Tree Method Ġ= Ġui Tree Class Node . getChild At ( k ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Method . description Ġ== Ġmethod Node . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Method Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Node Ġin Ġmethod Node . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Item : ĠBoolean Ġ= Ġfind Element ( data Method , Ġitem Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ui Item ( found Item , Ġui Tree Method , Ġdata Method , Ġitem Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfound Method ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġbuilds Ġthe ĠUI Ġfor Ġa Ġchecklist Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Class Node : Ġthe ĠTreeNode Ġwhich Ġrepresents Ġthe Ġclass Ġreference Ġof Ġthe ĠUI ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġrepresents Ġthe Ġclass Ġof Ġthe Ġtree ĊĠĠĠĠ Ġ* Ġ@ param Ġmethod Node Ġthe ĠTesting Checklist Method Node Ġwhich Ġwe Ġhave Ġto Ġbe Ġappend Ġto Ġthe Ġtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Ui Class ( ĊĠĠĠĠĠĠĠ Ġui Tree Class Node : ĠTreeNode , ĊĠĠĠĠĠĠĠ Ġdata Class : ĠTesting Checklist Class Node , ĊĠĠĠĠĠĠĠ Ġmethod Node : ĠTesting Checklist Method Node ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Class . children . add ( method Node ) ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Method Ġ= ĠChecked TreeNode ( Checklist User Object ( method Node )) ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġmethod Node . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Node Ġ= ĠChecked TreeNode ( Checklist User Object ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Node . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Method . add ( item Node ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( ui Tree Class Node Ġas ĠChecked TreeNode ). add ( ui Tree Method ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġbuilds Ġthe ĠUI Ġfor Ġthe Ġchecklist Ġmethods Ġof Ġa Ġchecklist Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Class Node : Ġthe ĠTreeNode Ġwhich Ġrepresents Ġthe Ġclass Ġreference Ġof Ġthe ĠUI ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġrepresents Ġthe Ġclass Ġof Ġthe Ġtree ĊĠĠĠĠ Ġ* Ġ@ param ĠnewNode Ġthe ĠTesting Checklist Class Node Ġwhich Ġwe Ġhave Ġto Ġbe Ġappend Ġto Ġthe Ġtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbuild Ui Methods ( ĊĠĠĠĠĠĠĠ Ġui Tree Class Node : ĠTreeNode , ĊĠĠĠĠĠĠĠ Ġdata Class : ĠTesting Checklist Class Node , ĊĠĠĠĠĠĠĠ ĠnewNode : ĠTesting Checklist Class Node ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( method Node Ġin ĠnewNode . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġfinding Ġthe Ġmethod , Ġcrate Ġnew Ġmethod ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! find Method ( ui Tree Class Node , Ġdata Class , Ġmethod Node )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ui Class ( ui Tree Class Node , Ġdata Class , Ġmethod Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġreturns Ġtrue Ġif Ġit Ġfinds Ġthe Ġclass Ġin Ġthe Ġlocal Ġtree , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġui Tree Root Ġthe ĠChecked TreeNode Ġwhich Ġrepresents Ġthe Ġreference Ġof Ġthe ĠUI Ġroot Ġtree ĊĠĠĠĠ Ġ* Ġ@ param ĠnewNode Ġthe ĠTesting Checklist Class Node Ġwhich Ġwe Ġhave Ġto Ġbe Ġfind Ġit Ġin Ġthe Ġlocal Ġtree ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġfind Class ( ui Tree Root : ĠChecked TreeNode , ĠnewNode : ĠTesting Checklist Class Node ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġfound Class Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( l Ġin Ġ 0 Ġuntil Ġdata Tree . class Check lists . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Class Ġ= Ġdata Tree . class Check lists [ l ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Tree Class Node Ġ= Ġui Tree Root . getChild At ( l ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Class . description Ġ== ĠnewNode . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Class Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Ui Methods ( ui Tree Class Node , Ġdata Class , ĠnewNode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfound Class ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġa Ġnew ĠTesting Checklist Class Node Ġif Ġit Ġwas Ġnot Ġthere Ġbefore ĊĠĠĠĠ Ġ* Ġ@ param ĠnewNode ĠTesting Checklist Class Node Ġwhich Ġrepresents Ġthe Ġnew Ġnode Ġwhich Ġhave Ġto Ġbe Ġadded ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Checklist ( new Node : ĠTesting Checklist Class Node ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġui Tree Root Ġ= Ġui Tree . model . root Ġas ĠChecked TreeNode ĊĊĠĠĠĠĠĠĠ Ġ// Ġnot Ġfinding Ġthe Ġmethod , Ġcreate Ġnew Ġclass ĊĠĠĠĠĠĠĠ Ġif Ġ(! find Class ( ui Tree Root , ĠnewNode )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Tree . class Check lists . add ( new Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclass Node Ġ= ĠChecked TreeNode ( Checklist User Object ( new Node )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Root . add ( class Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( method Ġin ĠnewNode . children ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Node Ġ= ĠChecked TreeNode ( Checklist User Object ( method )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġmethod . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Node Ġ= ĠChecked TreeNode ( Checklist User Object ( item )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Node . isChecked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Node . add ( item Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Node . add ( method Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠĠĠĠĠ ĠTree Util . expand All ( ui Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġindex Ġof Ġthe Ġitem Ġfrom Ġa Ġmethod ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Item Ġthe ĠTesting Checklist Leaf Node Ġwhich Ġwe Ġhave Ġto Ġfind Ġthe Ġindex ĊĠĠĠĠ Ġ* Ġ@ param Ġmethod Node Ġthe ĠTesting Checklist Method Node Ġfor Ġwhich Ġwe Ġhave Ġto Ġreturn Ġthe Ġindex Ġof Ġthe Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Index Item ( ĊĠĠĠĠĠĠĠ Ġdelete Item : ĠTesting Checklist Leaf Node , ĊĠĠĠĠĠĠĠ Ġmethod Node : ĠTesting Checklist Method Node ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmethod Node . children . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Node Ġ= Ġmethod Node . children [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Node . description Ġ== Ġdelete Item . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġindex Ġof Ġthe Ġmethod Ġfrom Ġa Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Method Ġthe ĠTesting Checklist Method Node Ġwhich Ġwe Ġhave Ġto Ġfind Ġthe Ġindex ĊĠĠĠĠ Ġ* Ġ@ param Ġclass Node Ġthe ĠTesting Checklist Class Node Ġfor Ġwhich Ġwe Ġhave Ġto Ġreturn Ġthe Ġindex Ġof Ġthe Ġitem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Index Method ( ĊĠĠĠĠĠĠĠ Ġdelete Method : ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠ Ġclass Node : ĠTesting Checklist Class Node ĊĠĠĠ Ġ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġclass Node . children . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Node Ġ= Ġclass Node . children [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( method Node . description Ġ== Ġdelete Method . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġindex Ġof Ġthe Ġclass Ġfrom Ġthe Ġentire Ġchecklist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġwe Ġhave Ġto Ġfind Ġthe Ġindex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Index Class ( delete Class : ĠTesting Checklist Class Node ): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( l Ġin Ġ 0 Ġuntil Ġdata Tree . class Check lists . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Class Ġ= Ġdata Tree . class Check lists [ l ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Class . description Ġ== Ġdelete Class . description ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġthe Ġitem Ġfrom Ġthe Ġtree ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Item Ġthe ĠTesting Checklist Leaf Node Ġwhich Ġwe Ġhave Ġto Ġdelete Ġit ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Method Ġthe ĠTesting Checklist Method Node Ġwhich Ġcontains Ġthe Ġitem ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġcontains Ġthe Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Item ( ĊĠĠĠĠĠĠĠ Ġdelete Item : ĠTesting Checklist Leaf Node , ĊĠĠĠĠĠĠĠ Ġdelete Method : ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠ Ġdelete Class : ĠTesting Checklist Class Node ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Root Ġ= Ġui Tree . model . root Ġas ĠChecked TreeNode ĊĠĠĠĠĠĠĠ Ġval Ġindex Class Ġ= Ġget Index Class ( delete Class ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Class Ġ== Ġ- 1 ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclass Node Ġ= Ġdata Tree . class Check lists [ index Class ] ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Class Ġ= Ġui Tree Root . getChild At ( index Class ) Ġas ĠChecked TreeNode ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Method Ġ= Ġget Index Method ( delete Method , Ġclass Node ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Method Ġ== Ġ- 1 ) Ġ{ Ġreturn Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmethod Node Ġ= Ġclass Node . children [ index Method ] ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Method Ġ= Ġui Tree Class . getChild At ( index Method ) Ġas ĠChecked TreeNode ĊĊĠĠĠĠĠĠĠ Ġval Ġindex Item Ġ= Ġget Index Item ( delete Item , Ġmethod Node ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Item Ġ== Ġ- 1 ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( delete Item . checked Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Node . checked Ġ-= Ġdelete Item . checked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Node . checked Ġ-= Ġdelete Item . checked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmethod Node . children . remove At ( index Item ) ĊĠĠĠĠĠĠĠ Ġui Tree Method . remove ( index Item ) ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠĠĠĠĠ ĠTree Util . expand All ( ui Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġthe Ġmethod Ġfrom Ġthe Ġtree ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Method Ġthe ĠTesting Checklist Method Node Ġwhich Ġwe Ġhave Ġto Ġdelete Ġit ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġcontains Ġthe Ġmethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Method ( ĊĠĠĠĠĠĠĠ Ġdelete Method : ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠ Ġdelete Class : ĠTesting Checklist Class Node ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Root Ġ= Ġui Tree . model . root Ġas ĠChecked TreeNode ĊĠĠĠĠĠĠĠ Ġval Ġindex Class Ġ= Ġget Index Class ( delete Class ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Class Ġ== Ġ- 1 ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġclass Node Ġ= Ġdata Tree . class Check lists [ index Class ] ĊĠĠĠĠĠĠĠ Ġval Ġui Tree Class Ġ= Ġui Tree Root . getChild At ( index Class ) Ġas ĠChecked TreeNode ĊĠĠĠĠĠĠĠ Ġval Ġindex Method Ġ= Ġget Index Method ( delete Method , Ġclass Node ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index Method Ġ== Ġ- 1 ) Ġ{ Ġreturn Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( delete Method . checked Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Node . checked Ġ-= Ġdelete Method . checked ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass Node . children . remove At ( index Method ) ĊĠĠĠĠĠĠĠ Ġui Tree Class . remove ( index Method ) ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠĠĠĠĠ ĠTree Util . expand All ( ui Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġthe Ġdelete Ġfrom Ġthe Ġtree ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdelete Class Ġthe ĠTesting Checklist Class Node Ġwhich Ġwe Ġhave Ġto Ġdelete Ġit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Class ( delete Class : ĠTesting Checklist Class Node ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġui Tree Root Ġ= Ġui Tree . model . root Ġas ĠChecked TreeNode ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġget Index Class ( delete Class ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġui Tree Root . remove ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Tree . class Check lists . remove At ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( ui Tree . model Ġas ĠDefault Tree Model ). reload () ĊĠĠĠĠĠĠĠ ĠTree Util . expand All ( ui Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġa Ġnode Ġfrom Ġthe Ġtree . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnode ĠThe ĠChecked TreeNode Ġwhich Ġhave Ġto Ġbe Ġdeleted ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Element ( node : ĠChecked TreeNode ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( node . user Object Ġas ĠChecklist User Object ). checklist Node Ġis ĠTesting Checklist Class Node ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Class ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġas ĠTesting Checklist Class Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( node . user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġis ĠTesting Checklist Method Node ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġas ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( node . parent Ġas ĠChecked TreeNode ). user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġas ĠTesting Checklist Class Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( node . user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġis ĠTesting Checklist Leaf Node ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( node . user Object Ġas ĠChecklist User Object ). checklist Node Ġas ĠTesting Checklist Leaf Node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( node . parent Ġas ĠChecked TreeNode ). user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġas ĠTesting Checklist Method Node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( node . parent . parent Ġas ĠChecked TreeNode ). user Object Ġas ĠChecklist User Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. checklist Node Ġas ĠTesting Checklist Class Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUsage DataService . instance . record Item Deleted () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġreturns Ġa ĠString Ġwhich Ġrepresents Ġthe Ġtree . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġprint (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġprint String : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( data Class Ġin Ġdata Tree . class Check lists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Method Ġin Ġdata Class . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Item Ġin Ġdata Method . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint String Ġ= Ġprint String Ġ+ Ġdata Class . description Ġ+ Ġ" Ġ" Ġ+ Ġdata Method . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint String Ġ= Ġprint String Ġ+ Ġ" Ġ" Ġ+ Ġdata Item . description Ġ+ Ġ"\ n " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprint String ĊĠĠĠ Ġ} Ċ } Ċ