/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 , ĠJ iang uo ĠYang . Ċ Ġ* Ċ Ġ* Ġ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 . ok ay camera . ok camera . core . command Ċ Ċ class ĠReply Command < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġexecute 0 : ĠAction 0 ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġexecute 1 : ĠAction 1 < T >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcan Execute 0 : ĠFunc 0 < Boolean >? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġconstructor Ġmethod Ġwith Ġone ĠAction Ġno Ġparameter Ġto Ġcall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( execute : ĠAction 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . execute 0 Ġ= Ġexecute ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġconstructor Ġmethod Ġwith Ġone ĠAction Ġone Ġparameter < ĠT Ġ> Ġto Ġcall ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( execute : ĠAction 1 < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . execute 1 Ġ= Ġexecute ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġexecute Ġcallback Ġfor Ġevent ĊĠĠĠĠ Ġ* Ġ@ param Ġcan Execute 0 Ġif Ġthis Ġfunction Ġreturn Ġtrue Ġthe Ġaction Ġexecute Ġwould Ġbe Ġinvoked ! ĊĠĠĠĠ Ġ* Ġotherwise Ġwould 't Ġinvoked ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( execute : ĠAction 0 , Ġcan Execute 0 : ĠFunc 0 < Boolean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . execute 0 Ġ= Ġexecute ĊĠĠĠĠĠĠĠ Ġthis . can Execute 0 Ġ= Ġcan Execute 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġexecute Ġcallback Ġfor Ġevent , this Ġcallback Ġneed Ġa Ġparams ĊĠĠĠĠ Ġ* Ġ@ param Ġcan Execute 0 Ġif Ġthis Ġfunction Ġreturn Ġtrue Ġthe Ġaction Ġexecute Ġwould Ġbe Ġinvoked ! ĊĠĠĠĠ Ġ* Ġotherwise Ġwould 't Ġinvoked ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( execute : ĠAction 1 < T >, Ġcan Execute 0 : ĠFunc 0 < Boolean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . execute 1 Ġ= Ġexecute ĊĠĠĠĠĠĠĠ Ġthis . can Execute 0 Ġ= Ġcan Execute 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġrun Ġaction Ġwithout Ġparameter Ġif Ġcam Ġexecute ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( execute 0 Ġ!= Ġnull Ġ&& Ġcan Execute 0 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute 0 !!. call () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġrun Ġaction Ġwith Ġparameter Ġif Ġcam Ġexecute ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute ( parameter : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( execute 1 Ġ!= Ġnull Ġ&& Ġcan Execute 0 ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute 1 !!. call ( parameter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcan Execute 0 (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( can Execute 0 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcan Execute 0 !!. call () ĊĠĠĠ Ġ} Ċ }