package Ġexample Ċ Ċ import Ġjava . awt .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjava . awt . datat rans fer . Data Flavor Ċ import Ġjava . awt . d nd . Dn D Constants Ċ import Ġjava . awt . d nd . Drop Target Ċ import Ġjava . awt . d nd . Drop Target Adapter Ċ import Ġjava . awt . d nd . Drop Target Drag Event Ċ import Ġjava . awt . d nd . Drop Target Drop Event Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjavax . swing .* Ġ// Ġk tl int - disable Ġno - wildcard - imports Ċ import Ġjavax . swing . table . Default TableModel Ċ Ċ fun Ġmake UI (): ĠComponent Ġ{ ĊĠ Ġval Ġmodel Ġ= ĠFile Model () ĊĠ Ġval Ġtable Ġ= ĠJ Table ( model ) ĊĠ Ġtable . auto Create Row Sorter Ġ= Ġtrue ĊĠ Ġtable . fill s Viewport Height Ġ= Ġtrue ĊĠ Ġtable . component PopupMenu Ġ= ĠTable PopupMenu () ĊĠ Ġtable . column Model . getColumn ( 0 ). also Ġ{ ĊĠĠĠ Ġit . min Width Ġ= Ġ 6 0 ĊĠĠĠ Ġit . maxWidth Ġ= Ġ 6 0 ĊĠĠĠ Ġit . resizable Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġval Ġd tl Ġ= Ġobject Ġ: ĠDrop Target Adapter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdrag Over ( e : ĠDrop Target Drag Event ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( e . is Data Flavor Supported ( Data Flavor . java FileList Flavor )) Ġ{ ĊĠĠĠĠĠĠĠ Ġe . accept Drag ( Dn D Constants . ACTION _ COPY ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġe . reject Drag () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdrop ( e : ĠDrop Target Drop Event ) Ġ{ ĊĠĠĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . is Data Flavor Supported ( Data Flavor . java FileList Flavor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġe . accept Drop ( Dn D Constants . ACTION _ COPY ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġe . transfer able . get Transfer Data ( Data Flavor . java FileList Flavor ) Ġas ? ĠList < *> ĊĠĠĠĠĠĠĠĠĠ Ġlist ?. filter Is Instance < File >() ?. forEach Ġ{ Ġmodel . add Path ( it . to Path ()) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġe . drop Complete ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġe . reject Drop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠ Ġe . reject Drop () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ ĠDrop Target ( table , ĠD n D Constants . ACTION _ COPY , Ġd tl , Ġtrue ) ĊĊĠ Ġreturn ĠJPanel ( Border Layout ()). also Ġ{ ĊĠĠĠ Ġit . add ( J ScrollPane ( table )) ĊĠĠĠ Ġit . preferred Size Ġ= ĠDimension ( 3 2 0 , Ġ 2 4 0 ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠFile Model Ġ: ĠDefault TableModel () Ġ{ ĊĠ Ġprivate Ġvar Ġnumber Ġ= Ġ 0 ĊĠ Ġfun Ġadd Path ( path : ĠPath ) Ġ{ ĊĠĠĠ Ġsuper . add Row ( array Of ( number ++, Ġpath . fileName , Ġpath . to AbsolutePath ())) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġis Cell Editable ( row : ĠInt , Ġcol : ĠInt ) Ġ= ĠCOLUMN _ ARRAY [ col ]. is Editable ĊĊĠ Ġoverride Ġfun Ġget Column Class ( column : ĠInt ) Ġ= ĠCOLUMN _ ARRAY [ column ]. column Class ĊĊĠ Ġoverride Ġfun Ġget Column Count () Ġ= ĠCOLUMN _ ARRAY . size ĊĊĠ Ġoverride Ġfun Ġget ColumnName ( column : ĠInt ) Ġ= ĠCOLUMN _ ARRAY [ column ]. columnName ĊĊĠ Ġprivate Ġdata Ġclass ĠColumn Context ( val ĠcolumnName : ĠString , Ġval Ġcolumn Class : ĠClass <* >, Ġval Ġis Editable : ĠBoolean ) ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠCOLUMN _ ARRAY Ġ= ĠarrayOf ( ĊĠĠĠĠĠ ĠColumn Context (" No .", ĠNumber :: class . java , Ġfalse ), ĊĠĠĠĠĠ ĠColumn Context (" Name ", ĠString :: class . java , Ġtrue ), ĊĠĠĠĠĠ ĠColumn Context (" Full ĠPath ", ĠString :: class . java , Ġtrue ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠTable PopupMenu Ġ: ĠJ PopupMenu () Ġ{ ĊĠ Ġprivate Ġval Ġdelete Ġ= Ġadd (" Remove Ġonly Ġfrom ĠJ Table ") ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġdelete . addActionListener Ġ{ ĊĠĠĠĠĠ Ġval Ġtable Ġ= Ġinvok er Ġas ? ĠJ Table ĊĠĠĠĠĠ Ġval Ġmodel Ġ= Ġtable ?. model ĊĠĠĠĠĠ Ġif Ġ( model Ġis ĠDefault TableModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġtable . selected Rows ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġselection . indices . reversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmodel . remove Row ( table . convert RowIndex To Model ( selection [ i ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow ( c : ĠComponent , Ġx : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( c Ġis ĠJ Table ) Ġ{ ĊĠĠĠĠĠ Ġdelete . isEnabled Ġ= Ġc . selected RowCount Ġ> Ġ 0 ĊĠĠĠĠĠ Ġsuper . show ( c , Ġx , Ġy ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ ĠEvent Queue . invoke Later Ġ{ ĊĠĠĠ Ġrun Catch ing Ġ{ ĊĠĠĠĠĠ ĠUI Manager . set Look And Feel ( UI Manager . getSystem Look And Feel ClassName ()) ĊĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠ ĠToolkit . getDefault Toolkit (). be ep () ĊĠĠĠ Ġ} ĊĠĠĠ ĠJ Frame (). apply Ġ{ ĊĠĠĠĠĠ Ġdefault Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠĠĠ Ġcontent Pane . add ( make UI ()) ĊĠĠĠĠĠ Ġpack () ĊĠĠĠĠĠ Ġset Location Relative To ( null ) ĊĠĠĠĠĠ Ġis Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ