<AWT Dev> <AWT dev>[9] Review request for 8154434: Open the request focus methods of the java.awt.Component which accept FocusEvent.Cause

Semyon Sadetsky semyon.sadetsky at oracle.com
Tue Apr 26 13:14:42 UTC 2016

On 4/26/2016 3:49 PM, Philip Race wrote:
> > In applications one may need to know the reason why focus is requested
> I do not mean why should apps want to *know* the cause.
> I am asking why apps should be able to *specify* the cause as
> proposed by this change.
> Being "symmetric" is not a sufficient reason.
I just clarified that there are no a lot of needs for apps here.
But if a framework is developed it may require to develop a custom 
implementation of KeyboardFocusManager, for example. Such KFM may simply 
override any logic that uses focus cause.
Just from general consideration: JFC have been made open for extensions.

> -phil.
> On 4/26/16, 12:27 AM, Semyon Sadetsky wrote:
>> On 4/25/2016 10:33 PM, Phil Race wrote:
>>> You will need to convince me of the appropriateness of opening these 
>>> methods.
>>> It seems to me that are for the focus system, not for applications.
>>> Why should an application be allowed to say "I would like component 
>>> X" to
>>> receive focus and tell it the reason is a mouse event" when in fact 
>>> it is nothing of the kind.
>> This is a continuation of the 8080395. I think it would be mostly 
>> interesting for framework developers not for applications.
>> In applications one may need to know the reason why focus is 
>> requested to the component before the focus is set to it.
>> As I heard from Anton (that was his task initially) opening the cause 
>> was requested by some client, but, unfortunately, I don't have any 
>> references.
>> --Semyon
>>> I would like to hear from others if they see a valid use case and 
>>> that there are no
>>> down-sides to mis-use.
>>> -phil.
>>> On 04/19/2016 02:30 AM, Semyon Sadetsky wrote:
>>>> Hello,
>>>> Please review fix for JDK9:
>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8154434
>>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8154434/webrev.00/
>>>> To support the new FocusEvent cause concept introduced by 
>>>> JDK-8080395 the next package-private methods of the 
>>>> java.awt.Component class are opened in the fix:
>>>> boolean requestFocus(FocusEvent.Cause cause)  -> public void 
>>>> requestFocus(FocusEvent.Cause cause)
>>>> boolean requestFocus(boolean temporary, FocusEvent.Cause cause) -> 
>>>> protected boolean requestFocus(boolean temporary, FocusEvent.Cause 
>>>> cause)
>>>> boolean requestFocusInWindow(FocusEvent.Cause cause) -> public 
>>>> boolean requestFocusInWindow(FocusEvent.Cause cause)
>>>> The methods are changed to be symmetric with the focus request 
>>>> methods of the same class which do not accept the cause parameter.
>>>> The method requestFocus(FocusEvent.Cause cause) was changed to 
>>>> return no value similarly to the requestFocus() because the 
>>>> returning boolean true cannot guarantee the focus gain.
>>>> --Semyon

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20160426/b6d06bbc/attachment.html>

More information about the awt-dev mailing list