package Ġt orn ad of x . test apps Ċ Ċ import Ġjavafx . scene . control . TableRow Ċ import Ġjavafx . scene . input . Clipboard Content Ċ import Ġjavafx . scene . input . Transfer Mode Ċ import Ġjavafx . scene . paint . Color Ċ import Ġjavafx . scene . text . Font Weight Ċ import Ġt orn ad of x .* Ċ import Ġt orn ad of x . tests . Person Ċ import Ġt orn ad of x . tests . Person Ref Ċ Ċ class ĠD ND Re order TableView App Ġ: ĠApp ( D ND Re order TableView :: class ) Ċ Ċ class ĠD ND Re order TableView Ġ: ĠView () Ġ{ ĊĠĠĠ Ġval Ġpeople Ġ= Ġobservable ListOf ( Person (" Bob ", Ġ 4 2 ), ĠPerson (" J ane ", Ġ 2 4 ), ĠPerson (" John ", Ġ 3 1 )) ĊĊĠĠĠ Ġoverride Ġval Ġroot Ġ= Ġtable view ( people ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolumn (" Name ", ĠPerson :: name Property ) ĊĠĠĠĠĠĠĠ Ġcolumn (" Age ", ĠPerson :: age Property ) ĊĊĠĠĠĠĠĠĠ Ġset On Drag Detected Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson Ġ= Ġif Ġ(! selection Model . isEmpty ) Ġselected Item Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( person Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrag board Ġ= Ġstart Drag And Drop ( Transfer Mode . MOVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrag board . setContent ( Clipboard Content (). apply Ġ{ Ġput ( Person . DATA _ FORMAT , ĠPerson Ref ( person . id )) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . consume () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠD ND Ġper Ġrow ĊĠĠĠĠĠĠĠ Ġset Row Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTable Row < Person >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Drag Over Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . drag board . has Content ( Person . DATA _ FORMAT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . accept Transfer Modes ( Transfer Mode . MOVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . consume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Drag Entered Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . drag board . has Content ( Person . DATA _ FORMAT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= Ġit . drag board . getContent ( Person . DATA _ FORMAT ) Ġas ĠPerson Ref ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ref . id Ġ!= Ġitem . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . BOLD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Fill Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . consume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Drag Exit ed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . consume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset On Drag Dropped Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . drag board . has Content ( Person . DATA _ FORMAT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrag ged Ref Ġ= Ġit . drag board . getContent ( Person . DATA _ FORMAT ) Ġas ĠPerson Ref ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdropped Person Ġ= Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget Index Ġ= Ġitems . indexOf ( d ropped Person ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Person Ġ= Ġitems . find Ġ{ Ġit . id Ġ== Ġdrag ged Ref . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . move ( source Person , Ġtarget Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Drop Completed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Drop Completed Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . consume () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }