On 9/11/2014 2:56 AM, Vivi An wrote:
Hello Alexander,

Thanks for nice review, new patch is available as below:
webrev: http://cr.openjdk.java.net/~van/8033699/webrev.01/

 163         if ( keyListener != null ) {
 164             button.removeKeyListener( keyListener );

Could you formate the code in the brackets.

 355     private boolean isValidRadioButtonObj(Object obj){
 356         if ((obj != null) && (obj instanceof JRadioButton) &&

It is possible to use "return (obj != null) && ...".


 375         if (isValidRadioButtonObj(eventSrc) == false)

It is possible to use "if (!isValidRadioButtonObj(eventSrc))". The same is for line 466.


 379         btnGroupInfo.getButtonGroupInfo();
 380         if (btnGroupInfo.srcFound){
 ....

You can move this code to the ButtonGroupInfo class getNewSelectedButton(boolean next) method. It allows to use variable names (previousBtn) instead of btnGroupInfo.previousBtn.

 391             if (newSelectedBtn != null &&
 392                 (newSelectedBtn != (JRadioButton) eventSrc)){

It is not necessary to cast the eventSrc to JRadioButton here.

 401     private class SelectPreviousBtn extends AbstractAction
 402     {

Could you move the bracket to the class declaration line?

 505                 if (isValidRadioButtonObj(eventSrc))
 506                     e.consume();
 507                 jumpToNextComponent((JRadioButton)eventSrc, true);

Line 507 is not under the condition. It means that eventSrc can have different type from JRadioButton.


 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?

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




Reply via email to