package Ġde . tr bnb . mv v mb ase . commands Ċ Ċ import Ġde . tr bnb . mv v mb ase . observable . Observable Container Ċ Ċ /** Ċ Ġ* ĠThe Ġbasic Ġcontract Ġfor Ġcommand Ġimplementations . Ċ Ġ* Ċ Ġ* Ġ@ param ĠP ĠThe Ġparameter Ġtype Ġfor Ġinvocation . ĠAn Ġinstance Ġof Ġthis Ġhas Ġto Ġbe Ġused Ġto Ġcall Ġ[ invoke ]. Ġ[ Unit ] Ġmay Ġbe Ġused Ġif Ġno Ġparameter Ġis Ġnec cessary . Ċ Ġ* Ġ@ param ĠR ĠThe Ġreturn Ġtype Ġfor Ġinvocation . ĠAn Ġinstance Ġof Ġthis Ġhas Ġto Ġbe Ġreturned Ġfrom Ġ[ invoke ]. Ċ Ġ*/ Ċ interface ĠCommand < in ĠP , Ġout ĠR > Ġ: ĠObservable Container Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermines Ġwhether Ġthis ĠCommand Ġis Ġenabled Ġor Ġnot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠReturns Ġ` true ` Ġif Ġthis ĠCommand Ġis Ġenabled , Ġotherwise Ġ` false `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Enabled : ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInv okes Ġthe ĠCommand . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ throws Ġde . tr bnb . mv v mb ase . commands . Disabled Command Invocation Exception ĠIf Ġ[ isEnabled ] Ġreturns Ġ` false `. ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreturn Ġtype Ġinstance . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( param : ĠP ): ĠR ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInv okes Ġthe ĠCommand Ġonly Ġif Ġ[ isEnabled ] Ġequals Ġ` true `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġreturn Ġtype Ġinstance Ġif Ġ[ isEnabled ] Ġequals Ġ` true ` Ġbefore Ġinvocation , Ġotherwise Ġ` null `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinvoke S af ely ( param : ĠP ): ĠR ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( isEnabled ) Ġinvoke ( param ) Ġelse Ġnull ĊĠĠĠ Ġ} Ċ } Ċ