/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 2 1 ĠE li or Ġ" M allow igi " ĠB ou kh ob za Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . m allow igi . icons . associ ations Ċ Ċ import Ġcom . google . common . collect . Immutable Set Ċ import Ġcom . intellij . ide . plugins . PluginManager Core Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . extensions . Plugin Id Ċ import Ġcom . m allow igi . config . Atom Settings Bundle . message Ċ import Ġcom . m allow igi . models . FileInfo Ċ import Ġorg . jetbrains . annotations . Non N ls Ċ import Ġjava . io . Serializable Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġserialized Ġcollection Ġof Ġ[ Associations ][ Association ] Ċ Ġ* Ċ Ġ* Ġ@ constructor ĠCreate Ġempty ĠAssoci ations Ċ Ġ*/ Ċ abstract Ġclass ĠAssoci ations Ġ: ĠSerializable Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġthe Ġ[ Association ] Ġwhich Ġmatches Ġthe Ġfile Ġinfo ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġfile Info Ġthe Ġfile Ġinformation ĊĠĠ Ġ* Ġ@ return Ġthe Ġ[ Association ] Ġif Ġfound ĊĠĠ Ġ*/ ĊĠ Ġfun Ġfind Association ( fileInfo : ĠFileInfo ): ĠAssociation ? Ġ{ ĊĠĠĠ Ġ// ĠFirst Ġcheck Ġin Ġcustom Ġass ocs ĊĠĠĠ Ġval Ġmatching : ĠAssociation ? Ġ= Ġfind Matching Association ( fileInfo ) ĊĠĠĠ Ġ// ĠSpecific Ġplugin Ġhandling ĊĠĠĠ Ġif Ġ( matching Ġ!= Ġnull Ġ&& ĠIMAGE _ TYPES . contains ( matching . name )) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthose Ġplugins Ġare Ġinstalled , Ġlet Ġthem Ġhandle Ġthe Ġicon ĊĠĠĠĠĠĠĠ Ġval Ġimage Icon Viewer ID Ġ= Ġmessage (" plugins . image Icon Viewer ") ĊĠĠĠĠĠĠĠ Ġval Ġplugin Ġ= ĠPlugin Manager Core . get Plugin ( Plugin Id . getId ( image Icon Viewer ID )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( plugin Ġ!= Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . error ( e ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// ĠPHP ĠPlugin ĊĠĠĠ Ġ} Ġelse Ġif Ġ( matching Ġ!= Ġnull Ġ&& ĠIG NO RED . contains ( matching . name )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġmatching ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠLook Ġfor Ġa Ġmatching Ġ[ Association ] ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġfile Ġfile Ġinformation ĊĠĠ Ġ* Ġ@ return Ġ[ Association ] Ġif Ġfound ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġfind Matching Association ( file : ĠFileInfo ): ĠAssociation ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe Ġparsed Ġ[ associ ations ][ Association ] ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġlist Ġof Ġ[ associ ations ][ Association ] ĊĠĠ Ġ*/ ĊĠ Ġabstract Ġfun Ġget The Associations (): ĠList < Association > ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠserialVersionUID : ĠLong Ġ= Ġ- 1 L ĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getInstance ( Associations :: class . java ) ĊĊĠĠĠ Ġ@ Non N ls ĊĠĠĠ Ġprivate Ġval ĠIMAGE _ TYPES : ĠSet < String > Ġ= ĠImmutable Set . of (" Images ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SVG ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Images Ġ( PNG )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Images Ġ( JPG )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Images Ġ( B MP )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Images Ġ( G IF )", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Icons ") ĊĊĠĠĠ Ġprivate Ġval ĠIG NO RED : ĠSet < String > Ġ= ĠImmutable Set . of (" PHP ") ĊĠ Ġ} Ċ Ċ } Ċ