package Ġorg . jetbrains . fortran . ide . intent ions Ċ Ċ import Ġcom . intellij . code Insight . File Modification Service Ċ import Ġcom . intellij . code Insight . int ention . Base ElementAt Caret Int ention Action Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . code Style . Code Style Manager Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran File Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran If Stmt Ċ Ċ class ĠFor tran If Statement To Construct Int ention Ġ: ĠBase ElementAt Caret Int ention Action () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetText () Ġ= Ġ" Convert ĠIf Ġstmt Ġto Ġconstruct " ĊĠĠĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ= Ġtext ĊĊĠĠĠ Ġprivate Ġfun Ġfind Applicable Context ( element : ĠPsi Element ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi Tree Util . getParent OfType ( element , ĠFor tran If Stmt :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġstart In Write Action (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġelement : ĠPsi Element ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! File Modification Service . getInstance (). prepare Psi Element For Write ( element )) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġif St mnt Ġ= Ġfind Applicable Context ( element ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġif Start Offset Ġ= Ġif St mnt . text Offset Ġ// editor . caret Model . visual Line Start ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġelement . containing File ĊĠĠĠĠĠĠĠ Ġval Ġindent String Ġ= Ġif Ġ( Ġfile Ġis ĠFor tran File ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCode Style Manager . getInstance ( project ) !!. getLine Indent ( editor . document , Ġif Start Offset ) Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠĠ Ġ" ĊĊĠĠĠĠĠĠĠ Ġval Ġconstruct Text Ġ= Ġ" then \ n $ indent String ĠĠĠ Ġ${ if St mnt . action Stmt . text }\ n ${ indent String } end Ġif " ĊĠĠĠĠĠĠĠ Ġrun Write Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Range Ġ= Ġif St mnt . action Stmt . text Range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . document . delete String ( deleted Range . start Offset , Ġdeleted Range . end Offset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . document . insert String ( deleted Range . start Offset , Ġconstruct Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . caret Model . moveTo Offset ( deleted Range . start Offset + 4 ) Ġ// Ġafter Ġthen ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Available ( project : ĠProject , Ġeditor : ĠEditor , Ġelement : ĠPsi Element ): ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġfind Applicable Context ( element ) Ġ!= Ġnull Ċ } Ċ