package Ġcanvas . controllers Ċ Ċ import Ġcanvas . data . State Ċ import Ġcanvas . views . Drag gable Ċ import Ġjavafx . collections . Observable Set Ċ import Ġjavafx . scene . input . MouseEvent Ċ import Ġt orn ad of x .* Ċ Ċ class ĠDrag gable Controller Ġ: ĠController () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġoffset X Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġoffset Y Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġfun Ġset Drag Offset ( item : ĠDrag gable , Ġevent : ĠMouseEvent ){ ĊĠĠĠĠĠĠĠ Ġoffset X Ġ= Ġitem . x Pos Ġ- Ġevent . scene X ĊĠĠĠĠĠĠĠ Ġoffset Y Ġ= Ġitem . y Pos Ġ- Ġevent . scene Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdrag Item ( item : ĠDrag gable , Ġevent : ĠMouseEvent ){ ĊĠĠĠĠĠĠĠ Ġitem . x Pos Ġ= Ġoffset X Ġ+ Ġevent . scene X ĊĠĠĠĠĠĠĠ Ġitem . y Pos Ġ= Ġoffset Y Ġ+ Ġevent . scene Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdrag Group ( drag ged State : ĠState , Ġgroup : ĠObservable Set < State >, Ġevent : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew X Ġ= Ġoffset X Ġ+ Ġevent . scene X ĊĠĠĠĠĠĠĠ Ġval Ġnew Y Ġ= Ġoffset Y Ġ+ Ġevent . scene Y ĊĊĠĠĠĠĠĠĠ Ġgroup . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġdrag ged State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . x Pos Ġ= Ġnew X Ġ+ Ġ( it . x Pos Ġ- Ġdrag ged State . x Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . y Pos Ġ= Ġnew Y Ġ+ Ġ( it . y Pos Ġ- Ġdrag ged State . y Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrag ged State . y Pos Ġ= Ġnew Y ĊĠĠĠĠĠĠĠ Ġdrag ged State . x Pos Ġ= Ġnew X ĊĠĠĠ Ġ} Ċ }