package Ġcom . jetbrains . edu . learning . co def or ces . actions Ċ Ċ import Ġcom . intellij . ide . project View . Project View Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . ide . Copy Paste Manager Ċ import Ġcom . intellij . ui . Browser Hyper link Listener Ċ import Ġcom . jetbrains . edu . learning . E du Utils Ċ import Ġcom . jetbrains . edu . learning . checker . Check Result Ċ import Ġcom . jetbrains . edu . learning . checker . Check Result . Companion . failed ToCheck Ċ import Ġcom . jetbrains . edu . learning . checker . Check Result Severity Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces Names . CODE FOR CES _ CON TEST _ SUB MISSION S _ URL Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces Settings Ċ import Ġcom . jetbrains . edu . learning . co def or ces . api . Code forces Connector Ċ import Ġcom . jetbrains . edu . learning . co def or ces . course Format . Code forces Task Ċ import Ġcom . jetbrains . edu . learning . course Format . Check Feedback Ċ import Ġcom . jetbrains . edu . learning . course Format . Check Status Ċ import Ġcom . jetbrains . edu . learning . course Format . ext . getCode Task File Ċ import Ġcom . jetbrains . edu . learning . course Format . ext . getDocument Ċ import Ġcom . jetbrains . edu . learning . messages . E du Core Bundle Ċ import Ġcom . jetbrains . edu . learning . onError Ċ import Ġcom . jetbrains . edu . learning . task Description . ui . Task Description View Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Format Synchron izer Ċ import Ġorg . jetbrains . annotations . Non N ls Ċ import Ġjava . awt . datat rans fer . String Selection Ċ import Ġjavax . swing . event . Hyper link Event Ċ import Ġjavax . swing . event . Hyper link Listener Ċ Ċ class ĠSubmit Code forces Solution Action Ġ: ĠCode forces Action () Ġ{ ĊĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġproject Ġ= Ġe . project Ġ?: Ġreturn ĊĠĠĠ Ġif Ġ( project . is Disposed ) Ġreturn ĊĊĠĠĠ Ġval Ġtask Ġ= ĠE du Utils . getCurrent Task ( project ) Ġas ? ĠCode forces Task Ġ?: Ġreturn ĊĠĠĠ Ġval Ġsolution Ġ= Ġtask . getCode Task File ( project )?. getDocument ( project )?. text Ġ?: Ġreturn ĊĊĠĠĠ Ġval Ġtask Description View Ġ= ĠTask Description View . getInstance ( project ) ĊĠĠĠ Ġtask Description View . check Started ( task , Ġtrue ) ĊĊĠĠĠ ĠApplication Manager . getApplication (). execute On P ooled Thread Ġ{ ĊĠĠĠĠĠ Ġvar Ġcheck Status Ġ= ĠCheck Status . Unchecked ĊĠĠĠĠĠ Ġvar Ġmessage Ġ= ĠE du Core Bundle . message (" co def or ces . message . solution . submitted ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCO DEF OR CES _ CON TEST _ SUB MISSION S _ URL . format ( task . course . id )) ĊĠĠĠĠĠ Ġvar Ġseverity Ġ= ĠCheck Result Severity . Info ĊĠĠĠĠĠ Ġvar Ġcheck Result Ġ= ĠCheck Result ( check Status , Ġmessage , Ġseverity Ġ= Ġseverity ) ĊĠĠĠĠĠ Ġvar Ġhyper link Listener : ĠHyper link Listener ? Ġ= Ġnull ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠCode forces Settings . getInstance (). account ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Message Ġ= ĠCode forces Connector . getInstance (). submit Solution ( task , Ġsolution , Ġit , Ġproject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Ġ{ ĠerrorMessage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Status Ġ= ĠCheck Status . Failed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseverity Ġ= ĠCheck Result Severity . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhyper link Listener Ġ= Ġobject Ġ: ĠBrowser Hyper link Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhyper link Activated ( e : ĠHyper link Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCopy Paste Manager . getInstance (). set Contents ( String Selection ( solution )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . hyperlink Activated ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ+ Ġ"& emsp ;< a Ġhref =${ Code forces Task . co def or ces Submit Link ( task )} >${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE du Core Bundle . message (" co def or ces . copy . solution . and . submit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}</ a >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Message . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġresponse Message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( severity Ġ== ĠCheck Result Severity . Info ) Ġseverity Ġ= ĠCheck Result Severity . Warning ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcheck Result Ġ= ĠCheck Result ( check Status , Ġmessage , Ġseverity Ġ= Ġseverity , Ġhyper link Listener Ġ= Ġhyper link Listener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . error ( e ) ĊĠĠĠĠĠĠĠ Ġcheck Result Ġ= Ġfailed ToCheck ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġfinally Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! severity . is W aring ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtask . feedback Ġ= ĠCheck Feedback ( check Result . message ) ĊĠĠĠĠĠĠĠĠĠ Ġtask . status Ġ= Ġcheck Result . status ĊĊĠĠĠĠĠĠĠĠĠ ĠProject View . getInstance ( project ). refresh () ĊĠĠĠĠĠĠĠĠĠ ĠYaml Format Synchron izer . save Item ( task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtask Description View . check Finished ( task , Ġcheck Result ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getInstance ( this :: class . java ) ĊĊĠĠĠ Ġ@ Non N ls ĊĠĠĠ Ġconst Ġval ĠACTION _ ID Ġ= Ġ" Ed uc ational . Code forces . Submit . Solution " ĊĠ Ġ} Ċ Ċ }