<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