{
java.awt.Point p = new java.awt.Point( e.getPoint().x-lastMousePosition.x,
e.getPoint().y-lastMousePosition.y);
lastMousePosition = e.getPoint();
FPoint delta = transformer.inverseTransform(p);
IVennObject obj = currentNode.vennObject;
FPoint newP = obj.getOffset().add(delta);
double x = newP.getX(),
y = newP.getY();
if( obj.getBoundingBox().getMinX() + delta.getX() < 0.0 )
x = 0.5*obj.getBoundingBox().getWidth();
else
if( obj.getBoundingBox().getMaxX() + delta.getX() > 1.0 )
x = 1.0-0.5*obj.getBoundingBox().getWidth();
if( obj.getBoundingBox().getMinY() + delta.getY() < 0.0 )
y = 0.5*obj.getBoundingBox().getHeight();
else
if( obj.getBoundingBox().getMaxY() + delta.getY() > 1.0 )
y = 1.0-0.5*obj.getBoundingBox().getHeight();
obj.setOffset( new FPoint(x,y) );
tree.invalidate();
invalidateView();
repaint();
}
}