I seem to be in some confusion about crosshairs, trace lines, and markers.

I'll try to describe what I want to achieve: I have a simple 2D x/y line plot. I want a crosshair cursor to be continuously updated during mouse movements, with the x crosshair following the mouse and the y crosshair moving to the respective y value. So this seems to be a variant of the trace lines where the y line is not following the mouse movements but depends on the data.
What I did is this: To use the crosshair lines I overwrote mouseMoved() in my derived ChartPanel class and call mouseClicked() in it. This does the trick of continuously updating the crosshair cursor but it unnecessarily redraws the entire chart. First area for improvement.

Secondly, I do not seem to get the desired effect with the call of setRangeCrosshairLockedOnData(true) - the range crosshair strangely remains locked on the highest value and never changes. This might be a misunderstanding on my side - perhaps I need to always set the range crosshair value myself if it is to lock on data? Any hint here?
Perhaps I am using the wrong feature and somebody can enlighten me about the purpose of crosshairs, trace lines, and markers, e.g. is there a way to use the trace lines for what I want to achieve?
Next step will be a feature by which the user clicks on the chart thus setting a marker to the current crosshair point, then by moving the crosshair away from this point, the distances between that marker and the current crosshair are continuously displayed in a corner of the plot.
Has anybody got some experience with applications like this and could possibly give me a helping hand? Any hint will be welcome.
