DynamicModule[{pts, range, gr, drag, pts0},
pts = RandomReal[1, {7, 2}];
range = {Span[1, 4], Span[5, 7]};
gr = {{Red, Polygon[Dynamic[pts[[range[[1]]]]]]}, {Blue,
Polygon[Dynamic[pts[[range[[2]]]]]]}};
drag = 0;
Panel[
LocatorPane[
Dynamic[pts],
EventHandler[
Graphics[
EventHandler[
gr[[#]],
{
"MouseDown" :> (drag = #;
pts0 = # - MousePosition["Graphics"] & /@ pts[[range[[#]]]])
}
] & /@ {1, 2},
PlotRange -> {{0, 2}, {0, 2}}
],
{
"MouseDragged" :>
If[drag > 0,
pts[[range[[drag]]]] = # + MousePosition["Graphics"] & /@ pts0],