package Ġcom . dp . advanced gun n ery control . gui ĊĊ Ċ import Ġcom . dp . advanced gun n ery control . types and values .* Ċ import Ġcom . dp . advanced gun n ery control . utils . Ship Mode Storage Ċ import Ġcom . fs . star f arer . api . fleet . F leet Member API Ċ import Ġcom . fs . star f arer . api . ui . Button API Ċ import Ġcom . fs . star f arer . api . ui . Custom Panel API Ċ import Ġcom . fs . star f arer . api . ui . Tooltip Maker API Ċ import Ġjava . awt . Color Ċ import Ġjava . util . function . Consumer Ċ Ċ class ĠShip Mode Button ( ship : ĠF leet Member API , Ġassociated Index Ġ: ĠInt , Ġmode Ġ: ĠShip Modes , Ġbutton : ĠButton API ) Ġ: ĠButton Base < Ship Modes >( ship , Ġassociated Index , Ġmode , Ġbutton ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġstorage Ġ= ĠShip Mode Storage [ AG CG UI . storage Index ] ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate Mode Button Group ( ship : ĠF leet Member API , Ġpanel : ĠCustom Panel API ) Ġ: ĠList < Ship Mode Button >{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage Ġ= ĠShip Mode Storage [ AG CG UI . storage Index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Return Ġ= Ġmutable ListOf < Ship Mode Button >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Something Checked Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement List Ġ= Ġmutable ListOf < Tooltip Maker API >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShip Modes . values (). forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtooltip Ġ= Ġpanel . create UIElement ( 1 6 0 f , Ġ 3 0 f , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Return . add ( Ship Mode Button ( ship , Ġindex , Ġit , Ġtooltip . add Area Checkbox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġship Mode ToString [ it ], Ġit , ĠColor . BLUE , ĠColor . BLUE , ĠColor . WHITE , Ġ 1 6 0 f , Ġ 1 8 f , Ġ 3 f ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip . add Tooltip To Previous ( AG CG UI . make Tooltip ( detailed Ship Mode Descriptions [ it ] Ġ?: Ġ""), ĠTooltip Maker API . Tooltip Location . BE LOW ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Ship Modes . HELP Ġ== Ġit ) Ġto Return . last OrNull ()?. disable () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( storage . mode sBy Ship [ ship . id ]?. values ?. contains ( ship Mode ToString [ it ]) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Return . last (). check () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Something Checked Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( element List . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . add UIElement ( tooltip ). in TL ( 5 f , Ġ 2 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . add UIElement ( tooltip ). right Of Top ( element List . last (), Ġ 1 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement List . add ( tooltip ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! is Something Checked ) Ġto Return . first OrNull ()?. check () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġiter Ġ= Ġto Return . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiter . next (). same Group Buttons Ġ= Ġto Return ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnote : ĠforEach Remaining Ġrequires Ġjava Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( iter . hasNext ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiter . next (). same Group Buttons Ġ= ĠlistOf ( to Return . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġto Return ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexecute Callback If Checked () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! active Ġ&& Ġbutton . isChecked ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( active Ġ&& Ġ! button . isChecked ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . mode sBy Ship [ ship . id ]?. remove ( group ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun check () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbutton . isChecked Ġ= Ġactive ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activate () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( storage . mode sBy Ship [ ship . id ] Ġ== Ġnull Ġ|| Ġassociated Value Ġ== ĠShip Modes . DEFAULT ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . mode sBy Ship [ ship . id ] Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( associated Value Ġ!= ĠShip Modes . DEFAULT ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstorage . mode sBy Ship [ ship . id ]?. remove ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstorage . mode sBy Ship [ ship . id ]?. let Ġ{ Ġit [ group ] Ġ= Ġship Mode ToString [ associated Value ] Ġ?: Ġdefault Ship Mode Ġ} ĊĠĠĠ Ġ} Ċ }