APIdia Launch Partner
Top Description Fields Constructors Methods
javax.swing

public Class SortingFocusTraversalPolicy

Additional top-level class in compilation unit: SwingContainerOrderFocusTraversalPolicy.

extends InternalFrameFocusTraversalPolicy
Class Inheritance
Known Direct Subclasses
javax.swing.LayoutFocusTraversalPolicy
Imports
java.awt.Component, .Container, .FocusTraversalPolicy, java.util.*, sun.util.logging.PlatformLogger

A FocusTraversalPolicy that determines traversal order by sorting the Components of a focus traversal cycle based on a given Comparator. Portions of the Component hierarchy that are not visible and displayable will not be included.

By default, SortingFocusTraversalPolicy implicitly transfers focus down- cycle. That is, during normal focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. This behavior can be disabled using the setImplicitDownCycleTraversal method.

By default, methods of this class with return a Component only if it is visible, displayable, enabled, and focusable. Subclasses can modify this behavior by overriding the accept method.

This policy takes into account focus traversal policy providers. When searching for first/last/next/previous Component, if a focus traversal policy provider is encountered, its focus traversal policy is used to perform the search operation.

Author
David Mendenhall
Since
1.4
See Also
java.util.Comparator

Field Summary

Modifier and TypeField and Description
private static final int
private transient List<Component>
private transient Container
cachedRoot

Used by getComponentAfter and getComponentBefore for efficiency.

private Comparator<? super Component>
private static final SwingContainerOrderFocusTraversalPolicy
private static final int
private boolean
private static final boolean
private PlatformLogger

Constructor Summary

AccessConstructor and Description
protected
SortingFocusTraversalPolicy()

Constructs a SortingFocusTraversalPolicy without a Comparator.

public
SortingFocusTraversalPolicy(Comparator<? super Component>
the Comparator to sort by
comparator
)

Constructs a SortingFocusTraversalPolicy with the specified Comparator.

Method Summary

Modifier and TypeMethod and Description
protected boolean

Returns:

true if aComponent is visible, displayable, enabled, and focusable; false otherwise
accept
(Component
the Component whose fitness as a focus owner is to be tested
aComponent
)

Determines whether a Component is an acceptable choice as the new focus owner.

private void
private void
protected Comparator<? super Component>

Returns:

the Comparator which will be used for sorting
getComparator
()

Returns the Comparator which will be used to sort the Components in a focus traversal cycle.

public Component

Returns:

the Component that should receive the focus after aComponent, or null if no suitable Component can be found
getComponentAfter
(Container
a focus cycle root of aComponent or a focus traversal policy provider
aContainer
,
Component
a (possibly indirect) child of aContainer, or aContainer itself
aComponent
)

Implements abstract java.awt.FocusTraversalPolicy.getComponentAfter.

Returns the Component that should receive the focus after aComponent.

public Component

Returns:

the Component that should receive the focus before aComponent, or null if no suitable Component can be found
getComponentBefore
(Container
a focus cycle root of aComponent or a focus traversal policy provider
aContainer
,
Component
a (possibly indirect) child of aContainer, or aContainer itself
aComponent
)

Implements abstract java.awt.FocusTraversalPolicy.getComponentBefore.

Returns the Component that should receive the focus before aComponent.

private Component
getComponentDownCycle(Component comp, int traversalDirection)

private int
public Component

Returns:

the default Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getDefaultComponent
(Container
a focus cycle root of aComponent or a focus traversal policy provider whose default Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getDefaultComponent.

Returns the default Component to focus.

public Component

Returns:

the first Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getFirstComponent
(Container
a focus cycle root of aComponent or a focus traversal policy provider whose first Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getFirstComponent.

Returns the first Component in the traversal cycle.

private List<Component>
public boolean

Returns:

whether this SortingFocusTraversalPolicy transfers focus down- cycle implicitly
getImplicitDownCycleTraversal
()

Returns whether this SortingFocusTraversalPolicy transfers focus down- cycle implicitly.

public Component

Returns:

the last Component in the traversal cycle of aContainer, or null if no suitable Component can be found
getLastComponent
(Container
a focus cycle root of aComponent or a focus traversal policy provider whose last Component is to be returned
aContainer
)

Implements abstract java.awt.FocusTraversalPolicy.getLastComponent.

Returns the last Component in the traversal cycle.

pack-priv Container
getTopmostProvider(Container focusCycleRoot, Component aComponent)

private void
private <T> void
mergeSort(T[] src, T[] dest, int low, int high, int off, Comparator<? super T> c)

protected void
setComparator(Comparator<? super Component>
the Comparator which will be used for sorting
comparator
)

Sets the Comparator which will be used to sort the Components in a focus traversal cycle.

public void
setImplicitDownCycleTraversal(boolean
whether this SortingFocusTraversalPolicy transfers focus down-cycle implicitly
implicitDownCycleTraversal
)

Sets whether this SortingFocusTraversalPolicy transfers focus down-cycle implicitly.

Inherited from javax.swing.InternalFrameFocusTraversalPolicy:
getInitialComponent

Field Detail

BACKWARD_TRAVERSALback to summary
private static final int BACKWARD_TRAVERSAL
cachedCycleback to summary
private transient List<Component> cachedCycle
cachedRootback to summary
private transient Container cachedRoot

Used by getComponentAfter and getComponentBefore for efficiency. In order to maintain compliance with the specification of FocusTraversalPolicy, if traversal wraps, we should invoke getFirstComponent or getLastComponent. These methods may be overridden in subclasses to behave in a non-generic way. However, in the generic case, these methods will simply return the first or last Components of the sorted list, respectively. Since getComponentAfter and getComponentBefore have already built the sorted list before determining that they need to invoke getFirstComponent or getLastComponent, the sorted list should be reused if possible.

comparatorback to summary
private Comparator<? super Component> comparator
fitnessTestPolicyback to summary
private static final SwingContainerOrderFocusTraversalPolicy fitnessTestPolicy
FORWARD_TRAVERSALback to summary
private static final int FORWARD_TRAVERSAL
implicitDownCycleTraversalback to summary
private boolean implicitDownCycleTraversal
legacySortingFTPEnabledback to summary
private static final boolean legacySortingFTPEnabled
logback to summary
private PlatformLogger log

Constructor Detail

SortingFocusTraversalPolicyback to summary
protected SortingFocusTraversalPolicy()

Constructs a SortingFocusTraversalPolicy without a Comparator. Subclasses must set the Comparator using setComparator before installing this FocusTraversalPolicy on a focus cycle root or KeyboardFocusManager.

SortingFocusTraversalPolicyback to summary
public SortingFocusTraversalPolicy(Comparator<? super Component> comparator)

Constructs a SortingFocusTraversalPolicy with the specified Comparator.

Parameters
comparator:Comparator<? super Component>

the Comparator to sort by

Method Detail

acceptback to summary
protected boolean accept(Component aComponent)

Determines whether a Component is an acceptable choice as the new focus owner. By default, this method will accept a Component if and only if it is visible, displayable, enabled, and focusable.

Parameters
aComponent:Component

the Component whose fitness as a focus owner is to be tested

Returns:boolean

true if aComponent is visible, displayable, enabled, and focusable; false otherwise

enumerateAndSortCycleback to summary
private void enumerateAndSortCycle(Container focusCycleRoot, List<Component> cycle)
enumerateCycleback to summary
private void enumerateCycle(Container container, List<Component> cycle)
Annotations
@SuppressWarnings:deprecation
getComparatorback to summary
protected Comparator<? super Component> getComparator()

Returns the Comparator which will be used to sort the Components in a focus traversal cycle.

Returns:Comparator<? super Component>

the Comparator which will be used for sorting

getComponentAfterback to summary
public Component getComponentAfter(Container aContainer, Component aComponent)

Implements abstract java.awt.FocusTraversalPolicy.getComponentAfter.

Returns the Component that should receive the focus after aComponent. aContainer must be a focus cycle root of aComponent or a focus traversal policy provider.

By default, SortingFocusTraversalPolicy implicitly transfers focus down- cycle. That is, during normal focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. This behavior can be disabled using the setImplicitDownCycleTraversal method.

If aContainer is focus traversal policy provider, the focus is always transferred down-cycle.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider

aComponent:Component

a (possibly indirect) child of aContainer, or aContainer itself

Returns:Component

the Component that should receive the focus after aComponent, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is not a focus cycle root of aComponent or a focus traversal policy provider, or if either aContainer or aComponent is null
getComponentBeforeback to summary
public Component getComponentBefore(Container aContainer, Component aComponent)

Implements abstract java.awt.FocusTraversalPolicy.getComponentBefore.

Returns the Component that should receive the focus before aComponent. aContainer must be a focus cycle root of aComponent or a focus traversal policy provider.

By default, SortingFocusTraversalPolicy implicitly transfers focus down- cycle. That is, during normal focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. This behavior can be disabled using the setImplicitDownCycleTraversal method.

If aContainer is focus traversal policy provider, the focus is always transferred down-cycle.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider

aComponent:Component

a (possibly indirect) child of aContainer, or aContainer itself

Returns:Component

the Component that should receive the focus before aComponent, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is not a focus cycle root of aComponent or a focus traversal policy provider, or if either aContainer or aComponent is null
getComponentDownCycleback to summary
private Component getComponentDownCycle(Component comp, int traversalDirection)
getComponentIndexback to summary
private int getComponentIndex(List<Component> cycle, Component aComponent)
getDefaultComponentback to summary
public Component getDefaultComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getDefaultComponent.

Returns the default Component to focus. This Component will be the first to receive focus when traversing down into a new focus traversal cycle rooted at aContainer. The default implementation of this method returns the same Component as getFirstComponent.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider whose default Component is to be returned

Returns:Component

the default Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
See Also
getFirstComponent
getFirstComponentback to summary
public Component getFirstComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getFirstComponent.

Returns the first Component in the traversal cycle. This method is used to determine the next Component to focus when traversal wraps in the forward direction.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider whose first Component is to be returned

Returns:Component

the first Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
getFocusTraversalCycleback to summary
private List<Component> getFocusTraversalCycle(Container aContainer)
getImplicitDownCycleTraversalback to summary
public boolean getImplicitDownCycleTraversal()

Returns whether this SortingFocusTraversalPolicy transfers focus down- cycle implicitly. If true, during normal focus traversal, the Component traversed after a focus cycle root will be the focus-cycle-root's default Component to focus. If false, the next Component in the focus traversal cycle rooted at the specified focus cycle root will be traversed instead.

Returns:boolean

whether this SortingFocusTraversalPolicy transfers focus down- cycle implicitly

See Also
setImplicitDownCycleTraversal, getFirstComponent
getLastComponentback to summary
public Component getLastComponent(Container aContainer)

Implements abstract java.awt.FocusTraversalPolicy.getLastComponent.

Returns the last Component in the traversal cycle. This method is used to determine the next Component to focus when traversal wraps in the reverse direction.

Parameters
aContainer:Container

a focus cycle root of aComponent or a focus traversal policy provider whose last Component is to be returned

Returns:Component

the last Component in the traversal cycle of aContainer, or null if no suitable Component can be found

Exceptions
IllegalArgumentException:
if aContainer is null
getTopmostProviderback to summary
pack-priv Container getTopmostProvider(Container focusCycleRoot, Component aComponent)
legacySortback to summary
private void legacySort(List<Component> l, Comparator<? super Component> c)
mergeSortback to summary
private <T> void mergeSort(T[] src, T[] dest, int low, int high, int off, Comparator<? super T> c)
setComparatorback to summary
protected void setComparator(Comparator<? super Component> comparator)

Sets the Comparator which will be used to sort the Components in a focus traversal cycle.

Parameters
comparator:Comparator<? super Component>

the Comparator which will be used for sorting

setImplicitDownCycleTraversalback to summary
public void setImplicitDownCycleTraversal(boolean implicitDownCycleTraversal)

Sets whether this SortingFocusTraversalPolicy transfers focus down-cycle implicitly. If true, during normal focus traversal, the Component traversed after a focus cycle root will be the focus- cycle-root's default Component to focus. If false, the next Component in the focus traversal cycle rooted at the specified focus cycle root will be traversed instead. The default value for this property is true.

Parameters
implicitDownCycleTraversal:boolean

whether this SortingFocusTraversalPolicy transfers focus down-cycle implicitly

See Also
getImplicitDownCycleTraversal, getFirstComponent