I wonder form
which tool would I have to inherit and which method of it would I have to
override to achieve custom moving logic for the elements in my diagrams (after
the move there shouldn’t be any overlapping elements). I handle the dragging
logic, which enables to drag my elements into/out of SubGraphs in a custom tool
that inherits from GoToolDragging (in the overridden method DoDragging()). The
option to override the DoMove() method of my elements is not expectable,
because I want all the custom behavior saved in tools, so the design of my program
is more clear.
If you really need to have the code in a tool, then your custom GoToolDragging subclass is the right place.
But I would just implement a GoView.SelectionMoved (and maybe a GoView.SelectionCopied, if appropriate) event handler to check each of the nodes in the GoView.Selection.
Dragging is moving an element with the SHIFT key pressed, to manipulate that I override: GoToolDragging.DoDragging()!
Moving is moving an element without any key pressed, which method in which tool is called when I do that??? That is the method I would have to override!