/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . android . tools . idea . editor s . notifications Ċ Ċ import Ġcom . intellij . openapi . extensions . Extension Point Name Ċ import Ġcom . intellij . openapi . file Editor . File Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . ui . Editor Notification Panel Ċ import Ġcom . intellij . ui . Editor Notifications Ċ import Ġjava . awt . Border Layout Ċ import Ġjavax . swing . Box Ċ import Ġjavax . swing . JPanel Ċ import Ġkotlin . streams . as Sequence Ċ Ċ /** Ċ Ġ* ĠA Ġpanel Ġthat Ġdisplays Ġnotifications Ġor Ġhide s Ġitself Ġif Ġthere Ġare Ġnone . ĠIt Ġis Ġintended Ġto Ġbe Ġused Ġtogether Ġwith Ġa Ġ[ File Editor ] Ġand Ċ Ġ* Ġutil izes Ġthe Ġmechanism Ġof Ġ[ Editor Notifications . Provider ] s Ġextending Ġ[ ep Name ] Ġextension Ġpoint Ġto Ġget Ġ[ Editor Notification Panel ] s Ġto Ċ Ġ* Ġdisplay . Ċ Ġ*/ Ċ class ĠNotification Panel ( ĊĠ Ġprivate Ġval ĠNOT IFICATION S _ EP _ NAME : ĠExtension Point Name < Editor Notifications . Provider < Editor Notification Panel >> Ċ ) Ġ: ĠJPanel ( Border Layout ()) Ġ{ ĊĊĠ Ġprivate Ġval Ġnotifications Panel : ĠBox Ġ= ĠBox . create Vertical Box (). apply Ġ{ ĊĠĠĠ Ġname Ġ= Ġ" Notifications Panel " ĊĠ Ġ} ĊĊĠ Ġ// ĠThe Ġnotifications Wrapper Ġhelps Ġpushing Ġthe Ġnotifications Ġto Ġthe Ġtop Ġof Ġthe Ġlayout . ĠThis Ġwhole Ġpanel Ġwill Ġbe Ġhidden Ġif Ġno Ġnotifications ĊĠ Ġ// Ġare Ġavailable . ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠ Ġis Double Buffered Ġ= Ġfalse ĊĠĠĠ Ġadd ( notifications Panel , ĠBorderLayout . NORTH ) ĊĠ Ġ} ĊĊĠ Ġfun Ġupdate Notifications ( virtual File : ĠVirtual File , Ġparent Editor : ĠFile Editor , Ġproject : ĠProject ) Ġ{ ĊĠĠĠ Ġnotifications Panel . removeAll () ĊĠĠĠ ĠNOT IFICATION S _ EP _ NAME . extensions () ĊĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . create Notification Panel ( virtual File , Ġparent Editor , Ġproject ) Ġ} ĊĠĠĠĠĠ Ġ. forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġnotifications Panel . add ( it ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIf Ġno Ġnotification Ġpanels Ġwere Ġadded , Ġwe Ġwill Ġhide Ġthe Ġnotifications Ġpanel ĊĠĠĠ Ġif Ġ( notifications Panel . component Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠĠĠ Ġnotifications Panel . re validate () ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }