< prev index next >

src/java.desktop/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 26,35 **** --- 26,43 ---- import java.util.List; import java.util.ArrayList; import sun.util.logging.PlatformLogger; + import java.util.Enumeration; + import sun.awt.SunToolkit; + import javax.swing.AbstractButton; + import javax.swing.ButtonGroup; + import javax.swing.ButtonModel; + import javax.swing.JToggleButton; + + /** * A FocusTraversalPolicy that determines traversal order based on the order * of child Components in a Container. From a particular focus cycle root, the * policy makes a pre-order traversal of the Component hierarchy, and traverses * a Container's children according to the ordering of the array returned by
*** 583,592 **** --- 591,624 ---- protected boolean accept(Component aComponent) { if (!aComponent.canBeFocusOwner()) { return false; } + if (SunToolkit.isInstanceOf(aComponent, + "javax.swing.JToggleButton")) { + ButtonModel model = ((JToggleButton)aComponent).getModel(); + if (model != null) { + ButtonGroup group = model.getGroup(); + if (group != null) { + Enumeration<AbstractButton> elements = + group.getElements(); + int idx = 0; + while (group.getElements().hasMoreElements()) { + AbstractButton member = elements.nextElement(); + if (member instanceof JToggleButton && + member.isVisible() && member.isDisplayable() && + member.isEnabled() && member.isFocusable()) { + if (member == aComponent) { + return idx == 0; + } + idx++; + } + } + } + } + } + // Verify that the Component is recursively enabled. Disabling a // heavyweight Container disables its children, whereas disabling // a lightweight Container does not. if (!(aComponent instanceof Window)) { for (Container enableTest = aComponent.getParent();
< prev index next >