Hello Dmitry

The fix looks good to me as well

I should say that the final version is much better than the first one,
thank you Anthony for the thorough review!

alexp

On 8/23/2013 4:18 PM, dmitry markov wrote:
Hi Anthony,

Thank you for your comments. I changed the fix based on your suggestions. Please find new webrev at http://cr.openjdk.java.net/~dmarkov/8023474/webrev.01/.
Could you review it, please?

Thanks,
Dmitry

On 22/08/2013 17:28, Anthony Petrov wrote:
Hi Dmitry,

A few comments:

1. The concept of validate roots has been extended to AWT components since JDK 7. Therefore, I suggest to use the same logic regardless of whether the editor is an instance of JComponent or not.

2. What you're trying to implement here, is actually called revalidateSynchronously(), as opposed to the regular revalidate() method, which in Swing is asynchronous. I believe that rS() might be very much useful in many cases. Therefore, I suggest to add a package-private java.awt.Component.revalidateSynchronously(), and call it via the AWTAccessor from BasicTreeUI.java. Note that the current Component.revalidate() should simply call the new rS() directly, and the rS() may reuse the current implementation of the Component.revalidate().

3.
2230 // The implementation of the method is copied from SwingUtilities

Copying an implementation is almost always wrong. It might be better to access a method from another package via e.g. an accessor, or reflection, or otherwise find a way to share this code rather than copy it. However, I think you won't need this code anyway if we implement the suggestion #2 above.

4. Is there a similar problem with JTable custom editors? What else Swing components allow for editors?

As far as I know, JTable does not have this problem.
--
best regards,
Anthony

On 08/22/13 15:08, dmitry markov wrote:
Hello,

Could you review the fix, please?
bug: http://bugs.sun.com/view_bug.do?bug_id=8023474
webrev: http://cr.openjdk.java.net/~dmarkov/8023474/webrev.00/

The method BasicTreeUI.startEditing() should find the first valid root
for the editingComponent and call validateUnconditionally() for it
instead of editingComponent.revalidate() invocation.

Thanks,
Dmitry


Reply via email to