package Ġnet . d ank ito . documents . search . ui . windows . main window . controls Ċ Ċ import Ġjavafx . beans . property . Simple Boolean Property Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . collections . FX Collections Ċ import Ġjavafx . geometry . Pos Ċ import Ġjavafx . scene . layout . Priority Ċ import Ġnet . d ank ito . documents . search . model . Index Config Ċ import Ġnet . d ank ito . documents . search . ui . presenter . Documents Search Presenter Ċ import Ġnet . d ank ito . documents . search . ui . windows . configure index . Configure Index Window Ċ import Ġnet . d ank ito . utils . java fx . ui . controls . Edit Entity Button Ċ import Ġnet . d ank ito . utils . java fx . ui . controls . edit Entity Button Ċ import Ġnet . d ank ito . utils . java fx . ui . dialogs . Java FX Dialog Service Ċ import Ġnet . d ank ito . utils . java fx . ui . extensions . fixed Height Ċ import Ġnet . d ank ito . utils . localization . Localization Ċ import Ġnet . d ank ito . utils . ui . dialogs . Confirmation Dialog Button Ċ import Ġt orn ad of x .* ĊĊ Ċ class ĠSelect Index View ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpresenter : ĠDocuments Search Presenter , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġselected Index Changed : Ġ(( Index Config ?) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠView () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġavailable Indices Ġ= ĠFX Collections . observable ArrayList ( presenter . indices ) ĊĊĠĠĠ Ġprivate Ġval Ġselected Index Ġ= ĠSimple ObjectProperty < Index Config >() ĊĊĠĠĠ Ġprivate Ġval Ġcan Update SelectedIndex Ġ= ĠSimple Boolean Property ( false ) ĊĊĊĠĠĠ Ġprivate Ġvar Ġedit Index Button : ĠEdit Entity Button Ġby Ġsingle Assign () ĊĊĊĠĠĠ Ġprivate Ġval Ġdialog Service Ġ= ĠJava FX Dialog Service ( Localization (" Messages ")) Ġ// ĠTODO : Ġreplace Ġwith Ġbetter Ġimplementation ĊĊĊĠĠĠ Ġval Ġcurrent SelectedIndex : ĠIndex Config ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġselected Index . value ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter . indices . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Index . value Ġ= Ġpresenter . selectedIndex ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselected Index . addListener Ġ{ Ġ_, Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Can Update SelectedIndex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Index Changed ?. invoke ( newValue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Can Update SelectedIndex () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġh box Ġ{ ĊĠĠĠĠĠĠĠ Ġfixed Height Ġ= Ġ 4 0 . 0 ĊĠĠĠĠĠĠĠ Ġuse Max Width Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġalignment Ġ= ĠPos . CENTER _ LEFT ĊĊĠĠĠĠĠĠĠ Ġpadding Top Ġ= Ġ 4 . 0 ĊĠĠĠĠĠĠĠ Ġpadding Bottom Ġ= Ġ 4 . 0 ĊĊĠĠĠĠĠĠĠ Ġlabel ( messages [" index "]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Height Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Width Ġ= ĠSearch Documents View . Labels Width ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcombo box ( selectedIndex , Ġavailable Indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Height Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Width Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Format Ġ{ Ġtext Ġ= Ġit . name Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh box Constraints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh Grow Ġ= ĠPriority . ALWAYS ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginLeft Ġ= Ġ 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginRight Ġ= Ġ 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġedit Index Button Ġ= Ġedit Entity Button ( Ġ{ Ġconfigure Index ( selectedIndex . value ) Ġ}, Ġ{ Ġconfigure Index ( null ) Ġ}, Ġ{ Ġask User ToDelete Index ( selectedIndex . value ) Ġ} Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Height Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Width Ġ= Ġ 1 5 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . show Only Create Operation Ġ= Ġavailable Indices . isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbutton ( messages [" main . window . update . index "]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Height Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Width Ġ= Ġ 1 5 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable When ( can Update SelectedIndex ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ Ġupdate SelectedIndex () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh box Constraints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmarginLeft Ġ= Ġ 6 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupdate SelectedIndex () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent SelectedIndex ?. let Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . does Index Currently Get Updated ( index ) Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . update Index Documents ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Can Update SelectedIndex () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Can Update SelectedIndex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Can Update SelectedIndex () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Index Ġ= Ġcurrent SelectedIndex ĊĊĠĠĠĠĠĠĠ Ġcan Update SelectedIndex . value Ġ= Ġselected Index Ġ!= Ġnull Ġ&& Ġpresenter . does Index Currently Get Updated ( selectedIndex )== Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġask User ToDelete Index ( index ToDelete : ĠIndex Config ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġindex ToDelete ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Service . show Confirmation Dialog ( String . format ( messages [" configure . index . window . ask . user . delete . index "], Ġindex ToDelete . name )) Ġ{ Ġselected Option Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Option Ġ== ĠConfirm ation Dialog Button . Confirm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Index ( index ToDelete ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Index ( index ToDelete : ĠIndex Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis SelectedIndex Deleted Ġ= Ġselected Index . value Ġ== Ġindex ToDelete ĊĠĠĠĠĠĠĠ Ġval Ġdeleted Index List Index Ġ= Ġavailable Indices . indexOf ( index ToDelete ) ĊĊĠĠĠĠĠĠĠ Ġpresenter . remove Index ( index ToDelete ) ĊĊĠĠĠĠĠĠĠ Ġupdate Available Indices And Edit Index Button Items () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is SelectedIndex Deleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Index In List Ġ= Ġdeleted Index List Index Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Index . value Ġ= Ġif Ġ( next Index In List Ġ< Ġavailable Indices . size Ġ&& Ġnext Index In List Ġ>= Ġ 0 ) Ġavailable Indices [ next Index In List ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġavailable Indices . first OrNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Index ( index : ĠIndex Config ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex To Configure Ġ= Ġindex Ġ?: ĠIndex Config ("", ĠlistOf ()) ĊĊĠĠĠĠĠĠĠ ĠConfigure Index Window ( index To Configure ) Ġ{ Ġconfigured Index Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex HasBeen Configured ( configured Index ) ĊĠĠĠĠĠĠĠ Ġ}. show ( messages [" configure . index . window . title "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġindex HasBeen Configured ( configured Index : ĠIndex Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . save OrUpdate Index ( configured Index ) ĊĊĠĠĠĠĠĠĠ Ġselected Index . value Ġ= Ġconfigured Index ĊĊĠĠĠĠĠĠĠ Ġupdate Available Indices And Edit Index Button Items () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Available Indices And Edit Index Button Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġavailable Indices . set All ( presenter . indices ) ĊĊĠĠĠĠĠĠĠ Ġedit Index Button . show Only Create Operation Ġ= Ġavailable Indices . isEmpty () ĊĠĠĠ Ġ} Ċ Ċ }