// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . ui . popup Ċ Ċ import Ġcom . intellij . openapi . action System . Action Group Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . DataContext Ċ import Ġcom . intellij . openapi . action System . impl . segment ed ActionBar . P ill Border Ċ import Ġcom . intellij . openapi . keymap . Key map Util Ċ import Ġcom . intellij . openapi . ui . popup . List Popup Step Ċ import Ġcom . intellij . openapi . ui . popup . Popup Step Ċ import Ġcom . intellij . openapi . util . Condition Ċ import Ġcom . intellij . openapi . util . N ls Contexts Ċ import Ġcom . intellij . ui . popup . list . List Popup Impl Ċ import Ġcom . intellij . ui . popup . list . Popup List Element Renderer Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Font Ċ import Ġjavax . swing .* Ċ Ċ open Ġclass ĠState Action Group Popup (@ N ls Contexts . Popup Title Ġtitle : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Group : ĠAction Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Context : ĠData Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Numbers : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Alpha As Numbers : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Disabled Actions : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhon or Action Mn emon ics : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispose Callback : ĠRunnable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax RowCount : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre select Action Condition : ĠCondition < An Action > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Place : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠgetState : Ġ( An Action ) Ġ-> ĠString ?) Ġ: ĊĠ ĠPopup Factory Impl . Action Group Popup ( title , Ġaction Group , Ġdata Context , Ġshow Numbers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Alpha As Numbers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Disabled Actions , Ġhon or Action Mn emon ics , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispose Callback , Ġmax RowCount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre select Action Condition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Place ) Ġ{ ĊĊĠ Ġoverride Ġfun Ġcreate Popup ( parent : ĠWizard Popup ?, Ġstep : ĠPopup Step < *> ?, Ġparent Value : ĠAny ?): ĠWizard Popup Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( step Ġis ĠList Popup Step <* >) Ġ{ ĊĠĠĠĠĠ Ġobject Ġ: ĠList Popup Impl ( project , Ġparent , Ġstep , Ġparent Value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetList Element Renderer (): ĠList Cell Renderer < *> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Renderer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġsuper . create Popup ( parent , Ġstep , Ġparent Value ) ĊĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Renderer ( popup : ĠList Popup Impl ): ĠPopup List Element Renderer < Any ?> Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠPopup List Element Renderer < Any ? >( popup ) Ġ{ ĊĠĠĠĠĠ Ġprivate Ġvar Ġstate Label : ĠJLabel ? Ġ= Ġnull ĊĠĠĠĠĠ Ġprivate Ġvar Ġstate Button : ĠJ Component ? Ġ= Ġnull ĊĠĠĠĠĠ Ġprivate Ġvar Ġshortcut Label : ĠJLabel ? Ġ= Ġnull ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġcreate Item Component (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġval Ġright Pane Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġcreate Label () ĊĠĠĠĠĠĠĠ Ġpanel . add ( my Text Label , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġmy Text Label . border Ġ= ĠJ BU I . B orders . empty Top ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbt Ġ= Ġcreate Button () ĊĠĠĠĠĠĠĠ Ġright Pane . add ( bt , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġstate Button Ġ= Ġbt ĊĊĠĠĠĠĠĠĠ Ġval Ġsh Label Ġ= ĠJLabel () ĊĠĠĠĠĠĠĠ Ġshortcut Label Ġ= Ġsh Label ĊĠĠĠĠĠĠĠ Ġsh Label . border Ġ= ĠJ BU I . B orders . empty Right ( 3 ) ĊĠĠĠĠĠĠĠ Ġsh Label . foreground Ġ= ĠUI Manager . getColor (" MenuItem . accel erator Foreground ") ĊĠĠĠĠĠĠĠ Ġright Pane . add ( sh Label , ĠBorderLayout . EAST ) ĊĠĠĠĠĠĠĠ Ġpanel . add ( right Pane , ĠBorderLayout . EAST ) ĊĠĠĠĠĠĠĠ Ġright Pane . border Ġ= ĠJ BU I . B orders . empty Left ( 5 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout Component ( panel ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcreate Button (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpane Ġ= ĠJPanel ( M ig Layout (" ins Ġ 0 , Ġgap Ġ 0 ")). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġis Opaque Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlb Ġ= Ġobject Ġ: ĠJLabel () Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Font (): ĠFont Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJ BU I . Fonts . mini Font () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġforeground Ġ= ĠJ BU I . Current Theme . Ad vert iser . foreground () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstate Label Ġ= Ġlb ĊĠĠĠĠĠĠĠ Ġpane . add ( lb , Ġ" gap before Ġ${ J BU I . scale ( 3 )}, Ġgap after Ġ${ J BU I . scale ( 3 )}, Ġay Ġcenter ") ĊĠĠĠĠĠĠĠ Ġpane . border Ġ= ĠP ill Border ( ĊĠĠĠĠĠĠĠĠĠ ĠJ BU I . Current Theme . Ad vert iser . background (), Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJPanel ( M ig Layout (" ins Ġ 0 , Ġgap Ġ 0 , Ġay Ġcenter ", Ġ"", Ġ" push [] push ")). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġis Opaque Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġadd ( pane ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġcustomize Component ( list : ĠJ List < out ĠAny ?> ?, Ġvalue : ĠAny ?, Ġis Selected : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . customize Component ( list , Ġvalue , Ġis Selected ) ĊĠĠĠĠĠĠĠ Ġstate Button ?. let Ġ{ Ġbutton Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġstate Label ?. let Ġ{ Ġlb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . isVisible Ġ= Ġvalue ?. let Ġ{ Ġvl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vl Ġis ĠPopup Factory Impl . Action Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġvl . action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshortcut Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action . shortcut Set . shortcuts . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Text Ġ= ĠKey map Util . get Shortcut Text ( action . shortcut Set . shortcuts . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut Label ?. text Ġ= Ġshortcut Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetState ( action )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlb . foreground Ġ= ĠUI Util . getLabel Foreground () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlb . text Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetList Element Renderer (): ĠList Cell Renderer < *> Ġ{ ĊĠĠĠ Ġreturn Ġcreate Renderer ( this ) ĊĠ Ġ} Ċ Ċ } Ċ