/* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠDe fl ated Pick le Ġunder Ġthe ĠMIT Ġlicense Ġ*/ Ċ Ċ package Ġcom . def lated pickle . quiv er . file panel . widget Ċ Ċ import Ġcom . alex and rias o ftware . swing . JS plit Button Ċ import Ġcom . def lated pickle . har u hi . util . Config Util Ċ import Ġcom . def lated pickle . har u hi . util . Plugin Util Ċ import Ġcom . def lated pickle . mono cons . Mono Icon Ċ import Ġcom . def lated pickle . quiv er . Qu iver Ċ import Ġcom . def lated pickle . quiv er . file panel . File Panel Plugin Ċ import Ġcom . def lated pickle . quiv er . file panel . api . Program Ċ import Ġcom . def lated pickle . quiv er . file panel . config . File Panel Settings Ċ import Ġcom . def lated pickle . quiv er . file panel . dialog . Assign Program Dialog Ċ import Ġcom . def lated pickle . und ulation . extensions . add Ċ import Ġkotlinx . serialization . Internal Serialization Api Ċ import Ġjava . io . File Ċ import Ġjavax . swing . J Menu Ċ import Ġjavax . swing . J PopupMenu Ċ Ċ @ Opt In ( Internal Serialization Api :: class ) Ċ class ĠOpen Button ( ĊĠĠĠ Ġenabled : ĠBoolean , ĊĠĠĠ Ġval Ġopen : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġval Ġopen Folder : Ġ() Ġ-> ĠUnit , Ċ ) Ġ: ĠJ Split Button (" Ġ Ġ", ĠMono Icon . FOLDER _ OPEN _ FILE ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtool Tip Text Ġ= Ġ" Open ĠFile " ĊĠĠĠĠĠĠĠ Ġis Enabled Ġ= Ġenabled ĊĊĠĠĠĠĠĠĠ Ġadd Button Clicked ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġre gen Menu () Ġ{ ĊĠĠĠĠĠĠĠ Ġpopup Menu Ġ= ĠJ PopupMenu (" Open ĠAltern atives "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Menu (" Open ĠIn "). also Ġ{ Ġmenu Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( File Panel Plugin . program Registry ). get ( Qu iver . selected File !!. extension )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( program Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Program Executor ( program , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add Separator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add (" Add ĠApplication ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssign Program Dialog . open ( Plugin Util . window )?. let Ġ{ Ġprogram Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Util . get Settings < File Panel Settings >(" def lated pickle @ file _ panel # >= 1 . 0 . 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġsettings Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . linked Programs . add ( program ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Panel Plugin . put Program To Registry ( program ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠPlugin Util . plugin To Slug ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlugin Util . slug To Plugin (" def lated pickle @ file _ panel # ") !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Util . serialize Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĠFile (" config /$ id . json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Qu iver . selected File !!. extension Ġin Ġprogram . extensions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Program Executor ( program , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Separator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd (" Open ĠFolder ", ĠMono Icon . FOLDER _ OPEN ) Ġ{ Ġopen Folder () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Program Executor ( program : ĠProgram , Ġmenu : ĠJ Menu ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( program . name , Ġindex Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . command , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram . args ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("{ file }", ĠQu iver . selected File !!. absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("{ dir }", ĠQu iver . selected Dir !!. absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( File ( program . location ). absolute File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inherit IO () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ