<Swing Dev> [Accessibility]Focus unable to traverse in the menubar
Frank Ding
dingxmin at linux.vnet.ibm.com
Fri Jan 18 06:53:19 UTC 2013
Hi Alexandr,
Could you please let me know if there is any update on review
result? I did not receive any review information of 2401619 which means
it's still not public/reviewed yet, right?
Best regards,
Frank
On 12/18/2012 2:36 PM, Frank Ding wrote:
> Thanks, Alexandr.
>
> On 12/14/2012 8:40 PM, Alexander Scherbatiy wrote:
>> On 12/13/2012 1:01 PM, Frank Ding wrote:
>>> Hi Alexandr,
>>> I made another change according to your comment @
>>> http://cr.openjdk.java.net/~dingxmin/8000326/webrev.02 . Please
>>> review it.
>>> I submitted a bug whose internal review ID is 2401619 about one
>>> wording mistake in ContainerOrderFocusTraversalPolicy. But since the
>>> bug system transition, newly submitted bugs cannot pass review and
>>> get publicly available. Can you help me to have somebody review it?
>>
>> I resent the both issues 8000326 and 2401619 to the JDK doc team
>> to review.
>>
>> Thanks,
>> Alexandr.
>>
>>>
>>> Thanks and Best regards,
>>> Frank
>>>
>>> On 12/12/2012 10:07 PM, Alexander Scherbatiy wrote:
>>>> On 12/10/2012 11:08 AM, Frank Ding wrote:
>>>>> Hi Pavel,
>>>>> I think pointing out the special behavior in javadoc makes more
>>>>> sense. Could you please take a look at my draft below?
>>>>> http://cr.openjdk.java.net/~dingxmin/8000326/webrev.01
>>>> I think that It has more sense to point this special behavior
>>>> in the JMenuBar class itself.
>>>> It looks more naturally to read about the JMenuBar focus
>>>> traversal behaviour from the JMenuBar javadoc.
>>>>
>>>>> Note that I think in the sentence "By default, methods of this
>>>>> class with return a Component only if it is" it should be "will"
>>>>> not "with", shouldn't it?
>>>> Thank you that you point it out. Could you create an issue on it?
>>>>
>>>> Thanks,
>>>> Alexandr.
>>>>>
>>>>> Expecting your reply.
>>>>> Best regards,
>>>>> Frank
>>>>>
>>>>> On 10/8/2012 7:47 PM, pavel porvatov wrote:
>>>>>> Hi Jonathan,
>>>>>>> Hi Pavel,
>>>>>>>
>>>>>>> On 10/02/2012 11:31 PM, Pavel Porvatov wrote:
>>>>>>>> Hi Jonathan,
>>>>>>>>> Hi Pavel,
>>>>>>>>>
>>>>>>>>> I've filed bug 7198816 for this problem,
>>>>>>>>>
>>>>>>>>> Regards, Pavel
>>>>>>>>> http://bugs.sun.com/view_bug.do?bug_id=7198816
>>>>>>>> This bug was not ported to jira, so I created another bug:
>>>>>>>> https://jbs.oracle.com/bugs/browse/JDK-8000326
>>>>>>>
>>>>>>> Thanks for porting, but I have trouble with opening that link.
>>>>>> Sorry, use the following link:
>>>>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8000326
>>>>>>
>>>>>> but the bug is not available yet... It contains the same
>>>>>> description as the original bug.
>>>>>>
>>>>>>> Any comments on the patch?
>>>>>> The fix looks dangerous for me. After the fix the
>>>>>> setFocusTraversalKeysEnabled method doesn't work for JMenuBar
>>>>>> (when ContainerOrderFocusTraversalPolicy is used) - it ignores
>>>>>> this property...
>>>>>>
>>>>>> Regards, Pavel
>>>>>>>
>>>>>>> best regards
>>>>>>> Jonathan
>>>>>>>
>>>>>>>>
>>>>>>>> Regards, Pavel
>>>>>>>>>
>>>>>>>>> On 11/09/2011 07:25 PM, Pavel Porvatov wrote:
>>>>>>>>>> Hi Jing,
>>>>>>>>>>> Thanks Pavel,
>>>>>>>>>>>
>>>>>>>>>>> It seems fine to me, if no other suggestions/opinions,
>>>>>>>>>>> I guess we can move on with this?
>>>>>>>>>> Yes, we can. Could you please file a bug for the problem as
>>>>>>>>>> well?
>>>>>>>>>>
>>>>>>>>>> Thanks, Pavel
>>>>>>>>>>>
>>>>>>>>>>> On 2011/11/2 19:58, Pavel Porvatov wrote:
>>>>>>>>>>>> Hi Jing,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hello Anton,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks for the review. I am still trying to figure out
>>>>>>>>>>>>> some real case and provide more detail the customer may fail.
>>>>>>>>>>>>> Anyway, I agree we'd better update the java spec to
>>>>>>>>>>>>> make it clear for the customers. I'd like to know if
>>>>>>>>>>>>> anyone can help with that?
>>>>>>>>>>>> I'm not sure that javadoc changing is a good decision in
>>>>>>>>>>>> this case. ContainerOrderFocusTraversalPolicy is designed
>>>>>>>>>>>> for AWT, but I don't know why that policy cannot be used
>>>>>>>>>>>> for Swing components as well. I see several problems:
>>>>>>>>>>>> 1. We cannot change javadoc of
>>>>>>>>>>>> ContainerOrderFocusTraversalPolicy because of backward
>>>>>>>>>>>> compatibility
>>>>>>>>>>>> 2. We cannot remove setFocusTraversalKeysEnabled(false)
>>>>>>>>>>>> from the JMenuBar#JMenuBar() constructor because of
>>>>>>>>>>>> backward compatibility
>>>>>>>>>>>>
>>>>>>>>>>>> May be the best decision is to specify, that JMenuBar
>>>>>>>>>>>> creates menu with the focusTraversalKeysEnabled = false
>>>>>>>>>
>>>>>>>>> Did you mean that for the new menu
>>>>>>>>> setFocusTraversalKeysEnabled(false) ? I've tried, but it does
>>>>>>>>> not seem to work for this problem.
>>>>>>>>>
>>>>>>>>> if my understanding is incorrect, please help to fix me.
>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Regards, Pavel
>>>>>>>>>>>>>
>>>>>>>>>>>>> On 2011/10/12 20:54, Anton Tarasov wrote:
>>>>>>>>>>>>>> Hi Neil,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 10/10/2011 7:01 PM, Neil Richards wrote:
>>>>>>>>>>>>>>> On Mon, 2011-10-10 at 16:56 +0400, Anton Tarasov wrote:
>>>>>>>>>>>>>>>> Hi Neil and Jing,
>>>>>>>>>>>>>>>> I'm afraid that it's wrong to use
>>>>>>>>>>>>>>>> ContainerOrderFocusTraversalPolicy
>>>>>>>>>>>>>>>> for swing components. This policy is designed for AWT.
>>>>>>>>>>>>>>>> JMenuBar calls setFocusTraversalKeysEnabled(false) in
>>>>>>>>>>>>>>>> its ctor which
>>>>>>>>>>>>>>>> means that it "swallows" focus traversal keys (like
>>>>>>>>>>>>>>>> TAB/SHIFT-TAB
>>>>>>>>>>>>>>>> etc.)
>>>>>>>>>>>>>>>> and so it can't be a member of a focus traversal chain.
>>>>>>>>>>>>>>>> Swing's
>>>>>>>>>>>>>>>> default traversal policy (LayoutFocusTraversalPolicy)
>>>>>>>>>>>>>>>> excludes
>>>>>>>>>>>>>>>> JMenuBar
>>>>>>>>>>>>>>>> from a focus traversal cycle.
>>>>>>>>>>>>>>>> ContainerOrderFocusTraversalPolicy is
>>>>>>>>>>>>>>>> not "aware" about JMenuBar and so it allows it.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So, either a default Swing policy should be used, or a
>>>>>>>>>>>>>>>> custom policy.
>>>>>>>>>>>>>>>> At worst, ContainerOrderFocusTraversalPolicy should be
>>>>>>>>>>>>>>>> overriden
>>>>>>>>>>>>>>>> to exclude JMenuBar from a cycle (override its
>>>>>>>>>>>>>>>> accept(Component)
>>>>>>>>>>>>>>>> method).
>>>>>>>>>
>>>>>>>>> I agree that backward compatibility should not be broken by
>>>>>>>>> the fix, so here's a patch from me for the worst case, could
>>>>>>>>> you please help to take a look?
>>>>>>>>>
>>>>>>>>> http://cr.openjdk.java.net/~luchsh/7198816/
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> Jonathan
>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> Anton.
>>>>>>>>>>>>>>> Hi Anton,
>>>>>>>>>>>>>>> Thanks for reviewing the suggestion, and for your
>>>>>>>>>>>>>>> insights into this
>>>>>>>>>>>>>>> scenario.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> > From the Javadoc, it seems that
>>>>>>>>>>>>>>> setFocusTraversalKeysEnabled() is mainly
>>>>>>>>>>>>>>> concerned with choosing whether focus traversal key
>>>>>>>>>>>>>>> presses (normally
>>>>>>>>>>>>>>> TAB and SHIFT-TAB) are processed "automatically" (when
>>>>>>>>>>>>>>> 'true') or are
>>>>>>>>>>>>>>> delivered to the Component as key events (for the
>>>>>>>>>>>>>>> component's code to
>>>>>>>>>>>>>>> process "manually").
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> (In the case of JMenuBar, it makes them come through as
>>>>>>>>>>>>>>> key events, but
>>>>>>>>>>>>>>> doesn't do anything special to process these events,
>>>>>>>>>>>>>>> which is why they
>>>>>>>>>>>>>>> get discarded.)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> That is right, though it doesn't directly relate to the
>>>>>>>>>>>>>> issue we're talking about =)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Your description above, though, seems to suggest that it
>>>>>>>>>>>>>>> is generally
>>>>>>>>>>>>>>> undesirable for the JMenuBar to be given the focus, as
>>>>>>>>>>>>>>> all the
>>>>>>>>>>>>>>> Swing-aware focus traversal policies make a point of not
>>>>>>>>>>>>>>> giving focus to
>>>>>>>>>>>>>>> JMenuBar items.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> If this is so, then wouldn't it make sense to call
>>>>>>>>>>>>>>> setFocusable(false)
>>>>>>>>>>>>>>> from its constructor (too), to ensure it doesn't get
>>>>>>>>>>>>>>> focus ?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Or, to put it another way, could you explain a little of
>>>>>>>>>>>>>>> the reasoning
>>>>>>>>>>>>>>> or scenario behind why it is desirable for JMenuBar
>>>>>>>>>>>>>>> items to be
>>>>>>>>>>>>>>> generally focusable, even though they aren't
>>>>>>>>>>>>>>> focus-traversable ?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I think such an explanation would be really helpful in
>>>>>>>>>>>>>>> clearing up my
>>>>>>>>>>>>>>> confusion on this point.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks, Neil
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Well, I suspect that the core of the problem is that
>>>>>>>>>>>>>> adding JMenuBar as JComponent to a swing
>>>>>>>>>>>>>> container doesn't make much sense. Though it is not
>>>>>>>>>>>>>> directly prohibited, doing so may cause
>>>>>>>>>>>>>> side effects like the one you've discovered. When
>>>>>>>>>>>>>> JMenuBar is set properly onto a JFrame its focus
>>>>>>>>>>>>>> is managed by JRootPane and its focusability just isn't
>>>>>>>>>>>>>> taken into account. That's may be the reason
>>>>>>>>>>>>>> it's not declared unfocusable. Honestly, I can't tell you
>>>>>>>>>>>>>> exactly.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> If you do it, you probably won't make any harm, but I
>>>>>>>>>>>>>> personally don't think this is a vital fix
>>>>>>>>>>>>>> (unless you have a good use case of the scenario you've
>>>>>>>>>>>>>> provided). Anyway, this is a swing question
>>>>>>>>>>>>>> (I'm, as an AWT dev member, leaving the decision to swing
>>>>>>>>>>>>>> guys).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>> Anton.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the swing-dev
mailing list