package Ġcom . jetbrains . edu . course creator . actions . placeholder Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Ċ import Ġcom . intellij . openapi . ui . Dialog Wrapper Peer Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . intellij . ui . Hide able Decorator Ċ import Ġcom . intellij . ui . JB Color Ċ import Ġcom . intellij . ui . components . JB CheckBox Ċ import Ġcom . intellij . ui . components . JB TextField Ċ import Ġcom . intellij . ui . layout .* Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġcom . jetbrains . edu . course creator . CC Utils . DEFAULT _ PLACE HOLDER _ TEXT Ċ import Ġcom . jetbrains . edu . course creator . actions . placeholder . CC Add Answer Placeholder Panel . Companion . PLACE HOLDER _ PANEL _ WIDTH Ċ import Ġcom . jetbrains . edu . learning . course Format . Answer Placeholder Ċ import Ġcom . jetbrains . edu . learning . course Format . Answer Placeholder Dependency Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . Task Ċ import Ġcom . jetbrains . edu . learning . messages . E du Core Bundle Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Component Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JLabel Ċ import Ġjavax . swing . JPanel Ċ Ċ open Ġclass ĠCC Create Answer Placeholder Dialog ( ĊĠ Ġproject : ĠProject , ĊĠ Ġis Edit : ĠBoolean , ĊĠ Ġprivate Ġval Ġplaceholder : ĠAnswer Placeholder Ċ ) Ġ: ĠDialog Wrapper ( project , Ġtrue ) Ġ{ ĊĊĠ Ġprivate Ġval Ġpanel : ĠCC Add Answer Placeholder Panel Ġ= ĠCC Add Answer Placeholder Panel ( placeholder . placeholder Text Ġ?: ĠDEFAULT _ PLACE HOLDER _ TEXT ) ĊĠ Ġprivate Ġval Ġdependency Path Field : ĠJ B TextField Ġ= ĠJ B TextField ( 0 ) ĊĠ Ġprivate Ġval Ġvisibility CheckBox : ĠJ B CheckBox Ġ= ĠJ B CheckBox ( ĊĠĠĠ ĠE du Core Bundle . message (" label . visible "), ĊĠĠĠ Ġplaceholder . placeholder Dependency ?. isVisible Ġ== Ġtrue ĊĠ Ġ) ĊĠ Ġprivate Ġval Ġpath Label : ĠJLabel Ġ= ĠJLabel ( E du Core Bundle . message (" ui . dialog . create . answer . placeholder . path . pattern ")) ĊĠ Ġprivate Ġval Ġis First Task : ĠBoolean Ġ= Ġplaceholder . task File . task . is First In Course ĊĠ Ġprivate Ġval Ġcurrent Text : ĠString Ġget () Ġ= Ġdependency Path Field . text Ġ?: Ġ"" ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġtitle Ġ= ĊĠĠĠĠĠ Ġif Ġ( is Edit ) ĠE du Core Bundle . message (" ui . dialog . create . answer . placeholder . edit ") ĊĠĠĠĠĠ Ġelse ĠE du Core Bundle . message (" ui . dialog . create . answer . placeholder . add ") ĊĠĠĠ Ġval Ġbutton Text Ġ= Ġif Ġ( is Edit ) ĠE du Core Bundle . message (" label . ok ") Ġelse ĠE du Core Bundle . message (" label . add ") ĊĠĠĠ Ġset OK ButtonText ( button Text ) ĊĠĠĠ Ġsuper . init () ĊĠĠĠ Ġinit Validation () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component Ġ{ ĊĠĠĠ Ġdependency Path Field . put Client Property ( Dialog Wrapper Peer . HAVE _ INITIAL _ SELECTION , Ġtrue ) ĊĠĠĠ Ġpath Label . foreground Ġ= ĠJ B Color . GRAY ĊĊĠĠĠ Ġif Ġ(! is First Task ) Ġ{ ĊĠĠĠĠĠ Ġval Ġdependency Panel Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠ Ġval Ġcontent Panel Ġ= Ġpanel Ġ{ ĊĠĠĠĠĠĠĠ Ġrow Ġ{ Ġdependency Path Field () Ġ} ĊĠĠĠĠĠĠĠ Ġrow Ġ{ Ġpath Label () Ġ} ĊĠĠĠĠĠĠĠ Ġrow Ġ{ Ġvisibility CheckBox () Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcontent Panel . border Ġ= ĠJ BU I . B orders . empty Bottom ( 5 ) ĊĠĠĠĠĠ Ġval Ġdecorator Ġ= ĠHide able Decorator ( dependency Panel , ĠE du Core Bundle . message (" ui . dialog . create . answer . placeholder . dependency "), Ġtrue ) ĊĠĠĠĠĠ Ġdecorator . setContent Component ( content Panel ) ĊĠĠĠĠĠ Ġif Ġ( placeholder . placeholder Dependency Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdecorator . setOn ( true ) ĊĠĠĠĠĠĠĠ Ġdependency Path Field . text Ġ= Ġplaceholder . placeholder Dependency ?. toString () ĊĠĠĠĠĠĠĠ Ġpanel . preferred Size Ġ= ĠJ BU I . size ( PLACE HOLDER _ PANEL _ WIDTH , Ġ 2 3 0 ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġdependency Panel . alignment X Ġ= ĠComponent . LEFT _ ALIGNMENT ĊĠĠĠĠĠ Ġcontent Panel . maximum Size Ġ= ĠJ BU I . size ( Int . MAX _ VALUE , Ġ 0 ) ĊĠĠĠĠĠ Ġdependency Path Field . minimum Size Ġ= ĠJ BU I . size ( PLACE HOLDER _ PANEL _ WIDTH , Ġ 0 ) ĊĠĠĠĠĠ Ġpanel . add ( dependency Panel , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠ Ġpanel . minimum Size Ġ= ĠJ BU I . size ( PLACE HOLDER _ PANEL _ WIDTH , Ġ 1 3 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġpanel ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdo Validate (): ĠValidation Info ? Ġ{ ĊĠĠĠ Ġif Ġ( current Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġerror Text Ġ= Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġdependency Ġ= ĠAnswer Placeholder Dependency . create ( placeholder , Ġcurrent Text ) ĊĠĠĠĠĠ Ġif Ġ( dependency Ġ== Ġnull ) ĠE du Core Bundle . message (" error . invalid . dependency ") Ġelse Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġcatch Ġ( e : ĠAnswer Placeholder Dependency . Invalid Dependency Exception ) Ġ{ ĊĠĠĠĠĠ Ġe . custom Message ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( error Text Ġ!= Ġnull ) ĠValidation Info ( error Text ) Ġelse Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Preferred Focused Component (): ĠJ Component ? Ġ{ ĊĠĠĠ Ġreturn Ġpanel . get Preferred Focused Component () ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġget Placeholder Text (): ĠString Ġ= Ġpanel . get Answer Placeholder Text (). trim () ĊĊĠ Ġopen Ġfun Ġget Dependency Info (): ĠDependency Info ? Ġ= ĊĠĠĠ Ġif Ġ(!( current Text . isBlank () Ġ|| Ġis First Task )) Ġ{ ĊĠĠĠĠĠ ĠDependency Info ( current Text , Ġvisibility CheckBox . isSelected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġnull ĊĊĠ Ġdata Ġclass ĠDependency Info ( val Ġdependency Path : ĠString , Ġval Ġis Visible : ĠBoolean ) Ċ } Ċ Ċ private Ġval ĠTask . is First In Course : ĠBoolean ĊĠ Ġget () Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsection Ġ= Ġlesson . section Ġ?: Ġreturn Ġlesson . index Ġ== Ġ 1 ĊĠĠĠ Ġreturn Ġsection . index Ġ== Ġ 1 Ġ&& Ġlesson . index Ġ== Ġ 1 ĊĠ Ġ}