package Ġcom . gitlab . la e . intellij . actions . tree . ui Ċ Ċ import Ġcom . intellij . ui . Separator With Text Ċ import Ġcom . intellij . util . ui . Empty Icon Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Component Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . border . Empty Border Ċ Ċ class ĠAction Presentation Renderer Ġ: ĠList Cell Renderer < Action Presentation > Ġ{ ĊĊĠ Ġprivate Ġval Ġseparator Ġ= ĠSe parator With Text () ĊĠ Ġprivate Ġval Ġroot Ġ= ĠJPanel ( Border Layout ()) ĊĠ Ġprivate Ġval Ġcontent Ġ= ĠJPanel ( Border Layout ( 3 0 , Ġ 0 )) ĊĠ Ġprivate Ġval Ġname Label Ġ= ĠJLabel () ĊĠ Ġprivate Ġval Ġkey Label Ġ= ĠJLabel () ĊĠ Ġprivate Ġvar Ġempty Icon Init Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġempty Icon : ĠEmpty Icon ? Ġ= Ġnull ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġname Label . background Ġ= Ġnull ĊĠĠĠ Ġcontent . add ( name Label , ĠBorderLayout . CENTER ) ĊĠĠĠ Ġcontent . add ( key Label , ĠBorderLayout . LINE _ END ) ĊĠĠĠ Ġcontent . border Ġ= ĠEmpty Border ( UI Util . getList Cell Padding ()) ĊĠĠĠ Ġroot . background Ġ= Ġnull ĊĠĠĠ Ġroot . add ( separator , ĠBorderLayout . PAGE _ START ) ĊĠĠĠ Ġroot . add ( content , ĠBorderLayout . CENTER ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetList Cell Renderer Component ( ĊĠĠĠ Ġlist : ĠJ List < out ĠAction Presentation >, ĊĠĠĠ Ġvalue : ĠAction Presentation , ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġis Selected : ĠBoolean , ĊĠĠĠ Ġcell Has Focus : ĠBoolean , ĊĠ Ġ): ĠComponent Ġ{ ĊĊĠĠĠ Ġinit Empty Icon ( list ) ĊĠĠĠ Ġseparator . caption Ġ= Ġvalue . separator Above ĊĠĠĠ Ġseparator . isVisible Ġ= Ġvalue . separator Above Ġ!= Ġnull ĊĊĠĠĠ Ġset Colors ( list , Ġis Selected ) ĊĊĠĠĠ Ġval Ġpresentation Ġ= Ġvalue . presentation ĊĠĠĠ Ġname Label . isEnabled Ġ= Ġpresentation . isEnabled ĊĠĠĠ Ġname Label . text Ġ= Ġpresentation . text ĊĠĠĠ Ġname Label . disabled Icon Ġ= ĊĠĠĠĠĠ Ġif Ġ( presentation . disabled Icon Ġ!= Ġnull ) Ġpresentation . disabled Icon ĊĠĠĠĠĠ Ġelse Ġempty Icon ĊĊĠĠĠ Ġval Ġicon Ġ= ĊĠĠĠĠĠ Ġ( if Ġ( isSelected ) Ġpresentation . selected Icon Ġelse Ġpresentation . icon ) ĊĠĠĠĠĠĠĠ Ġ?: Ġpresentation . icon ĊĠĠĠĠĠĠĠ Ġ?: Ġempty Icon ĊĊĠĠĠ Ġname Label . icon Ġ= Ġicon ĊĠĠĠ Ġkey Label . isEnabled Ġ= Ġpresentation . isEnabled ĊĠĠĠ Ġkey Label . text Ġ= Ġvalue . keys . join ToString (", Ġ") Ġ{ ĠgetKey Text ( it ) Ġ} ĊĠĠĠ Ġreturn Ġroot ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġinit Empty Icon ( list : ĠJ List < out ĠAction Presentation >) Ġ{ ĊĠĠĠ Ġif Ġ( empty Icon Init ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġempty Icon Init Ġ= Ġtrue ĊĊĠĠĠ Ġempty Icon Ġ= Ġgenerate Sequence ( 0 , ĠInt :: inc ) ĊĠĠĠĠĠ Ġ. take ( list . model . size ) ĊĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġlist . model . getElement At ( it ). presentation ĊĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġp . icon Ġ?: Ġp . disabled Icon Ġ?: Ġp . selected Icon Ġ?: Ġreturn @ map Ġnull ĊĠĠĠĠĠĠĠ ĠEmpty Icon . create ( ĊĠĠĠĠĠĠĠĠĠ Ġicon . icon Width , ĊĠĠĠĠĠĠĠĠĠ Ġicon . icon Height , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. filter NotNull () ĊĠĠĠĠĠ Ġ. first OrNull () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Colors ( ĊĠĠĠ Ġlist : ĠJ List < out ĠAction Presentation >, ĊĠĠĠ Ġis Selected : ĠBoolean , ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġif Ġ( isSelected ) Ġ{ ĊĠĠĠĠĠ Ġcontent . background Ġ= Ġlist . selection Background ĊĠĠĠĠĠ Ġname Label . foreground Ġ= Ġlist . selection Foreground ĊĠĠĠĠĠ Ġkey Label . foreground Ġ= ĠUI Manager . getColor ( ĊĠĠĠĠĠĠĠ Ġ" MenuItem . accel erator Selection Foreground ", ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġcontent . background Ġ= Ġlist . background ĊĠĠĠĠĠ Ġname Label . foreground Ġ= Ġlist . foreground ĊĠĠĠĠĠ Ġkey Label . foreground Ġ= ĠUI Manager . getColor ( ĊĠĠĠĠĠĠĠ Ġ" MenuItem . accel erator Foreground ", ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ