refactored ConstrainedDragAndDropView for ease of subclassing