package org.javabuilders.swing.handler.type;
import java.awt.Component;
import java.awt.Container;
import java.util.List;
import javax.swing.LayoutFocusTraversalPolicy;
/**
* Allows overriding the focus on a container
* @author Jacek Furmankiewicz
*/
@SuppressWarnings("serial")
public class FocusPolicy extends LayoutFocusTraversalPolicy {
private final List<Component> components;
//constructor
public FocusPolicy(List<Component> components) {
this.components = components;
}
@Override
public Component getComponentAfter(Container aContainer, Component aComponent) {
int i = components.indexOf(aComponent) + 1;
if (i >= components.size()) {
i = 0;
}
return components.get(i);
}
@Override
public Component getComponentBefore(Container aContainer, Component aComponent) {
int i = components.indexOf(aComponent) + 1;
if (i < 0) {
i = components.size() - 1;
}
return components.get(i);
}
@Override
public Component getDefaultComponent(Container aContainer) {
return components.get(0);
}
@Override
public Component getFirstComponent(Container aContainer) {
return components.get(0);
}
@Override
public Component getLastComponent(Container aContainer) {
return components.get(components.size() - 1);
}
}