/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġcms . rend ner Ġ( Dan iel ĠSch mid t ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcms . rend ner . intellij . dataframe . viewer . models . chunk ed . helper Ċ Ċ import Ġcms . rend ner . intellij . dataframe . viewer . components . DataFrame Table Ċ import Ġcms . rend ner . intellij . dataframe . viewer . models . I DataFrame Model Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġjava . awt . Component Ċ import Ġjava . awt . Container Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ import Ġjavax . image io . Image IO Ċ import Ġjavax . swing . J ScrollPane ĊĊ Ċ internal Ġclass ĠDataFrame Table Image Writer Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġwrite Image ( date Frame Model : ĠI DataFrame Model , ĠfilePath : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= ĠDataFrame Table () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . vertical ScrollBar Policy Ġ= ĠJ ScrollPane . VERTICAL _ SCROLL BAR _ NE VER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . horizontal ScrollBar Policy Ġ= ĠJ ScrollPane . HORIZONTAL _ SCROLL BAR _ NE VER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . add Notify () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSet Ġmodel Ġafter Ġ" table . add Notify ()" Ġcall , Ġbecause Ġotherwise Ġa ĠJ Table Ġre - adds Ġa Ġheader Ġautomatically , Ġif : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġparent Ġwas Ġadded Ġto Ġa Ġcomponent Ġ( sim ulated Ġby Ġ" add Notify " Ġcall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġparent Ġis Ġa ĠJ ScrollPane ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġwas Ġadded Ġto Ġthe Ġscroll Ġpane Ġvia Ġ" setView Port View " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBut Ġwe Ġwant Ġto Ġhide Ġthe Ġheader Ġof Ġthe Ġvalue Ġtable Ġif Ġ" date Frame Model . getValue DataModel (). should Hide Headers ()" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ġset Ġto Ġtrue . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . set DataFrame Model ( date Frame Model ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . size Ġ= Ġcalculate Table Size ( table , Ġdate Frame Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Component ( table ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠUI Util . create Image ( table , Ġtable . width , Ġtable . height , ĠBufferedImage . TYPE _ INT _ RGB ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg 2 d Ġ= Ġimage . create Graphics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . paint ( g 2 d ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable . remove Notify () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg 2 d . dispose () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Files . not Exists ( filePath . parent )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . create Directories ( filePath . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage IO . write ( image , Ġ" png ", ĠfilePath . to File ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate Table Size ( table : ĠDataFrame Table , Ġmodel : ĠI DataFrame Model ): ĠDimension Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( model . getValue DataModel (). rowCount Ġ== Ġ 0 Ġ&& Ġmodel . getValue DataModel (). column Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension ( 4 0 0 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDimension ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable . viewport . view Size . width Ġ+ Ġtable . row Header . view Size . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( table . getRow Height () Ġ* Ġmodel . getValue DataModel (). rowCount ) Ġ+ Ġtable . column Header . view Size . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġlayout Component ( c : ĠComponent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( c . tree Lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . do Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġis ĠContainer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( child Ġin Ġc . components ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Component ( child ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }