/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 Ġ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 Ġorg . jetbrains . r . run . graphics . ui Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . Dis poser Ċ import Ġorg . jetbrains . plugins . notebooks . visualization . r . in lay s . components . Border less Dialog Wrapper Ċ import Ġorg . jetbrains . plugins . notebooks . visualization . r . in lay s . components . Dialog Util Ċ import Ġorg . jetbrains . r . R Bundle Ċ import Ġorg . jetbrains . r . rendering . chunk . Chunk Graphics Manager Ċ import Ġorg . jetbrains . r . run . graphics . RP lot Ċ import Ġorg . jetbrains . r . run . graphics . R Snapshot Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . event . ActionListener Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . JPanel Ċ import Ġjavax . swing . KeyStroke Ċ Ċ class ĠR Graphics Zoom Dialog ( project : ĠProject , Ġviewer Component : ĠJ Component , Ġprivate Ġval Ġzoom Group : ĠDis posable ? Ġ= Ġnull ) Ġ: ĊĠ ĠBorder less Dialog Wrapper ( project , ĠTITLE , ĠIde Modal ity Type . MODE LESS ) Ċ { ĊĠ Ġprivate Ġval Ġroot Panel Ġ= ĠJPanel ( Border Layout ()). apply Ġ{ ĊĠĠĠ Ġpreferred Size Ġ= ĠDialog Util . calculate PreferredSize ( Dialog Util . Size Preference . VERY _ W IDE ) ĊĠĠĠ Ġadd ( viewer Component , ĠBorderLayout . CENTER ) ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġregister Escape Action () ĊĠĠĠ Ġinit () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcreate Center Panel (): ĠJ Component ? Ġ{ ĊĠĠĠ Ġreturn Ġroot Panel ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdo Cancel Action () Ġ{ ĊĠĠĠ Ġsuper . do Cancel Action () ĊĠĠĠ Ġzoom Group ?. dispose () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġregister Escape Action () Ġ{ ĊĠĠĠ Ġval Ġlistener Ġ= ĠActionListener Ġ{ Ġdo Cancel Action () Ġ} ĊĠĠĠ Ġval Ġkey Stroke Ġ= ĠKey Stroke . getKey Stroke ( KeyEvent . VK _ ESCAPE , Ġ 0 ) ĊĠĠĠ Ġroot Panel . register Keyboard Action ( listener , Ġkey Stroke , ĠJ Component . WHEN _ FOC USED ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTITLE Ġ= ĠR Bundle . message (" graphics . panel . zoom . dialog . title ") ĊĊĠĠĠ Ġfun Ġshow ( project : ĠProject , Ġparent : ĠDis posable , Ġsnapshot : ĠR Snapshot ) Ġ{ ĊĠĠĠĠĠ Ġval Ġwrapper Ġ= ĠR Graphics Panel Wrapper ( project , Ġparent ) ĊĠĠĠĠĠ Ġwrapper . target Resolution Ġ= Ġsnapshot . resolution ĊĠĠĠĠĠ Ġval Ġmanager Ġ= ĠChunk Graphics Manager ( project ) ĊĠĠĠĠĠ Ġvar Ġzoom Group : ĠDis posable ? Ġ= Ġnull ĊĠĠĠĠĠ Ġmanager . create Image Group ( snapshot . file . absolute Path )?. let Ġ{ Ġ( copy File , Ġgroup ) Ġ-> ĊĠĠĠĠĠĠĠ ĠR Snapshot . from ( copy File )?. let Ġ{ Ġcopy Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġwrapper . add Snapshot ( copy Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDis poser . register ( parent , Ġgroup ) ĊĠĠĠĠĠĠĠ Ġzoom Group Ġ= Ġgroup ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠR Graphics Zoom Dialog ( project , Ġwrapper . component , Ġzoom Group ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ( project : ĠProject , Ġparent : ĠDis posable , Ġplot : ĠRP lot , Ġresolution : ĠInt ?) Ġ{ ĊĠĠĠĠĠ Ġval Ġviewer Ġ= ĠRP lot Viewer ( project , Ġparent ) ĊĠĠĠĠĠ Ġviewer . resolution Ġ= Ġresolution ĊĠĠĠĠĠ Ġviewer . plot Ġ= Ġplot ĊĠĠĠĠĠ ĠR Graphics Zoom Dialog ( project , Ġviewer ). show () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ