package Ġfeature a . studio . editor . features Ċ Ċ import Ġfeature a . Application Ċ import Ġfeature a . desktop . Main Panel Proxy Ċ import Ġfeature a . desktop . j fx . on MouseEvent Ċ import Ġfeature a . math . Size Ċ import Ġfeature a . math . Vector 2 Ċ import Ġfeature a . runtime . Component Ċ import Ġfeature a . runtime . import Ċ import Ġfeature a . studio . editor . Editor Ċ import Ġfeature a . studio . editor . components . Selection Service Ċ import Ġfeature a . studio . editor . components . is Mov able Ċ import Ġfeature a . window . Window Ċ import Ġfeature a . window . to Local Coordinates Ċ import Ġfeature a . window . to Local Dimensions Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . awt . event . MouseEvent . BUTTON 1 Ċ import Ġjavax . swing . JPanel Ċ Ċ fun ĠComponent . move Selection () Ġ{ ĊĠĠĠ Ġval Ġeditor : ĠEditor Ġ= Ġimport () ĊĠĠĠ Ġval Ġapp : ĠApplication Ġ= Ġimport () ĊĠĠĠ Ġval Ġmain Panel : ĠJPanel Ġ= Ġimport ( Main Panel Proxy ) ĊĠĠĠ Ġval Ġselection Resize Feature : ĠSelection Resize Feature Ġ= Ġimport () ĊĠĠĠ Ġval Ġselection Service : ĠSelection Service Ġ= Ġimport () ĊĠĠĠ Ġval Ġselect Region Feature : ĠSelect Region Editor Feature Ġ= Ġimport () ĊĠĠĠ Ġval Ġwindow : ĠWindow Ġ= Ġimport () ĊĠĠĠ Ġval Ġutility Size : ĠSize . Result Ġ= ĠSize (). Result () ĊĠĠĠ Ġval Ġutility Vector : ĠVector 2 . Result Ġ= ĠVector 2 (). Result () ĊĊĠĠĠ Ġvar Ġlast X : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlast Y : ĠInt ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġis Enable : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġvar Ġis First : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġfun Ġreset Drag () Ġ{ ĊĠĠĠĠĠĠĠ Ġlast X Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġis Enable Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis First Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmain Panel . on MouseEvent ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Drag ged ( event : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfilter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app . is Enable ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app . frame Count Ġ== Ġ 0 L ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selection Resize Feature . isActive ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . button Ġ!= ĠBUTTON 1 ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selection Service . selection Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( select Region Feature . is Enable ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis First Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( x , Ġy ) Ġ= Ġwindow . to Local Coordinates ( editor . delegate . camera , Ġevent . x . toFloat (), Ġevent . y . toFloat (), Ġutility Vector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Enable Ġ= Ġselection Service . selections . any Ġ{ Ġit . is Mov able () Ġ&& Ġit . rectangle . contains ( x , Ġy ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġglobal Dx : ĠInt Ġ= Ġevent . x Ġ- Ġ( last X Ġ?: Ġevent . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġglobal Dy : ĠInt Ġ= Ġevent . y Ġ- Ġ( last Y Ġ?: Ġevent . y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( dx , Ġdy ) Ġ= Ġ Ġwindow . to Local Dimensions ( editor . delegate . camera , Ġglobal Dx . toFloat (), Ġglobal Dy . toFloat (), Ġutility Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselection Service . move Selections ( dx , Ġdy , Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġevent . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Released ( event : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app . frame Count Ġ== Ġ 0 L ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Drag () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Exit ed ( event : ĠMouseEvent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app . frame Count Ġ== Ġ 0 L ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Drag () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ}) Ċ } Ċ