<Swing Dev> [9] Review request for 8154431: Allow source and target based validation for the focus transfer between two JComponents.
Phil Race
philip.race at oracle.com
Tue Apr 19 21:11:04 UTC 2016
PS I see the class doc talks about shouldYieldFocus() being called,
so I don't understand the inter-relationship of that and verify(), but
it makes me no more sure that deprecating that method is right.
I think perhaps verify() is all that the app is supposed to have over-ridden
and the comments are written on the assumption it would not over-ride
anything else.
So perhaps the design mistake could be that shouldYieldFocus() was not
final.
Maybe your new one should be - if it is public at all ...
BTW you removed text that says
Before focus is transfered to another Swing component
The key word here is SWING - I looked at the JComponent code
and it returns true if either source or target is not a JComponent,
without ever getting near the call to shouldYieldFocus().
-phil.
On 04/19/2016 12:41 PM, Phil Race wrote:
> On 04/19/2016 11:05 AM, Semyon Sadetsky wrote:
>> On 4/19/2016 7:47 PM, Phil Race wrote:
>>> Hi,
>>>
>>> You are deprecating shouldYieldFocus(JComponent) and yet this class
>>> directly uses it.
>>> Is this deprecation really the right thing to do ?
>> Why is this not correct? There are plenty examples in JDK:
>> Component#setVisible() & Component#show(), Component#transferFocus()
>> & Component#nextFocus(), etc...
>> This is necessary for backward compatibility.
>
> My question is why deprecate it ?
>
> So far as I can see unless some one wants to over-ride verifyTarget()
> they are
> fine to continue over-riding this method and ignore the new one.
>
> Leaving aside the merits of those previous changes, and at least one
> of those I think was dubious,
> all you have done is at an @Deprecated annotation. There is no
> @deprecated javadoc tag, and you
> have left doc which says when this method is called. In fact that doc
> is now very misleading.
> It is not called. You call the new one.
>
>
> BTW I see you mis-spell over-ridden as overriden in verifyTarget(..)
>
>>>
>>> The new over-loaded shouldYieldFocus() is perhaps not much more than
>>> a utility.
>>> And the doc says "calls verify(input)" which seems odd since you do not
>>> directly call it. And you are just describing what the default
>>> implementation
>>> does aren't you ?
>> This is also necessary for compatibility. There may be
>> implementations of the InputVerify where the shouldYieldFocus() is
>> overloaded since it is public (that was initial design mistake, I
>> suppose). At the same time the shouldYieldFocus() is the entry point
>> that plugs InputVerify into the JComponent.
>> But you are correct "calls verify(input)" is not precisely describes
>> what happens in this method. Maybe just make it more indirect, like
>> "validate the source and the target components..."?
>
> Now I am rather confused. You make it sound like verify() not
> shouldYieldFocus() is all the public
> API should have contained, but you are adding a public over-load of it.
> So why does this new method need to be public ? All you need is
> verifyTarget(), dont you ?
>
> -phil.
>
>
>>
>> --Semyon
>>>
>>> -phil.
>>>
>>> On 04/19/2016 04:40 AM, Semyon Sadetsky wrote:
>>>> Hello,
>>>>
>>>> Please review fix for JDK9:
>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8154431
>>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8154431/webrev.00/
>>>>
>>>> The thing is the Swing validation doesn't allow to validate state
>>>> of the target component of input focus transfer operation.
>>>> To support that the fix adds two new methods
>>>> verifyTarget(JComponent target) and shouldYieldFocus(JComponent
>>>> source, JComponent target) to the javax.swing.InputVerifier class,
>>>> and its old shouldYieldFocus(JComponent input) is marked as
>>>> deprecated.
>>>> The solution guaranties full compatibility with previous JDK versions.
>>>>
>>>> --Semyon
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20160419/591019f6/attachment.html>
More information about the swing-dev
mailing list