// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . platform Ċ Ċ import Ġcom . intellij . conversion . Cannot Convert Exception Ċ import Ġcom . intellij . diagnostic . run Activity Ċ import Ġcom . intellij . ide . Recent Projects Manager Ċ import Ġcom . intellij . ide . Recent Projects Manager Base Ċ import Ġcom . intellij . ide . impl . Open Project Task Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . application . Transaction Guard Ċ import Ġcom . intellij . openapi . diagnostic . logger Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project . impl . Project ManagerImpl Ċ import Ġcom . intellij . openapi . util . registry . Registry Ċ import Ġcom . intellij . openapi . wm . WindowManager Ċ import Ġcom . intellij . openapi . wm . impl . Ide Frame Impl Ċ import Ġcom . intellij . openapi . wm . impl . Project Frame Bounds Ċ import Ġcom . intellij . openapi . wm . impl . WindowManager Impl Ċ import Ġcom . intellij . ui . scale . Scale Context Ċ import Ġorg . jetbrains . annotations . Called In A wt Ċ import Ġjava . awt . Image Ċ import Ġjava . io . EOF Exception Ċ import Ġjava . nio . file . Path Ċ Ċ internal Ġopen Ġclass ĠProject Frame Allocator Ġ{ ĊĠ Ġopen Ġfun Ġrun ( task : ĠRunnable , Ġfile : ĠPath ): ĠBoolean Ġ{ ĊĠĠĠ Ġtask . run () ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠProject Ġis Ġloaded Ġand Ġis Ġinitialized , Ġproject Ġservices Ġand Ġcomponents Ġcan Ġbe Ġaccessed . ĊĠĠ Ġ*/ ĊĠ Ġopen Ġfun Ġproject Loaded ( project : ĠProject ) Ġ{} ĊĊĠ Ġopen Ġfun Ġproject Not Loaded ( error : ĠCannot Convert Exception ?) Ġ{ ĊĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠProject ManagerImpl . show Cannot Convert Message ( error , Ġnull ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġopen Ġfun Ġproject Opened ( project : ĠProject ) Ġ{} Ċ } Ċ Ċ internal Ġclass ĠProject Ui Frame Allocator ( private Ġvar Ġoptions : ĠOpen Project Task ) Ġ: ĠProject Frame Allocator () Ġ{ ĊĠ Ġ// Ġvolatile Ġnot Ġrequired Ġbecause Ġcreated Ġin Ġrun Ġ( before Ġexecuting Ġrun Ġtask ) ĊĠ Ġprivate Ġvar Ġide Frame : ĠIde Frame Impl ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġide Frame Is New Ġ= Ġfalse ĊĊĠ Ġoverride Ġfun Ġrun ( task : ĠRunnable , Ġfile : ĠPath ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġcompleted Ġ= Ġfalse ĊĠĠĠ ĠTransaction Guard . getInstance (). submit Transaction And Wait Ġ{ ĊĠĠĠĠĠ Ġide Frame Ġ= Ġcreate Frame ( file ) ĊĠĠĠĠĠ Ġcompleted Ġ= ĠProgress Manager . getInstance (). run Process With Progress S ynchronously ( ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( ide Frame Is New ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġide Frame ?. let Ġ{ Ġframe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Activity (" init Ġframe ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit New Frame ( frame ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġtask . run () ĊĠĠĠĠĠĠĠ Ġ}, Ġ" Loading ĠProject ...", Ġtrue , Ġnull , Ġide Frame !!. component ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcompleted ĊĠ Ġ} ĊĊĠ Ġ@ Called In A wt ĊĠ Ġprivate Ġfun Ġinit New Frame ( frame : ĠIde Frame Impl ) Ġ{ ĊĠĠĠ Ġval Ġwindow Manager Ġ= ĠWindow Manager . getInstance () Ġas ĠWindow ManagerImpl ĊĠĠĠ Ġvar Ġframe Info Ġ= Ġoptions . frame ĊĠĠĠ Ġif Ġ( frame Info ?. bounds Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġframe Info Ġ= Ġwindow Manager . default Frame Info ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( frame Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġwindow Manager . restore Frame State ( frame , Ġframe Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġproject Self ie : ĠImage ? Ġ= Ġnull ĊĠĠĠ Ġif Ġ( options . project Workspace Id Ġ!= Ġnull Ġ&& ĠRegistry .` is ` (" ide . project . loading . show . last . state ")) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġproject Self ie Ġ= ĠProject Self ie Util . read Project Self ie ( options . project Workspace Id !! , ĠScale Context . create ( frame )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . cause Ġ! is ĠEOF Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlogger < Project Frame Allocator >(). warn ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġframe . pre Init ( project Self ie ) ĊĠĠĠ Ġframe . isVisible Ġ= Ġtrue ĊĠĠĠ Ġframe . init () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Frame ( file : ĠPath ): ĠIde Frame Impl Ġ{ ĊĠĠĠ Ġval Ġwindow Manager Ġ= ĠWindow Manager . getInstance () Ġas ĠWindow ManagerImpl ĊĠĠĠ Ġ@ Suppress (" Use Property Access Syntax ") ĊĠĠĠ Ġval Ġfree Root Frame Ġ= Ġwindow Manager . get And Remove Root Frame () ĊĠĠĠ Ġif Ġ( free Root Frame Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfree Root Frame ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( options . frame ?. bounds Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġrecent Project Manager Ġ= ĠRecent Projects Manager . getInstance () ĊĠĠĠĠĠ Ġif Ġ( recent Project Manager Ġis ĠRecent Projects Manager Base ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġrecent Project Manager . getProject Meta Info ( file ) ĊĠĠĠĠĠĠĠ Ġif Ġ( info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions . copy () ĊĠĠĠĠĠĠĠĠĠ Ġoptions . frame Ġ= Ġinfo . frame ĊĠĠĠĠĠĠĠĠĠ Ġoptions . project Workspace Id Ġ= Ġinfo . project Workspace Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġrun Activity (" create Ġa Ġframe ") Ġ{ ĊĠĠĠĠĠ Ġide Frame Is New Ġ= Ġtrue ĊĠĠĠĠĠ Ġwindow Manager . create Frame ( options ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġproject Loaded ( project : ĠProject ) Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). invoke Later ( Runnable Ġ{ ĊĠĠĠĠĠ Ġval Ġframe Ġ= Ġide Frame Ġ?: Ġreturn @ Runnable ĊĠĠĠĠĠ Ġval Ġwindow Manager Ġ= ĠWindow Manager . getInstance () Ġas ĠWindow ManagerImpl ĊĊĠĠĠĠĠ Ġif Ġ( ide Frame Is New Ġ&& Ġoptions . frame ?. bounds Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġframe Info Ġ= ĠProject Frame Bounds . getInstance ( project ). get Frame Info In Device Space () ĊĠĠĠĠĠĠĠ Ġif Ġ( frame Info ?. bounds Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwindow Manager . restore Frame State ( frame , Ġframe Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġwindow Manager . assign Frame ( frame , Ġproject ) ĊĠĠĠ Ġ}, Ġproject . dis posed ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġproject Not Loaded ( error : ĠCannot Convert Exception ?) Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠ Ġval Ġframe Ġ= Ġide Frame ĊĠĠĠĠĠ Ġide Frame Ġ= Ġnull ĊĊĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠProject ManagerImpl . show Cannot Convert Message ( error , Ġframe ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġframe ?. dispose () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġproject Opened ( project : ĠProject ) Ġ{ ĊĠĠĠ Ġif Ġ( options . send Frame Back ) Ġ{ ĊĠĠĠĠĠ Ġide Frame ?. is Auto Request Focus Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠ Ġ} Ċ }