<Swing Dev> [9] Review request for 8033699: Incorrect radio button behavior

Vivi An vivi.an at oracle.com
Wed Sep 17 05:17:00 UTC 2014


You are right. Fixed now.

http://cr.openjdk.java.net/~van/8033699/webrev.04/

Thank you

~ Vivi

On 9/16/2014 12:39 AM, Alexander Scherbatiy wrote:
>
>   I have missed one more case:
>  527         public void keyPressed(KeyEvent e) {
>  528             if (e.getKeyCode() == KeyEvent.VK_TAB) {
>                         // jumpToNextComponent(true)
>  538             }
>  539
>  540             if (e.getKeyCode() == KeyEvent.VK_TAB && 
> e.isShiftDown()) {
>                         //jumpToNextComponent(false)
>  550             }
>  551         }
>
>   It seems that if e.isShiftDown() is true then both 
> jumpToNextComponent(true) and jumpToNextComponent(false) methods can 
> be called.
>
>   Thanks,
>   Alexandr.
>
>
> On 9/16/2014 7:38 AM, Vivi An wrote:
>> Fixed. New Webrev: http://cr.openjdk.java.net/~van/8033699/webrev.03/
>>
>> Thanks Alex.
>>
>> Regards,
>>
>> ~ Vivi
>>
>> On 9/15/2014 2:59 AM, Alexander Scherbatiy wrote:
>>> On 9/12/2014 8:56 PM, Vivi An wrote:
>>>> Thanks Alexander.
>>>>
>>>> All items addressed except last one, please see comments inline.
>>>> New Webrev: http://cr.openjdk.java.net/~van/8033699/webrev.02/
>>>
>>>     163         if ( keyListener != null ) {
>>>
>>>     Could you remove spaces in the brackets? After code formatting 
>>> it should be "if (keyListener != null) {"
>>>
>>>>> 543             if (next && btnGroupInfo.lastBtn != null)
>>>>>  544                 KeyboardFocusManager.
>>>>>  545 
>>>>> getCurrentKeyboardFocusManager().focusNextComponent((JComponent)btnGroupInfo.lastBtn);
>>>>>  546             else if (btnGroupInfo.firstBtn != null)
>>>>>  547                 KeyboardFocusManager.
>>>>>  548 
>>>>> getCurrentKeyboardFocusManager().focusPreviousComponent((JComponent)btnGroupInfo.firstBtn);
>>>>>  549         }
>>>>>
>>>>> Should the first button be focused If next is true and last button 
>>>>> is null?
>>>> Don't think last button could be null when this function is 
>>>> triggered, last and first will always be set in case there is at 
>>>> least one valid (enabled and visible) radio button in the group.
>>>
>>>   It seems that lastBtn != null and firstBtn != null checks are not 
>>> necessary in this case.
>>>
>>>   Thanks,
>>>   Alexandr.
>>>
>>>>>
>>>>> Thanks,
>>>>> Alexandr.
>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> ~ Vivi
>>>>>>
>>>>>>
>>>>>> On 9/8/2014 5:43 AM, Alexander Scherbatiy wrote:
>>>>>>> On 9/4/2014 10:56 PM, Vivi An wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Please review fix for JDK-8033699.  Changes made:
>>>>>>>> 1) When tab or shift-tab key pressed,  focus moved to 
>>>>>>>> next/previous
>>>>>>>> component outside of the radio button group
>>>>>>>> 2) Using up/down or left/right arrow key to change selection 
>>>>>>>> inside
>>>>>>>> radio button group
>>>>>>>>
>>>>>>>> Bug:https://bugs.openjdk.java.net/browse/JDK-8033699
>>>>>>>> Webrev:http://cr.openjdk.java.net/~van/8033699/webrev.00/
>>>>>>>
>>>>>>>   56     private KeyListener keyListener = null;
>>>>>>>   57     private KeyHandler handler = null;
>>>>>>>
>>>>>>> It seems that these both fields point to the same object. Is it 
>>>>>>> possible to get rid of one of them?
>>>>>>>
>>>>>>>
>>>>>>>  152         if ( keyListener != null ) {
>>>>>>>  153             button.removeKeyListener( keyListener );
>>>>>>>  154         }
>>>>>>>
>>>>>>> Some UIs also set the listener to null in the 
>>>>>>> uninstallUI()/uninstallListeners() methods (like BasicComboBoxUI 
>>>>>>> or BasicColorChooserUI).
>>>>>>> Should the keyListener also be set to null to free the 
>>>>>>> KeyHandler object?
>>>>>>>
>>>>>>>  369         if (!(eventSrc instanceof JRadioButton &&
>>>>>>>  370             ((JRadioButton) eventSrc).isVisible() && 
>>>>>>> ((JRadioButton) eventSrc).isEnabled()))
>>>>>>>
>>>>>>> This check is used several times. It can be moved to a separate 
>>>>>>> method.
>>>>>>>
>>>>>>>  373         // Get the button model from the source.
>>>>>>>  374         ButtonModel model = ((AbstractButton) 
>>>>>>> eventSrc).getModel();
>>>>>>>  375         if (!(model instanceof DefaultButtonModel))
>>>>>>>  376             return;
>>>>>>>  377
>>>>>>>  378         // If the button model is DefaultButtonModel, and 
>>>>>>> use it, otherwise return.
>>>>>>>  379         DefaultButtonModel bm = (DefaultButtonModel) model;
>>>>>>>  380         if (bm == null)
>>>>>>>  381             return;
>>>>>>>
>>>>>>> The second check is not necessary because (model instanceof 
>>>>>>> DefaultButtonModel) returns false for null model.
>>>>>>>
>>>>>>>
>>>>>>>  404         AbstractButton curElement = null;
>>>>>>>
>>>>>>>   The curElement variable declaration could be moved into the 
>>>>>>> 'while' block.
>>>>>>>
>>>>>>>
>>>>>>>  408             if (curElement instanceof JRadioButton &&
>>>>>>>  409                     ((JRadioButton) curElement).isVisible() &&
>>>>>>>  410                     ((JRadioButton) curElement).isEnabled()){
>>>>>>>
>>>>>>>   It is possible to use 'continue' here to not put the other 
>>>>>>> code inside the 'if' block.
>>>>>>>
>>>>>>>
>>>>>>>  418                 else if (!srcFound){
>>>>>>>  422                 } else if (srcFound && nextBtn == null){
>>>>>>>
>>>>>>> It is not necessary to check the srcFound in the second 'if' 
>>>>>>> because it should already have true value.
>>>>>>>
>>>>>>>
>>>>>>>  444             if (newSelectedBtn != null){
>>>>>>>  445 newSelectedBtn.requestFocusInWindow();
>>>>>>>  446                 newSelectedBtn.setSelected(true);
>>>>>>>  447             }
>>>>>>>
>>>>>>>
>>>>>>> Is it possible here that newSelectedBtn == eventSrc?
>>>>>>>
>>>>>>>  522         private void jumpToNextComponent(JRadioButton btn, 
>>>>>>> boolean next){
>>>>>>>
>>>>>>> The code that retrieves elements from a button group is also 
>>>>>>> used in the selectRadioButton()
>>>>>>> and can be moved to a separate method.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Alexandr.
>>>>>>>
>>>>>>>>
>>>>>>>> JPRT build succeeded, JCK tests for JRadiobutton and JCheckBox 
>>>>>>>> all passed.
>>>>>>>>
>>>>>>>> Thank you
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> Vivi
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list