Hi Magnus,

Why can't we just use modelToView2D() to get Rectangle2D and then cast to Rectangle tobe used in scrollRectToVisible() or else use (int)Rectangle2D.getX(), (int)getY(), getWidth(), getHeight() to construct a new Rectangle()?

Regard
Prasanta
On 15-Apr-20 3:35 PM, Magnus Ihse Bursie wrote:
Hi swing-dev,

Do you have any other suggestions for how to resolve the deprecation of modelToView() in this code?

Basically, the code does this:

       Rectangle rect = source.modelToView(offset);
       source.scrollRectToVisible(rect);

but scrollRectToVisible() requires a Rectangle (a subtype of Rectangle2D), and modelToView() is deprecated with reference to modelToView2D(), which returns a Rectangle2D, which is thus unusable by scrollRectToVisible(). I also cannot find a way to create a new Rectangle, given a Rectangle2D.

In practice, under the hood, it's still just Rectangles (not Rectangle2D).

/Magnus

On 2020-04-15 11:37, David Holmes wrote:
Hi Magnus,

This one sounds like it needs a Swing/Java2D developer to review it :)

Cheers,
David

On 15/04/2020 7:13 pm, Magnus Ihse Bursie wrote:
After JDK-8242804, a few places remain which are using deprecated methods. They too should be fixed, and the deprecation warning should no longer be disabled.

This patch presupposes the fix for JDK-8242804 has been applied (otherwise we cannot turn the deprecation warning back on).

Some brief comments about each fix:

* In ConstantPool.java, there was a boxing deprecation that I missed in JDK-8242804 (sorry!)

* In HighPrecisionJScrollBar.java, there is a trivial replacement to use BigDecimal.divide with RoundingMode semantics.

* In SourceCodePanel.java, I settled for suppressing the warning. The issue here is that modelToView (which returns a Rectangle) is deprecated in favor of modelToView2D, which returns a Rectangle2D (which is a supertype of Rectangle). But we use the result in scrollRectToVisible, and there exist no version of that which accepts a Rectangle2D instead of a Rectangle, nor a way to created a Rectangle from a Rectangle2D (that I could find). In practice, this is just a game of types -- under the hood, modelToView2D still returns a Rectangle (even though it only promises a Rectangle2D). The alternative here would be to cast the result of modelToView2D to a Rectangle, but I found that less attractive.

* In JTreeTable.java, I've replaced the use of the old-style modifier mask with the new-style extended modifier mask. To the best of my understanding, this will just work the same for the code here (and for the MouseEvent constructor, using the extended mask is actually prescribed).

Bug: https://bugs.openjdk.java.net/browse/JDK-8242808
WebRev: http://cr.openjdk.java.net/~ihse/JDK-8242808-fix-all-SA-deprecation/webrev.01


Reply via email to