In using drag and drop, a user selects and drags a component on screen by mousing on the component and holding the left mouse button down. At that point, all open connections on that component are highlighted.
If the dragged component is already positioned by a connection, that connection is broken and the corresponding connector is added to the highlighted connection points. Any other existing connections on the dragged object are ignored. They are still technically connected to the dragged object, but for now, the graphics pane will reflect the movement of only the selected component; any other parts will move at the end of the drag session.
Next, kBridge determines all potential matching connection points in the scene. Any within a given proximity limit to a dragged connector are highlighted. The set of potential matches are those that meet the Key Pair criteria in the previous topic.
The nearest matching connection is highlighted by a color change, indicating that a "current match" has been created. Ending the drag (i.e., releasing the mouse button) at this point will cause the plug to mate to the socket via the matching Frames. Otherwise, the drag session continues as the mouse moves, and along the way, the closest match is highlighted and every potential connection is highlighted.
The point at which the distances are computed is the origin of the localTransform of the connector.
At the end of the drag session, a new Rule is automatically created for the position parameter of the dragged object. This rule is a position constraint that names the connectors involved.