package Ġir . fe are full . knowledge extraction app . ui . relation Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . support . Has Support Fragment Injector Ċ import Ġir . fe are full . knowledge extraction app . BR Ċ import Ġir . fe are full . knowledge extraction app . R Ċ import Ġir . fe are full . knowledge extraction app . ViewModel Provider Factory Ċ import Ġir . fe are full . knowledge extraction app . databinding . Activity Relation Binding Ċ import Ġir . fe are full . knowledge extraction app . ui . about . About Fragment Ċ import Ġir . fe are full . knowledge extraction app . ui . base . Base Activity Ċ import Ġir . fe are full . knowledge extraction app . ui . base . Base ViewModel Ċ import Ġir . fe are full . knowledge extraction app . ui . custom . Graph Surface View Ċ import Ġkotlinx . android . synt hetic . main . activity _ relation .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRelation Activity : ĠBase Activity < ViewData Binding , ĠBase ViewModel <* >> (), ĠRelation Navigator , ĊĠĠĠ ĠHas Support Fragment Injector Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfragment Dispatch ing Android Injector : ĠDispatch ing Android Injector < Fragment > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠViewModel Provider Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrelation ViewModel : ĠRelation ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrelation Activity Binding : ĠActivity Relation Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġanimation : ĠAnimation ĊĠĠĠ Ġprivate Ġvar Ġerror Snackbar : ĠSn ackbar ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Intent ( context : ĠContext ) Ġ= ĠIntent ( context , ĠRelation Activity :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Binding Variable (): ĠInt Ġ= ĠBR . viewModel ĊĊĠĠĠ Ġoverride Ġfun Ġget Layout Id (): ĠInt Ġ= ĠR . layout . activity _ relation ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel (): ĠBase ViewModel < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġrelation ViewModel Ġ= ĠViewModel Providers . of ( this , Ġfactory ). get ( Relation ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrelation ViewModel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Error ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . e ( throwable . localized Message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfragment Manager . find Fragment By Tag ( About Fragment . TAG ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Fragment Detached ( About Fragment . TAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Fragment Detached ( tag : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfragment Manager . find Fragment By Tag ( tag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dis allow AddTo Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( R . anim . slide _ left , ĠR . anim . slide _ right ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Now () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( graph Layout . child Count Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Activity Binding . graph Layout . findViewById < Graph Surface View >( R . id . graph Surface ). visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsupport Fragment Injector (): ĠDispatch ing Android Injector < Fragment >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Dispatch ing Android Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrelation Activity Binding Ġ= Ġget ViewData Binding () Ġas ĠActivity Relation Binding ĊĠĠĠĠĠĠĠ Ġrelation ViewModel . set Navigator ( this ) ĊĠĠĠĠĠĠĠ Ġrelation ViewModel . errorMessage . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ-> Ġif ( errorMessage Ġ!= Ġnull ) Ġshow Error ( errorMessage ) Ġelse Ġhide Error () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġanimation Ġ= ĠAnimation Utils . load Animation ( this , ĠR . anim . slide _ right ) ĊĠĠĠĠĠĠĠ Ġanimation . set Animation Listener ( object Ġ: ĠAnimation . Animation Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠsetUp () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelation Activity Binding . toolbar ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( relation Activity Binding . toolbar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow About Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġif Ġ( graph Layout . child Count Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Activity Binding . graph Layout . findViewById < Graph Surface View >( R . id . graph Surface ). visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dis allow AddTo Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Custom Animations ( R . anim . slide _ left , ĠR . anim . slide _ right ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . root View , ĠAbout Fragment . newInstance (), ĠAbout Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġshow Error (@ String Res ĠerrorMessage : Int ){ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġerror Snackbar Ġ= ĠSn ackbar . make ( relation Activity Binding . root View , ĠerrorMessage , ĠSn ackbar . LENGTH _ IN DEFIN ITE ) ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. setAction ( R . string . retry , Ġrelation ViewModel . error ClickListener ) ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. setAction TextColor ( Context Compat . getColor ( base Context , ĠR . color . secondary TextColor Light Theme )) ĊĠĠĠĠĠĠĠ ĠView Compat . setLayout Direction ( error Snackbar !!. view , ĠView Compat . LAYOUT _ DIRECTION _ RTL ) ĊĠĠĠĠĠĠĠ Ġerror Snackbar !!. view . set BackgroundColor ( Context Compat . getColor ( base Context , ĠR . color . secondary Color Light Theme )) ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Error (){ ĊĠĠĠĠĠĠĠ Ġerror Snackbar ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Keyboard () ĊĠĠĠĠĠĠĠ Ġval Ġgraph Surface Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( application Context ). inflate ( R . layout . item _ graph _ surface _ view , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelation Activity Binding . graph Layout , Ġfalse ) Ġas ĠGraph Surface View ĊĠĠĠĠĠĠĠ Ġrelation Activity Binding . graph Layout . addView ( graph Surface ) ĊĊĠĠĠĠĠĠĠ Ġgraph Surface . init ( relation ViewModel . get Graph ()) ĊĠĠĠĠĠĠĠ Ġ// graph Surface . create Graph () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Graph () Ġ{ ĊĠĠĠĠĠĠĠ Ġrelation Activity Binding . graph Layout . removeAll Views () ĊĠĠĠ Ġ} Ċ }