/**************************************************************************** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 0 ĠY ev gen y ĠK ras ik ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġ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 . gitlab . y kr as ik . game dex . app . java fx . library Ċ Ċ import Ġcom . gitlab . y kr as ik . game dex . Library Ċ import Ġcom . gitlab . y kr as ik . game dex . Library Type Ċ import Ġcom . gitlab . y kr as ik . game dex . app . api . file . View Can Open File Ċ import Ġcom . gitlab . y kr as ik . game dex . app . api . library . View Can Add Or Edit Library Ċ import Ġcom . gitlab . y kr as ik . game dex . app . api . library . View Can Delete Library Ċ import Ġcom . gitlab . y kr as ik . game dex . app . api . library . View With Libraries Ċ import Ġcom . gitlab . y kr as ik . game dex . app . api . util . broadcast Flow Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . control . enable When Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . control . vertical Gap Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . mutable State Flow Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . perform Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . set table Sorted Filter edList Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . theme .* Ċ import Ġcom . gitlab . y kr as ik . game dex . java fx . view . Present ableView Ċ import Ġcom . gitlab . y kr as ik . game dex . util . IsValid Ċ import Ġcom . gitlab . y kr as ik . game dex . util . case Ins ensitive String Comparator Ċ import Ġjavafx . geometry . Pos Ċ import Ġt orn ad of x .* Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠUser : Ġy kr as ik Ċ Ġ* ĠDate : Ġ 1 2 / 0 1 / 2 0 1 9 Ċ Ġ* ĠTime : Ġ 2 1 : 3 4 Ċ Ġ*/ Ċ class ĠLibrary Menu Ġ: ĠPresent ableView (" Libraries ", ĠIcons . folders ), ĊĠĠĠ ĠView With Libraries , ĊĠĠĠ ĠView Can Add Or Edit Library , ĊĠĠĠ ĠView Can Delete Library , ĊĠĠĠ ĠView Can Open File Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġlibraries Ġ= Ġset table Sorted Filter edList ( comparator Ġ= Ġcase Ins ensitive String Comparator ( Library :: name )) ĊĊĠĠĠ Ġoverride Ġval Ġcan Add Or Edit Libraries Ġ= Ġmutable State Flow ( IsValid . valid , Ġdebug Name Ġ= Ġ" can Add Or Edit Libraries ") ĊĠĠĠ Ġoverride Ġval Ġadd Or Edit Library Actions Ġ= Ġbroadcast Flow < Library ?> () ĊĊĠĠĠ Ġoverride Ġval Ġcan Delete Libraries Ġ= Ġmutable State Flow ( IsValid . valid , Ġdebug Name Ġ= Ġ" can Delete Libraries ") ĊĠĠĠ Ġoverride Ġval Ġdelete Library Actions Ġ= Ġbroadcast Flow < Library >() ĊĊĠĠĠ Ġoverride Ġval Ġopen File Actions Ġ= Ġbroadcast Flow < File >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġv box ( spacing Ġ= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Button ( is Toolbar Button Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalignment Ġ= ĠPos . CENTER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Width Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip (" Add Ġa Ġnew Ġlibrary ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable When ( can Add Or Edit Libraries ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( add Or Edit Library Actions ) Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvertical Gap () ĊĠĠĠĠĠĠĠ Ġv box Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlibraries . perform Ġ{ Ġlibraries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Children Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrid pane Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh gap Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv gap Ġ= Ġ 3 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlibraries . forEach Ġ{ Ġlibrary Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Ġ+= Ġif Ġ( library . type Ġ== ĠLibrary Type . Excluded ) Ġlibrary . type . icon Ġelse Ġlibrary . platform . logo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ( library . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Button ( library . path . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Max Width Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( open File Actions ) Ġ{ Ġlibrary . path Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedit Button ( is Toolbar Button Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable When ( can Add Or Edit Libraries ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip (" Edit Ġlibrary Ġ'${ library . name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( add Or Edit Library Actions ) Ġ{ Ġlibrary Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Button ( is Toolbar Button Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable When ( can Delete Libraries ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip (" Delete Ġlibrary Ġ'${ library . name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( delete Library Actions ) Ġ{ Ġlibrary Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }