package Ġnl . rub en sten . tex ify idea . run Ċ Ċ import Ġcom . intellij . execution . Runner And Configuration Settings Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . ui . components . JB List Ċ import Ġcom . intellij . ui . components . JB ScrollPane Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . List Selection Model Ċ import Ġjavax . swing . Swing Utilities Ċ Ċ /** Ċ Ġ* ĠAdapt ed Ġfrom Ġ[ com . intellij . execution . impl . Run Configuration Before Run Provider . Selection Dialog ] Ċ Ġ* Ċ Ġ* Ġ@ author ĠSt en ĠW essel Ċ Ġ*/ Ċ class ĠRun Configuration Selection Dialog ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsettings : ĠList < Runner And Configuration Settings >, ĊĠĠĠĠĠĠĠ Ġselected : ĠRunner And Configuration Settings ? Ġ= Ġnull Ċ ) Ġ: ĠDialog Wrapper ( project ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist : ĠJ B List < Runner And Configuration Settings > ĊĊĠĠĠ Ġvar Ġselected Ġ= Ġselected ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( is OK ) Ġfield Ġelse Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Choose ĠRun ĠConfiguration " ĊĠĠĠĠĠĠĠ Ġinit () ĊĊĠĠĠĠĠĠĠ Ġlist . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetSelected Value ( selected , Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Swing Utilities . is Left MouseButton ( e ) Ġ&& Ġe ?. click Count Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo OK Action () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Metrics Ġ= Ġlist . getFont Metrics ( list . font ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIcon Ġand Ġgap Ġ(= Ġ 2 4 ) Ġ+ Ġmax Ġsize Ġof Ġthe Ġconfiguration Ġnames ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxWidth Ġ= Ġ 2 4 Ġ+ Ġ( settings . as Sequence (). map Ġ{ Ġfont Metrics . string Width ( it . configuration . name ) Ġ}. max () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfont Metrics . string Width (" m ") Ġ* Ġ 3 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Size Ġ= ĠDimension ( maxWidth , Ġpreferred Size . height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Ġ= ĠJ B List ( settings ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Mode Ġ= ĠList Selection Model . SINGLE _ SELECTION ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġselection Model . add List Selection Listener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġlist . selected Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis OK Action Enabled Ġ= Ġlist . selected Value Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Renderer Ġ= ĠRun Config Cell Renderer ( project ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJ B ScrollPane ( list ) ĊĠĠĠ Ġ} Ċ }