package Ġcom . github . gr ish berg . profiler . ui . dialogs . info Ċ Ċ import Ġcom . github . gr ish berg . profiler . core . Profile Data Ċ import Ġcom . github . gr ish berg . profiler . common . Cyc lic TableRow Sorter Ċ import Ġcom . github . gr ish berg . profiler . common . Double Renderer Ċ import Ġcom . github . gr ish berg . profiler . ui . dialogs . Close By Escape Dialog Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Frame Ċ import Ġjava . awt . Toolkit Ċ import Ġjava . awt . datat rans fer . String Selection Ċ import Ġjava . awt . event .* Ċ import Ġjava . util .* Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . border . Be vel Border Ċ import Ġjavax . swing . border . Empty Border ĊĊ Ċ internal Ġclass ĠDependencies List Dialog ( ĊĠĠĠ Ġowner : ĠFrame , ĊĠĠĠ Ġprivate Ġval Ġlogic : ĠDependencies Dialog Logic Ċ ) Ġ: ĠClose By Escape Dialog ( owner , Ġ" Selected Ġmethods ", Ġfalse ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdependencies ListModel Ġ= ĠElements Model () ĊĠĠĠ Ġprivate Ġval Ġtable Ġ= ĠJ Fixed Width Table ( dependencies ListModel ) ĊĠĠĠ Ġprivate Ġval Ġstatus Label Ġ= ĠJLabel () ĊĠĠĠ Ġprivate Ġval Ġonly Construct ors Checkbox Ġ= ĠJ CheckBox (" Only Ġconstructors ") ĊĠĠĠ Ġprivate Ġvar Ġlast Selected Items : ĠList < Profile Data > Ġ= Ġempty List () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Scroll Ġ= ĠJ ScrollPane ( table ) ĊĠĠĠĠĠĠĠ Ġval Ġsort er Ġ= ĠC yc lic TableRow Sorter ( table . model ) ĊĠĠĠĠĠĠĠ Ġval Ġcopy Stroke Ġ= ĠKey Stroke . getKey Stroke ( KeyEvent . VK _ C , ĠToolkit . getDefault Toolkit (). menu Shortcut Key Mask , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġtable . register Keyboard Action ( Copy Action (), Ġ" Copy ", Ġcopy Stroke , ĠJ Component . WHEN _ FOC USED ) ĊĊĠĠĠĠĠĠĠ Ġtable . row Sorter Ġ= Ġsort er ĊĠĠĠĠĠĠĠ Ġsort er . set Comparator ( 1 , ĠComparator < Double > Ġ{ Ġv 1 , Ġv 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 . compareTo ( v 2 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġsort er . set Comparator ( 2 , ĠComparator < Double > Ġ{ Ġv 1 , Ġv 2 Ġ-> Ġv 1 . compareTo ( v 2 ) Ġ}) ĊĠĠĠĠĠĠĠ Ġsort er . set Comparator ( 3 , ĠComparator < Double > Ġ{ Ġv 1 , Ġv 2 Ġ-> Ġv 1 . compareTo ( v 2 ) Ġ}) ĊĠĠĠĠĠĠĠ Ġsort er . set Comparator ( 4 , ĠComparator < Double > Ġ{ Ġv 1 , Ġv 2 Ġ-> Ġv 1 . compareTo ( v 2 ) Ġ}) ĊĠĠĠĠĠĠĠ Ġtable . add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( evt : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġevt . source Ġas ĠJ Fixed Width Table ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( evt . click Count Ġ== Ġ 2 ) Ġ{ Ġ// ĠDouble - click Ġdetected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Row Ġ= Ġtable . row At Point ( evt . point ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel RowIndex Ġ= Ġtable . convert RowIndex To Model ( view Row ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogic . on Profile Data Selected ( dependencies ListModel . item At ( model RowIndex )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . mouse Clicked ( evt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġtable . setDefault Renderer ( Double :: class . java , ĠDouble Renderer ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġcopy Button Ġ= ĠJButton (" Copy "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogic . copy To Clipboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsave ToFile Button Ġ= ĠJButton (" Export Ġto Ġfile "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogic . save ToFile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbuttons Panel Ġ= ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( copy Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( save ToFile Button ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( only Construct ors Checkbox ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstatus Panel Ġ= ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= ĠBe vel Border ( Be vel Border . LOWER ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( status Label , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Panel Ġ= ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( buttons Panel , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( status Panel , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠJPanel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ= ĠBorderLayout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( list Scroll , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( bottom Panel , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred Size Ġ= ĠDimension ( 6 4 0 , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġborder Ġ= ĠEmpty Border ( 8 , Ġ 8 , Ġ 8 , Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsetup Construct ors Filter Checkbox () ĊĊĠĠĠĠĠĠĠ Ġcontent Pane Ġ= Ġcontent ĊĠĠĠĠĠĠĠ Ġpack () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Construct ors Filter Checkbox () Ġ{ ĊĠĠĠĠĠĠĠ Ġonly Construct ors Checkbox . addItem Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( only Construct ors Checkbox . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġlast Selected Items . filter Ġ{ Ġit . name . endsWith (" .< init >") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Items List ( filtered ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Items List ( last Selected Items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Dependencies ( items : ĠList < Profile Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Selected Items Ġ= Ġitems ĊĠĠĠĠĠĠĠ Ġif Ġ( only Construct ors Checkbox . isSelected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġlast Selected Items . filter Ġ{ Ġit . name . endsWith (" .< init >") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Items List ( filtered ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Items List ( last Selected Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Items List ( items : ĠList < Profile Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdependencies ListModel . set Items ( items ) ĊĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġ" Items Ġcount : Ġ${ items . size }" ĊĠĠĠĠĠĠĠ Ġrep aint () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠCopy Action Ġ: ĠActionListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAction Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . action Command . compareTo (" Copy ") Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs bf Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum cols : ĠInt Ġ= Ġtable . column Model . column Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Rows : ĠInt Ġ= Ġtable . selected RowCount ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Rows Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . showMessageDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġ" Invalid ĠCopy ĠSelection ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid ĠCopy ĠSelection ", ĠJOptionPane . ERROR _ MESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġtable . selected Rows . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Index Ġ= Ġtable . convert RowIndex To Model ( table . selected Rows [ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġnum cols ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bf . append ( table . getValue At ( model Index , Ġx )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bf . append ( String . format ("% . 3 f ", Ġtable . getValue At ( model Index , Ġx ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ< Ġnum cols Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bf . append ("\ t ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y Ġ< Ġnum Rows Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bf . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Selection Ġ= ĠString Selection ( s bf . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclipboard Ġ= ĠToolkit . getDefault Toolkit (). system Clipboard ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclipboard . set Contents ( string Selection , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ