package Ġcom . cent ury link . md w . studio . task Ċ Ċ import Ġcom . cent ury link . md w . app . Templates Ċ import Ġcom . cent ury link . md w . draw . edit .* Ċ import Ġcom . cent ury link . md w . draw . edit . apply . Object App lier Ċ import Ġcom . cent ury link . md w . draw . ext . to Gson Ċ import Ġcom . cent ury link . md w . draw . model . Workflow Obj Ċ import Ġcom . cent ury link . md w . draw . model . Workflow Type Ċ import Ġcom . cent ury link . md w . model . asset . Page let Ċ import Ġcom . cent ury link . md w . model . project . Data Ċ import Ġcom . cent ury link . md w . model . task . Task Template Ċ import Ġcom . cent ury link . md w . studio . config . Config Panel Ċ import Ġcom . cent ury link . md w . studio . config . Config Tab Ċ import Ġcom . cent ury link . md w . studio . file . Task FileType Ċ import Ġcom . cent ury link . md w . studio . proj . Project Setup Ċ import Ġcom . intellij . App Topics Ċ import Ġcom . intellij . code Highlighting . Background Editor Highlight er Ċ import Ġcom . intellij . ide . Browser Util Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . application . Modal ity State Ċ import Ġcom . intellij . openapi . application . Write Action Ċ import Ġcom . intellij . openapi . editor . Document Ċ import Ġcom . intellij . openapi . file Editor .* Ċ import Ġcom . intellij . openapi . file Editor . ex . File Editor Provider Manager Ċ import Ġcom . intellij . openapi . file Editor . impl . text . Psi Aware Text Editor Impl Ċ import Ġcom . intellij . openapi . file Editor . impl . text . Text Editor Provider Ċ import Ġcom . intellij . openapi . project . D umb Aware Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġorg . json . JSONObject Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Cursor Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . beans . Property ChangeEvent Ċ import Ġjava . beans . Property ChangeListener Ċ import Ġjava . io . IOException Ċ import Ġjavax . swing .* Ċ Ċ abstract Ġclass ĠTask Editor Provider Ġ: ĠFile Editor Provider , ĠD umb Aware Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Policy (): ĠFile Editor Policy Ġ= ĠFile Editor Policy . HIDE _ DEFAULT _ EDITOR ĊĠĠĠ Ġoverride Ġfun Ġaccept ( project : ĠProject , Ġfile : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Setup Ġ= Ġproject . getComponent ( Project Setup :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfile . fileType Ġ== ĠTask FileType Ġ&& Ġproject Setup . is M dw Project Ġ&& Ġproject Setup . is Asset Sub dir ( file . parent ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprotected Ġfun Ġis Auto form ( file : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠString ( file . contents To ByteArray ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( content . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġattr Json Ġ= ĠJSONObject ( content ). opt JSONObject (" attributes ") ĊĠĠĠĠĠĠĠ Ġreturn Ġattr Json Ġ!= Ġnull Ġ&& Ġ" Auto form " Ġ== Ġattr Json . opt String (" Form Name ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor General Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - general " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" General ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Work groups Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - DEFAULT _ WORK GROUP S " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" Work groups ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Not ices Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - notices " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠString ( file . contents To ByteArray ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( content . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . opt JSONObject (" attributes ") ?. let Ġ{ Ġattr Json Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotices Ġ= Ġattr Json . opt String (" Not ices ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notices . isNull Or Blank () Ġ|| Ġnotices Ġ== Ġ"\ $ Default Not ices ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġform Name Ġ= Ġattr Json . opt String (" Form Name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( form Name . isNull Or Blank () Ġ|| Ġform Name Ġ== Ġ" Auto form ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattr Json . put (" Not ices ", ĠData . DEFAULT _ TASK _ NOT ICES . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Action . run < Throwable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . set Binary Content ( json . toString ( 2 ). toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Setup Ġ= Ġproject . getComponent ( Project Setup :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Setup . get Asset ( form Name )?. let Ġ{ Ġpage let Asset Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage let ( String ( page let Asset . contents )). widgets ?. let Ġ{ Ġwidgets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidgets . find Ġ{ Ġit . name Ġ== Ġ" Not ices " Ġ} ?. let Ġ{ Ġnotices Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotices . default ?. let Ġ{ Ġdefault Not ices Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattr Json . put (" Not ices ", Ġdefault Not ices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Action . run < Throwable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . set Binary Content ( json . toString ( 2 ). toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" Not ices ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Recipients Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - recipients " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" Recipients ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Indexes Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - indexes " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" Indexes ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġaccept ( project : ĠProject , Ġfile : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . accept ( project , Ġfile ) Ġ&& Ġ! is Auto form ( file ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Variables Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - variables " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTask Editor Tab (" Variables ", Ġproject , Ġfile ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġaccept ( project : ĠProject , Ġfile : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . accept ( project , Ġfile ) Ġ&& Ġis Auto form ( file ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Source Provider Ġ: ĠTask Editor Provider () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Editor TypeId () Ġ= Ġ" task - editor - source " ĊĠĠĠ Ġoverride Ġfun Ġcreate Editor ( project : ĠProject , Ġfile : ĠVirtual File ): ĠFile Editor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠFile Editor Provider Manager . getInstance (). get Provider (" text - editor ") ĊĠĠĠĠĠĠĠ Ġprovider Ġ?: Ġthrow ĠIOException (" Cannot Ġcreate Ġtext Ġeditor : Ġ" Ġ+ Ġfile ) ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠPsi Aware Text Editor Impl ( project , Ġfile , Ġprovider Ġas ĠText Editor Provider ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Source " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetState ( state : ĠFile Editor State , Ġexact State : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġis Modified (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠTask Editor Tab ( private Ġval Ġtab Name : ĠString , Ġproject : ĠProject , Ġval Ġtask File : ĠVirtual File ) Ġ: ĠFile Editor Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġconstructor ( project : ĠProject , Ġtask File : ĠVirtual File ): Ġthis ("", Ġproject , Ġtask File ) ĊĊĠĠĠ Ġprivate Ġval Ġproject Setup Ġ= Ġproject . getComponent ( Project Setup :: class . java ) ĊĠĠĠ Ġprivate Ġvar Ġtask Doc Ġ= ĠFile Document Manager . getInstance (). getDocument ( task File ) !! ĊĠĠĠ Ġprivate Ġvar Ġtask Template : ĠTask Template ĊĠĠĠ Ġprivate Ġvar Ġworkflow Obj : ĠWorkflow Obj ĊĠĠĠ Ġprivate Ġvar Ġeditor Pane Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠ Ġprivate Ġvar Ġconfig Tab : ĠConfig Tab ĊĠĠĠ Ġprivate Ġval Ġprop Change Listeners Ġ= Ġmutable ListOf < Property ChangeListener >() ĊĠĠĠ Ġprivate Ġvar Ġmodified : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġeditor Pane . border Ġ= ĠBorder Factory . create Empty Border () ĊĠĠĠĠĠĠĠ Ġif Ġ( task Doc . text Length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġload Ġfrom Ġtemplate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠTemplates . get (" assets / auto form . task ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Json Ġ= ĠJSONObject ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġname Ġand Ġlogical Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġtask File . name . substring ( 0 , Ġtask File . name . length Ġ- Ġ". task ". length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Json . put (" name ", Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Json . put (" logical Id ", Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Json . put (" version ", Ġ" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Doc . setText ( task Json . toString ( 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtask Template Ġ= ĠTask Template ( JSONObject ( task Doc . text )) ĊĠĠĠĠĠĠĠ Ġval Ġtask Page let Ġ= Ġif Ġ( task Template . is Auto form Task ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData . BASE _ PKG Ġ+ Ġ"/ Auto Form Manual Task . page let " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task Template . form Name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . BASE _ PKG Ġ+ Ġ"/ Custom Manual Task . page let " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Template . form Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage let Asset Ġ= Ġproject Setup . get Asset File ( task Page let ) ĊĠĠĠĠĠĠĠ Ġpage let Asset Ġ?: Ġthrow ĠIOException (" Missing Ġtask Ġpage let : Ġ" Ġ+ Ġtask Page let ) ĊĠĠĠĠĠĠĠ Ġval Ġdef Json Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġdef Json . put (" category ", Ġ" task ") ĊĠĠĠĠĠĠĠ Ġdef Json . put (" page let ", ĠString ( page let Asset . contents To ByteArray ())) ĊĠĠĠĠĠĠĠ Ġval Ġdefinition Ġ= ĠTemplate ( def Json . to Gson ()) ĊĠĠĠĠĠĠĠ Ġdefinition . filter Widgets (" General "). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġ" name " Ġ|| Ġit . name Ġ== Ġ" logical Id " Ġ|| Ġit . name Ġ== Ġ" category " Ġ|| Ġit . name Ġ== Ġ" version " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġ== Ġ" description ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . attributes [" app lier "] Ġ= ĠObject App lier :: class . qualified Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġworkflow Obj Ġ= ĠWorkflow Obj ( project Setup , Ġtask Template , ĠWorkflow Type . task , Ġtask Template . json ) ĊĠĠĠĠĠĠĠ Ġconfig Tab Ġ= ĠConfig Tab ( tab Name , Ġdefinition , Ġworkflow Obj ) ĊĠĠĠĠĠĠĠ Ġconfig Tab . border Ġ= ĠBorder Factory . create Empty Border ( 7 , Ġ 0 , Ġ 3 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġconfig Tab . add Update Listener Ġ{ Ġobj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj . update Asset () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠhandleChange () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġeditor Pane . add ( config Tab ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġhelp Ġlink ĊĠĠĠĠĠĠĠ Ġdefinition . page let . widgets . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Help Link Ġ&& Ġ( it . section Ġ== Ġtab Name Ġ|| Ġ( it . section Ġ== Ġnull Ġ&& Ġtab Name Ġ== Ġ" General ")) ĊĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Help Link ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠApplication Manager . getApplication (). message Bus . connect ( this ) ĊĠĠĠĠĠĠĠ Ġconnection . subscribe ( App Topics . FILE _ DOCUMENT _ SYNC , Ġobject Ġ: ĠFile Document Manager Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfile Content Re loaded ( file : ĠVirtual File , Ġdocument : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . equals ( task File )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync From Doc ( document ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore All Documents Saving () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreact Ġto ĠSave ĠAll Ġand Ġbuild Ġevents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave ToFile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Help Link ( widget : ĠPage let . Widget ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhelp Label Ġ= ĠJLabel ( widget . label , ĠConfig Panel . ICON _ HELP , ĠSw ing Constants . LEADING ) ĊĠĠĠĠĠĠĠ Ġhelp Label . border Ġ= ĠBorder Factory . create Empty Border ( 0 , Ġ 0 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġhelp Label . add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Entered ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Label . cursor Ġ= ĠCursor . get Pre defined Cursor ( Cursor . HAND _ CURSOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Label . border Ġ= ĠBorder Factory . create Mat te Border ( 0 , Ġ 0 , Ġ 1 , Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Manager . getColor (" Editor Pane . foreground ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Exit ed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Label . cursor Ġ= ĠCursor . get Pre defined Cursor ( Cursor . DEFAULT _ CURSOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelp Label . border Ġ= ĠBorder Factory . create Empty Border ( 0 , Ġ 0 , Ġ 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Released ( e : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBrowser Util . browse ( if Ġ( widget . url ?. startsWith (" help / http ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfull - f led ged Ġurl Ġfor Ġhelp Ġlink ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidget . url ?. substring ( 5 ) Ġ?: ĠData . DOCS _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrelative Ġto Ġhelp Ġdocs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData . DOCS _ URL Ġ+ Ġ"/" Ġ+ Ġwidget . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġhelp Pane Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġhelp Pane . add ( help Label , ĠBorderLayout . EAST ) ĊĠĠĠĠĠĠĠ Ġhelp Pane . border Ġ= ĠBorder Factory . create Empty Border ( 1 , Ġ 1 , Ġ 5 , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġhelp Pane . background Ġ= ĠUI Manager . getColor (" Editor Pane . background ") ĊĠĠĠĠĠĠĠ Ġeditor Pane . add ( help Pane , ĠBorderLayout . SO UTH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsync From Doc ( document : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Doc Ġ= Ġdocument ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJSONObject ( task Doc . text ) ĊĠĠĠĠĠĠĠ Ġtask Template Ġ= ĠTask Template ( json ) ĊĠĠĠĠĠĠĠ Ġworkflow Obj . asset Ġ= Ġtask Template ĊĠĠĠĠĠĠĠ Ġworkflow Obj . obj Ġ= Ġjson ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠhandleChange () Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Modified Property ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave ToFile () Ġ{ ĊĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke And Wait ( Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrite Action . run < Throwable > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Doc . setText ( task Template . json . toString ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Modified Property ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ}, ĠMod ality State . NON _ MOD AL ) ĊĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Modified Property ( newValue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠ Ġval Ġwas Modified Ġ= Ġmodified ĊĠĠĠĠĠĠĠĠ Ġmodified Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠ Ġif Ġ( was Modified Ġ!= Ġmodified ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( prop ChangeListener Ġin Ġprop Change Listeners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop ChangeListener . property Change ( Property ChangeEvent ( this @ Task Editor Tab , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Editor . PROP _ MODI FIED , Ġwas Modified , Ġmodified )) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtab Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Modified (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodified ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetState ( state : ĠFile Editor State ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Component (): ĠJ Component Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġeditor Pane ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Preferred Focused Component (): ĠJ Component ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect Notify () Ġ{ ĊĠĠĠĠĠĠĠ Ġtask File . refresh ( true , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsync From Doc ( File Document Manager . getInstance (). getDocument ( task File ) !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġde select Notify () Ġ{ ĊĠĠĠĠĠĠĠ Ġsave ToFile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Property ChangeListener ( listener : ĠProperty ChangeListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop Change Listeners . add ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Property ChangeListener ( listener : ĠProperty ChangeListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprop Change Listeners . remove ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny ?> Ġget UserData ( key : ĠKey < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠAny ?> Ġput UserData ( key : ĠKey < T >, Ġvalue : ĠT ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetCurrent Location (): ĠFile Editor Location ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Background Highlight er (): ĠBackground Editor Highlight er ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠ Ġ} Ċ }