The drag handler is handy. If subclassed, it can be used to drag all sorts of things.
The best way to subclass it currently is to override the handler.callback to do custom event handling before actually issuing calls to the control. This is not a good solution because you only get what the drag handler passes to the callbacks on the control - namely the pixel related to the event. This doesn't allow the subclassed handler to check other things about the event (key modifiers for example).
The other way to subclass the drag handler is to override all of the methods that correspond to browser events, duplicating what is done in drag and adding custom behavior. This is a lot of duplicated code.
If the drag handler is given down, move, up, and out methods that are called during it's own mousedown, mousemove, mouseup, and mouseout handling, it makes for easier subclassing.
Patch forthcoming.
Example to follow.