Hi Paul,
> I have been using VisAD for visualization apps and
> I really like it. For one situation I wanted
> a RangeSlider that would only allow endpoints
> from a range of tickmarked values, such as 1.
> to 100. in steps of 3.0.
>
> The most obvious way to do this involved a
> small change to a private method in the current
> source for RangeSlider. In the main class I
> replaced:
> private float gripToValue(int pos, int width) {
> return (((maxLimit - minLimit) * ((float) (pos -
> GRIP_WIDTH))) /
> (float) (width - (GRIP_WIDTH * 2))) + minLimit;
> }
>
> With:
> private float gripToValue(int pos, int width) {
> return adjustValue( (((maxLimit - minLimit) *
> ((float) (pos - GRIP_WIDTH))) /
> (float) (width - (GRIP_WIDTH * 2))) + minLimit
> );
> }
> public float adjustValue(float val) { return val ; }
>
> And this allowed me to do what I need in a subclass.
> But this means that I need to include the original
> RangeSlider source, and to maintain it if it changes
> in future versions of VisAD.
>
> Is there a better way to create the RangeSlider I
> want that would not involve future code maintaince?
> Or would it be possible to have this sort of change
> incorporated into the standard distribution?
I'm happy to make these methods accessible so you can
extend the visad.browser.RangeSlider class. But I think
it would be cleaner to just change gripToValue() and
valueToGrip() from private to protected. Does that work
for you? Any other VisAD developers have a comment?
Cheers,
Bill